/*

 Copyright 2014 Mozilla Foundation

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
*/
console.time("Load Player Dependencies");
console.time("Load Shared Dependencies");
var Shumway, Shumway$$inline_20 = Shumway || (Shumway = {});
Shumway$$inline_20.version = "0.10.346";
Shumway$$inline_20.build = "84cafb5";
var jsGlobal = function() {
  return this || (0,eval)("this//# sourceURL=jsGlobal-getter");
}(), inBrowser = "undefined" !== typeof window && "document" in window && "plugins" in window.document, inFirefox = "undefined" !== typeof navigator && 0 <= navigator.userAgent.indexOf("Firefox");
jsGlobal.performance || (jsGlobal.performance = {});
jsGlobal.performance.now || (jsGlobal.performance.now = "undefined" !== typeof dateNow ? dateNow : Date.now);
function lazyInitializer(d, k) {
  Object.defineProperty(d, "callWriter", {get:function() {
    var a = k();
    Object.defineProperty(d, "callWriter", {value:a, configurable:!0, enumerable:!0});
    return a;
  }, configurable:!0, enumerable:!0});
}
var START_TIME = performance.now();
(function(d) {
  function k(f) {
    return (f | 0) === f;
  }
  function a(f) {
    return "object" === typeof f || "function" === typeof f;
  }
  function n(f) {
    return String(Number(f)) === f;
  }
  function w(f) {
    var b = 0;
    if ("number" === typeof f) {
      return b = f | 0, f === b && 0 <= b ? !0 : f >>> 0 === f;
    }
    if ("string" !== typeof f) {
      return !1;
    }
    var e = f.length;
    if (0 === e) {
      return !1;
    }
    if ("0" === f) {
      return !0;
    }
    if (e > d.UINT32_CHAR_BUFFER_LENGTH) {
      return !1;
    }
    var r = 0, b = f.charCodeAt(r++) - 48;
    if (1 > b || 9 < b) {
      return !1;
    }
    for (var p = 0, h = 0;r < e;) {
      h = f.charCodeAt(r++) - 48;
      if (0 > h || 9 < h) {
        return !1;
      }
      p = b;
      b = 10 * b + h;
    }
    return p < d.UINT32_MAX_DIV_10 || p === d.UINT32_MAX_DIV_10 && h <= d.UINT32_MAX_MOD_10 ? !0 : !1;
  }
  (function(f) {
    f[f._0 = 48] = "_0";
    f[f._1 = 49] = "_1";
    f[f._2 = 50] = "_2";
    f[f._3 = 51] = "_3";
    f[f._4 = 52] = "_4";
    f[f._5 = 53] = "_5";
    f[f._6 = 54] = "_6";
    f[f._7 = 55] = "_7";
    f[f._8 = 56] = "_8";
    f[f._9 = 57] = "_9";
  })(d.CharacterCodes || (d.CharacterCodes = {}));
  d.UINT32_CHAR_BUFFER_LENGTH = 10;
  d.UINT32_MAX = 4294967295;
  d.UINT32_MAX_DIV_10 = 429496729;
  d.UINT32_MAX_MOD_10 = 5;
  d.isString = function(f) {
    return "string" === typeof f;
  };
  d.isFunction = function(f) {
    return "function" === typeof f;
  };
  d.isNumber = function(f) {
    return "number" === typeof f;
  };
  d.isInteger = k;
  d.isArray = function(f) {
    return f instanceof Array;
  };
  d.isNumberOrString = function(f) {
    return "number" === typeof f || "string" === typeof f;
  };
  d.isObject = a;
  d.toNumber = function(f) {
    return +f;
  };
  d.isNumericString = n;
  d.isNumeric = function(f) {
    if ("number" === typeof f) {
      return !0;
    }
    if ("string" === typeof f) {
      var b = f.charCodeAt(0);
      return 65 <= b && 90 >= b || 97 <= b && 122 >= b || 36 === b || 95 === b ? !1 : w(f) || n(f);
    }
    return !1;
  };
  d.isIndex = w;
  d.isNullOrUndefined = function(f) {
    return void 0 == f;
  };
  var v;
  (function(f) {
    f.error = function(b) {
      console.error(b);
      throw Error(b);
    };
    f.assert = function(b, r) {
      void 0 === r && (r = "assertion failed");
      "" === b && (b = !0);
      if (!b) {
        if ("undefined" !== typeof console && "assert" in console) {
          throw console.assert(!1, r), Error(r);
        }
        f.error(r.toString());
      }
    };
    f.assertUnreachable = function(b) {
      var r = Error().stack.split("\n")[1];
      throw Error("Reached unreachable location " + r + b);
    };
    f.assertNotImplemented = function(b, r) {
      b || f.error("notImplemented: " + r);
    };
    f.warning = function(b, r, p) {
    };
    f.notUsed = function(b) {
    };
    f.notImplemented = function(b) {
    };
    f.dummyConstructor = function(b) {
    };
    f.abstractMethod = function(b) {
    };
    var b = {};
    f.somewhatImplemented = function(e) {
      b[e] || (b[e] = !0);
    };
    f.unexpected = function(b) {
      f.assert(!1, "Unexpected: " + b);
    };
    f.unexpectedCase = function(b) {
      f.assert(!1, "Unexpected Case: " + b);
    };
  })(v = d.Debug || (d.Debug = {}));
  d.getTicks = function() {
    return performance.now();
  };
  (function(f) {
    function b(b, p) {
      for (var e = 0, f = b.length;e < f;e++) {
        if (b[e] === p) {
          return e;
        }
      }
      b.push(p);
      return b.length - 1;
    }
    f.popManyInto = function(b, p, e) {
      for (var f = p - 1;0 <= f;f--) {
        e[f] = b.pop();
      }
      e.length = p;
    };
    f.popMany = function(b, p) {
      var e = b.length - p, f = b.slice(e, this.length);
      b.length = e;
      return f;
    };
    f.popManyIntoVoid = function(b, p) {
      b.length -= p;
    };
    f.pushMany = function(b, p) {
      for (var e = 0;e < p.length;e++) {
        b.push(p[e]);
      }
    };
    f.top = function(b) {
      return b.length && b[b.length - 1];
    };
    f.last = function(b) {
      return b.length && b[b.length - 1];
    };
    f.peek = function(b) {
      return b[b.length - 1];
    };
    f.indexOf = function(b, p) {
      for (var e = 0, f = b.length;e < f;e++) {
        if (b[e] === p) {
          return e;
        }
      }
      return -1;
    };
    f.equals = function(b, p) {
      if (b.length !== p.length) {
        return !1;
      }
      for (var e = 0;e < b.length;e++) {
        if (b[e] !== p[e]) {
          return !1;
        }
      }
      return !0;
    };
    f.pushUnique = b;
    f.unique = function(e) {
      for (var p = [], f = 0;f < e.length;f++) {
        b(p, e[f]);
      }
      return p;
    };
    f.copyFrom = function(b, p) {
      b.length = 0;
      f.pushMany(b, p);
    };
    f.ensureTypedArrayCapacity = function(b, p) {
      if (b.length < p) {
        var e = b;
        b = new b.constructor(d.IntegerUtilities.nearestPowerOfTwo(p));
        b.set(e, 0);
      }
      return b;
    };
    f.memCopy = function(b, p, e, f, h) {
      void 0 === e && (e = 0);
      void 0 === f && (f = 0);
      void 0 === h && (h = 0);
      0 < f || 0 < h && h < p.length ? (0 >= h && (h = p.length - f), b.set(p.subarray(f, f + h), e)) : b.set(p, e);
    };
    var e = function() {
      function b(p) {
        void 0 === p && (p = 16);
        this._f32 = this._i32 = this._u16 = this._u8 = null;
        this._offset = 0;
        this.ensureCapacity(p);
      }
      b.prototype.reset = function() {
        this._offset = 0;
      };
      Object.defineProperty(b.prototype, "offset", {get:function() {
        return this._offset;
      }, enumerable:!0, configurable:!0});
      b.prototype.getIndex = function(b) {
        return this._offset / b;
      };
      b.prototype.ensureAdditionalCapacity = function(b) {
        this.ensureCapacity(this._offset + b);
      };
      b.prototype.ensureCapacity = function(b) {
        if (!this._u8) {
          this._u8 = new Uint8Array(b);
        } else {
          if (this._u8.length > b) {
            return;
          }
        }
        var e = 2 * this._u8.length;
        e < b && (e = b);
        b = new Uint8Array(e);
        b.set(this._u8, 0);
        this._u8 = b;
        this._u16 = new Uint16Array(b.buffer);
        this._i32 = new Int32Array(b.buffer);
        this._f32 = new Float32Array(b.buffer);
      };
      b.prototype.writeInt = function(b) {
        this.ensureCapacity(this._offset + 4);
        this.writeIntUnsafe(b);
      };
      b.prototype.writeIntAt = function(b, e) {
        this.ensureCapacity(e + 4);
        this._i32[e >> 2] = b;
      };
      b.prototype.writeIntUnsafe = function(b) {
        this._i32[this._offset >> 2] = b;
        this._offset += 4;
      };
      b.prototype.writeFloat = function(b) {
        this.ensureCapacity(this._offset + 4);
        this.writeFloatUnsafe(b);
      };
      b.prototype.writeFloatUnsafe = function(b) {
        this._f32[this._offset >> 2] = b;
        this._offset += 4;
      };
      b.prototype.write4Floats = function(b, e, r, f) {
        this.ensureCapacity(this._offset + 16);
        this.write4FloatsUnsafe(b, e, r, f);
      };
      b.prototype.write4FloatsUnsafe = function(b, e, r, f) {
        var h = this._offset >> 2;
        this._f32[h + 0] = b;
        this._f32[h + 1] = e;
        this._f32[h + 2] = r;
        this._f32[h + 3] = f;
        this._offset += 16;
      };
      b.prototype.write6Floats = function(b, e, r, f, h, m) {
        this.ensureCapacity(this._offset + 24);
        this.write6FloatsUnsafe(b, e, r, f, h, m);
      };
      b.prototype.write6FloatsUnsafe = function(b, e, r, f, h, m) {
        var c = this._offset >> 2;
        this._f32[c + 0] = b;
        this._f32[c + 1] = e;
        this._f32[c + 2] = r;
        this._f32[c + 3] = f;
        this._f32[c + 4] = h;
        this._f32[c + 5] = m;
        this._offset += 24;
      };
      b.prototype.subF32View = function() {
        return this._f32.subarray(0, this._offset >> 2);
      };
      b.prototype.subI32View = function() {
        return this._i32.subarray(0, this._offset >> 2);
      };
      b.prototype.subU16View = function() {
        return this._u16.subarray(0, this._offset >> 1);
      };
      b.prototype.subU8View = function() {
        return this._u8.subarray(0, this._offset);
      };
      b.prototype.hashWords = function(b, e, r) {
        e = this._i32;
        for (var f = 0;f < r;f++) {
          b = (31 * b | 0) + e[f] | 0;
        }
        return b;
      };
      b.prototype.reserve = function(b) {
        b = b + 3 & -4;
        this.ensureCapacity(this._offset + b);
        this._offset += b;
      };
      return b;
    }();
    f.ArrayWriter = e;
  })(d.ArrayUtilities || (d.ArrayUtilities = {}));
  var u = function() {
    function f(b) {
      this._u8 = new Uint8Array(b);
      this._u16 = new Uint16Array(b);
      this._i32 = new Int32Array(b);
      this._f32 = new Float32Array(b);
      this._offset = 0;
    }
    Object.defineProperty(f.prototype, "offset", {get:function() {
      return this._offset;
    }, enumerable:!0, configurable:!0});
    f.prototype.isEmpty = function() {
      return this._offset === this._u8.length;
    };
    f.prototype.readInt = function() {
      var b = this._i32[this._offset >> 2];
      this._offset += 4;
      return b;
    };
    f.prototype.readFloat = function() {
      var b = this._f32[this._offset >> 2];
      this._offset += 4;
      return b;
    };
    return f;
  }();
  d.ArrayReader = u;
  (function(f) {
    function b(b, p) {
      return Object.prototype.hasOwnProperty.call(b, p);
    }
    function e(e, p) {
      for (var f in p) {
        b(p, f) && (e[f] = p[f]);
      }
    }
    f.boxValue = function(b) {
      return void 0 == b || a(b) ? b : Object(b);
    };
    f.toKeyValueArray = function(b) {
      var p = Object.prototype.hasOwnProperty, e = [], f;
      for (f in b) {
        p.call(b, f) && e.push([f, b[f]]);
      }
      return e;
    };
    f.isPrototypeWriteable = function(b) {
      return Object.getOwnPropertyDescriptor(b, "prototype").writable;
    };
    f.hasOwnProperty = b;
    f.propertyIsEnumerable = function(b, p) {
      return Object.prototype.propertyIsEnumerable.call(b, p);
    };
    f.getOwnPropertyDescriptor = function(b, p) {
      return Object.getOwnPropertyDescriptor(b, p);
    };
    f.hasOwnGetter = function(b, p) {
      var e = Object.getOwnPropertyDescriptor(b, p);
      return !(!e || !e.get);
    };
    f.getOwnGetter = function(b, p) {
      var e = Object.getOwnPropertyDescriptor(b, p);
      return e ? e.get : null;
    };
    f.hasOwnSetter = function(b, p) {
      var e = Object.getOwnPropertyDescriptor(b, p);
      return !(!e || !e.set);
    };
    f.createMap = function() {
      return Object.create(null);
    };
    f.createArrayMap = function() {
      return [];
    };
    f.defineReadOnlyProperty = function(b, p, e) {
      Object.defineProperty(b, p, {value:e, writable:!1, configurable:!0, enumerable:!1});
    };
    f.getOwnPropertyDescriptors = function(b) {
      for (var p = f.createMap(), e = Object.getOwnPropertyNames(b), h = 0;h < e.length;h++) {
        p[e[h]] = Object.getOwnPropertyDescriptor(b, e[h]);
      }
      return p;
    };
    f.cloneObject = function(b) {
      var p = Object.create(Object.getPrototypeOf(b));
      e(p, b);
      return p;
    };
    f.copyProperties = function(b, p) {
      for (var e in p) {
        b[e] = p[e];
      }
    };
    f.copyOwnProperties = e;
    f.copyOwnPropertyDescriptors = function(e, p, f) {
      void 0 === f && (f = !0);
      for (var h in p) {
        if (b(p, h)) {
          var m = Object.getOwnPropertyDescriptor(p, h);
          if (f || !b(e, h)) {
            try {
              Object.defineProperty(e, h, m);
            } catch (c) {
            }
          }
        }
      }
    };
    f.getLatestGetterOrSetterPropertyDescriptor = function(b, p) {
      for (var e = {};b;) {
        var f = Object.getOwnPropertyDescriptor(b, p);
        f && (e.get = e.get || f.get, e.set = e.set || f.set);
        if (e.get && e.set) {
          break;
        }
        b = Object.getPrototypeOf(b);
      }
      return e;
    };
    f.defineNonEnumerableGetterOrSetter = function(b, p, e, h) {
      var m = f.getLatestGetterOrSetterPropertyDescriptor(b, p);
      m.configurable = !0;
      m.enumerable = !1;
      h ? m.get = e : m.set = e;
      Object.defineProperty(b, p, m);
    };
    f.defineNonEnumerableGetter = function(b, p, e) {
      Object.defineProperty(b, p, {get:e, configurable:!0, enumerable:!1});
    };
    f.defineNonEnumerableSetter = function(b, p, e) {
      Object.defineProperty(b, p, {set:e, configurable:!0, enumerable:!1});
    };
    f.defineNonEnumerableProperty = function(b, p, e) {
      Object.defineProperty(b, p, {value:e, writable:!0, configurable:!0, enumerable:!1});
    };
    f.defineNonEnumerableForwardingProperty = function(b, p, e) {
      Object.defineProperty(b, p, {get:l.makeForwardingGetter(e), set:l.makeForwardingSetter(e), writable:!0, configurable:!0, enumerable:!1});
    };
    f.defineNewNonEnumerableProperty = function(b, p, e) {
      f.defineNonEnumerableProperty(b, p, e);
    };
    f.createPublicAliases = function(b, p) {
      for (var e = {value:null, writable:!0, configurable:!0, enumerable:!1}, f = 0;f < p.length;f++) {
        var h = p[f];
        e.value = b[h];
        Object.defineProperty(b, "$Bg" + h, e);
      }
    };
  })(d.ObjectUtilities || (d.ObjectUtilities = {}));
  var l;
  (function(f) {
    f.makeForwardingGetter = function(b) {
      return new Function('return this["' + b + '"]//# sourceURL=fwd-get-' + b + ".as");
    };
    f.makeForwardingSetter = function(b) {
      return new Function("value", 'this["' + b + '"] = value;//# sourceURL=fwd-set-' + b + ".as");
    };
    f.bindSafely = function(b, e) {
      function r() {
        return b.apply(e, arguments);
      }
      r.boundTo = e;
      return r;
    };
  })(l = d.FunctionUtilities || (d.FunctionUtilities = {}));
  (function(f) {
    function b(b) {
      return "string" === typeof b ? '"' + b + '"' : "number" === typeof b || "boolean" === typeof b ? String(b) : b instanceof Array ? "[] " + b.length : typeof b;
    }
    function e(b, e, r) {
      p[0] = b;
      p[1] = e;
      p[2] = r;
      return p.join("");
    }
    function r(b, p, e, r) {
      h[0] = b;
      h[1] = p;
      h[2] = e;
      h[3] = r;
      return h.join("");
    }
    f.repeatString = function(b, p) {
      for (var e = "", r = 0;r < p;r++) {
        e += b;
      }
      return e;
    };
    f.memorySizeToString = function(b) {
      b |= 0;
      return 1024 > b ? b + " B" : 1048576 > b ? (b / 1024).toFixed(2) + "KB" : (b / 1048576).toFixed(2) + "MB";
    };
    f.toSafeString = b;
    f.toSafeArrayString = function(p) {
      for (var e = [], r = 0;r < p.length;r++) {
        e.push(b(p[r]));
      }
      return e.join(", ");
    };
    f.utf8decode = function(b) {
      for (var p = new Uint8Array(4 * b.length), e = 0, r = 0, f = b.length;r < f;r++) {
        var h = b.charCodeAt(r);
        if (127 >= h) {
          p[e++] = h;
        } else {
          if (55296 <= h && 56319 >= h) {
            var m = b.charCodeAt(r + 1);
            56320 <= m && 57343 >= m && (h = ((h & 1023) << 10) + (m & 1023) + 65536, ++r);
          }
          0 !== (h & 4292870144) ? (p[e++] = 248 | h >>> 24 & 3, p[e++] = 128 | h >>> 18 & 63, p[e++] = 128 | h >>> 12 & 63, p[e++] = 128 | h >>> 6 & 63) : 0 !== (h & 4294901760) ? (p[e++] = 240 | h >>> 18 & 7, p[e++] = 128 | h >>> 12 & 63, p[e++] = 128 | h >>> 6 & 63) : 0 !== (h & 4294965248) ? (p[e++] = 224 | h >>> 12 & 15, p[e++] = 128 | h >>> 6 & 63) : p[e++] = 192 | h >>> 6 & 31;
          p[e++] = 128 | h & 63;
        }
      }
      return p.subarray(0, e);
    };
    f.utf8encode = function(b) {
      for (var p = 0, e = "";p < b.length;) {
        var r = b[p++] & 255;
        if (127 >= r) {
          e += String.fromCharCode(r);
        } else {
          var f = 192, h = 5;
          do {
            if ((r & (f >> 1 | 128)) === f) {
              break;
            }
            f = f >> 1 | 128;
            --h;
          } while (0 <= h);
          if (0 >= h) {
            e += String.fromCharCode(r);
          } else {
            for (var r = r & (1 << h) - 1, f = !1, m = 5;m >= h;--m) {
              var c = b[p++];
              if (128 != (c & 192)) {
                f = !0;
                break;
              }
              r = r << 6 | c & 63;
            }
            if (f) {
              for (h = p - (7 - m);h < p;++h) {
                e += String.fromCharCode(b[h] & 255);
              }
            } else {
              e = 65536 <= r ? e + String.fromCharCode(r - 65536 >> 10 & 1023 | 55296, r & 1023 | 56320) : e + String.fromCharCode(r);
            }
          }
        }
      }
      return e;
    };
    f.base64ArrayBuffer = function(b) {
      var p = "";
      b = new Uint8Array(b);
      for (var f = b.byteLength, h = f % 3, f = f - h, m, c, g, C, q = 0;q < f;q += 3) {
        C = b[q] << 16 | b[q + 1] << 8 | b[q + 2], m = (C & 16515072) >> 18, c = (C & 258048) >> 12, g = (C & 4032) >> 6, C &= 63, p += r("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[m], "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[c], "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[g], "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[C]);
      }
      1 == h ? (C = b[f], p += e("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(C & 252) >> 2], "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(C & 3) << 4], "==")) : 2 == h && (C = b[f] << 8 | b[f + 1], p += r("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(C & 64512) >> 10], "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(C & 1008) >> 4], "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(C & 15) << 
      2], "="));
      return p;
    };
    f.escapeString = function(b) {
      void 0 !== b && (b = b.replace(/[^\w$]/gi, "$"), /^\d/.test(b) && (b = "$" + b));
      return b;
    };
    f.fromCharCodeArray = function(b) {
      for (var p = "", e = 0;e < b.length;e += 16384) {
        var r = Math.min(b.length - e, 16384), p = p + String.fromCharCode.apply(null, b.subarray(e, e + r))
      }
      return p;
    };
    f.variableLengthEncodeInt32 = function(b) {
      for (var p = 32 - Math.clz32(b), e = Math.ceil(p / 6), p = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789$_"[e], e = e - 1;0 <= e;e--) {
        p += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789$_"[b >> 6 * e & 63];
      }
      return p;
    };
    f.toEncoding = function(b) {
      return "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789$_"[b];
    };
    f.fromEncoding = function(b) {
      if (65 <= b && 90 >= b) {
        return b - 65;
      }
      if (97 <= b && 122 >= b) {
        return b - 71;
      }
      if (48 <= b && 57 >= b) {
        return b + 4;
      }
      if (36 === b) {
        return 62;
      }
      if (95 === b) {
        return 63;
      }
    };
    f.variableLengthDecodeInt32 = function(b) {
      for (var p = f.fromEncoding(b.charCodeAt(0)), e = 0, r = 0;r < p;r++) {
        var h = 6 * (p - r - 1), e = e | f.fromEncoding(b.charCodeAt(1 + r)) << h
      }
      return e;
    };
    f.trimMiddle = function(b, p) {
      if (b.length <= p) {
        return b;
      }
      var e = p >> 1, r = p - e - 1;
      return b.substr(0, e) + "\u2026" + b.substr(b.length - r, r);
    };
    f.multiple = function(b, p) {
      for (var e = "", r = 0;r < p;r++) {
        e += b;
      }
      return e;
    };
    f.indexOfAny = function(b, p, e) {
      for (var r = b.length, f = 0;f < p.length;f++) {
        var h = b.indexOf(p[f], e);
        0 <= h && (r = Math.min(r, h));
      }
      return r === b.length ? -1 : r;
    };
    var p = Array(3), h = Array(4), m = Array(5), c = Array(6), g = Array(7), q = Array(8), l = Array(9);
    f.concat3 = e;
    f.concat4 = r;
    f.concat5 = function(b, p, e, r, f) {
      m[0] = b;
      m[1] = p;
      m[2] = e;
      m[3] = r;
      m[4] = f;
      return m.join("");
    };
    f.concat6 = function(b, p, e, r, f, h) {
      c[0] = b;
      c[1] = p;
      c[2] = e;
      c[3] = r;
      c[4] = f;
      c[5] = h;
      return c.join("");
    };
    f.concat7 = function(b, p, e, r, f, h, m) {
      g[0] = b;
      g[1] = p;
      g[2] = e;
      g[3] = r;
      g[4] = f;
      g[5] = h;
      g[6] = m;
      return g.join("");
    };
    f.concat8 = function(b, p, e, r, f, h, m, c) {
      q[0] = b;
      q[1] = p;
      q[2] = e;
      q[3] = r;
      q[4] = f;
      q[5] = h;
      q[6] = m;
      q[7] = c;
      return q.join("");
    };
    f.concat9 = function(b, p, e, r, f, h, m, c, g) {
      l[0] = b;
      l[1] = p;
      l[2] = e;
      l[3] = r;
      l[4] = f;
      l[5] = h;
      l[6] = m;
      l[7] = c;
      l[8] = g;
      return l.join("");
    };
  })(d.StringUtilities || (d.StringUtilities = {}));
  (function(f) {
    var b = new Uint8Array([7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]), e = new Int32Array([-680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426, -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162, 1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632, 
    643717713, -373897302, -701558691, 38016083, -660478335, -405537848, 568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784, 1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556, -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222, -722521979, 76029189, -640364487, -421815835, 530742520, -995338651, -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606, -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649, 
    -145523070, -1120210379, 718787259, -343485551]);
    f.hashBytesTo32BitsMD5 = function(r, p, f) {
      var h = 1732584193, m = -271733879, c = -1732584194, g = 271733878, q = f + 72 & -64, l = new Uint8Array(q), t;
      for (t = 0;t < f;++t) {
        l[t] = r[p++];
      }
      l[t++] = 128;
      for (r = q - 8;t < r;) {
        l[t++] = 0;
      }
      l[t++] = f << 3 & 255;
      l[t++] = f >> 5 & 255;
      l[t++] = f >> 13 & 255;
      l[t++] = f >> 21 & 255;
      l[t++] = f >>> 29 & 255;
      l[t++] = 0;
      l[t++] = 0;
      l[t++] = 0;
      r = new Int32Array(16);
      for (t = 0;t < q;) {
        for (f = 0;16 > f;++f, t += 4) {
          r[f] = l[t] | l[t + 1] << 8 | l[t + 2] << 16 | l[t + 3] << 24;
        }
        var a = h;
        p = m;
        var n = c, u = g, d, v;
        for (f = 0;64 > f;++f) {
          16 > f ? (d = p & n | ~p & u, v = f) : 32 > f ? (d = u & p | ~u & n, v = 5 * f + 1 & 15) : 48 > f ? (d = p ^ n ^ u, v = 3 * f + 5 & 15) : (d = n ^ (p | ~u), v = 7 * f & 15);
          var k = u, a = a + d + e[f] + r[v] | 0;
          d = b[f];
          u = n;
          n = p;
          p = p + (a << d | a >>> 32 - d) | 0;
          a = k;
        }
        h = h + a | 0;
        m = m + p | 0;
        c = c + n | 0;
        g = g + u | 0;
      }
      return h;
    };
    f.hashBytesTo32BitsAdler = function(b, p, e) {
      var f = 1, h = 0;
      for (e = p + e;p < e;++p) {
        f = (f + (b[p] & 255)) % 65521, h = (h + f) % 65521;
      }
      return h << 16 | f;
    };
  })(d.HashUtilities || (d.HashUtilities = {}));
  var c = function() {
    function f() {
    }
    f.seed = function(b) {
      f._state[0] = b;
      f._state[1] = b;
    };
    f.next = function() {
      var b = this._state, e = Math.imul(18273, b[0] & 65535) + (b[0] >>> 16) | 0;
      b[0] = e;
      var r = Math.imul(36969, b[1] & 65535) + (b[1] >>> 16) | 0;
      b[1] = r;
      b = (e << 16) + (r & 65535) | 0;
      return 2.3283064365386963E-10 * (0 > b ? b + 4294967296 : b);
    };
    f._state = new Uint32Array([57005, 48879]);
    return f;
  }();
  d.Random = c;
  Math.random = function() {
    return c.next();
  };
  (function() {
    function f() {
      this.id = "$weakmap" + b++;
    }
    if ("function" !== typeof jsGlobal.WeakMap) {
      var b = 0;
      f.prototype = {has:function(b) {
        return b.hasOwnProperty(this.id);
      }, get:function(b, r) {
        return b.hasOwnProperty(this.id) ? b[this.id] : r;
      }, set:function(b, r) {
        Object.defineProperty(b, this.id, {value:r, enumerable:!1, configurable:!0});
      }, delete:function(b) {
        delete b[this.id];
      }};
      jsGlobal.WeakMap = f;
    }
  })();
  u = function() {
    function f() {
      "undefined" !== typeof ShumwayCom && ShumwayCom.getWeakMapKeys ? this._map = new WeakMap : this._list = [];
    }
    f.prototype.clear = function() {
      this._map ? this._map.clear() : this._list.length = 0;
    };
    f.prototype.push = function(b) {
      this._map ? this._map.set(b, null) : this._list.push(b);
    };
    f.prototype.remove = function(b) {
      this._map ? this._map.delete(b) : this._list[this._list.indexOf(b)] = null;
    };
    f.prototype.forEach = function(b) {
      if (this._map) {
        ShumwayCom.getWeakMapKeys(this._map).forEach(function(p) {
          0 !== p._referenceCount && b(p);
        });
      } else {
        for (var e = this._list, r = 0, p = 0;p < e.length;p++) {
          var f = e[p];
          f && (0 === f._referenceCount ? (e[p] = null, r++) : b(f));
        }
        if (16 < r && r > e.length >> 2) {
          r = [];
          for (p = 0;p < e.length;p++) {
            (f = e[p]) && 0 < f._referenceCount && r.push(f);
          }
          this._list = r;
        }
      }
    };
    Object.defineProperty(f.prototype, "length", {get:function() {
      return this._map ? -1 : this._list.length;
    }, enumerable:!0, configurable:!0});
    return f;
  }();
  d.WeakList = u;
  var g;
  (function(f) {
    f.pow2 = function(b) {
      return b === (b | 0) ? 0 > b ? 1 / (1 << -b) : 1 << b : Math.pow(2, b);
    };
    f.clamp = function(b, e, r) {
      return Math.max(e, Math.min(r, b));
    };
    f.roundHalfEven = function(b) {
      if (.5 === Math.abs(b % 1)) {
        var e = Math.floor(b);
        return 0 === e % 2 ? e : Math.ceil(b);
      }
      return Math.round(b);
    };
    f.altTieBreakRound = function(b, e) {
      return .5 !== Math.abs(b % 1) || e ? Math.round(b) : b | 0;
    };
    f.epsilonEquals = function(b, e) {
      return 1E-7 > Math.abs(b - e);
    };
  })(g = d.NumberUtilities || (d.NumberUtilities = {}));
  (function(f) {
    f[f.MaxU16 = 65535] = "MaxU16";
    f[f.MaxI16 = 32767] = "MaxI16";
    f[f.MinI16 = -32768] = "MinI16";
  })(d.Numbers || (d.Numbers = {}));
  var q;
  (function(f) {
    function b(b) {
      return 256 * b << 16 >> 16;
    }
    var e = new ArrayBuffer(8);
    f.i8 = new Int8Array(e);
    f.u8 = new Uint8Array(e);
    f.i32 = new Int32Array(e);
    f.f32 = new Float32Array(e);
    f.f64 = new Float64Array(e);
    f.nativeLittleEndian = 1 === (new Int8Array((new Int32Array([1])).buffer))[0];
    f.floatToInt32 = function(b) {
      f.f32[0] = b;
      return f.i32[0];
    };
    f.int32ToFloat = function(b) {
      f.i32[0] = b;
      return f.f32[0];
    };
    f.swap16 = function(b) {
      return (b & 255) << 8 | b >> 8 & 255;
    };
    f.swap32 = function(b) {
      return (b & 255) << 24 | (b & 65280) << 8 | b >> 8 & 65280 | b >> 24 & 255;
    };
    f.toS8U8 = b;
    f.fromS8U8 = function(b) {
      return b / 256;
    };
    f.clampS8U8 = function(e) {
      return b(e) / 256;
    };
    f.toS16 = function(b) {
      return b << 16 >> 16;
    };
    f.bitCount = function(b) {
      b -= b >> 1 & 1431655765;
      b = (b & 858993459) + (b >> 2 & 858993459);
      return 16843009 * (b + (b >> 4) & 252645135) >> 24;
    };
    f.ones = function(b) {
      b -= b >> 1 & 1431655765;
      b = (b & 858993459) + (b >> 2 & 858993459);
      return 16843009 * (b + (b >> 4) & 252645135) >> 24;
    };
    f.trailingZeros = function(b) {
      return f.ones((b & -b) - 1);
    };
    f.getFlags = function(b, p) {
      var e = "";
      for (b = 0;b < p.length;b++) {
        b & 1 << b && (e += p[b] + " ");
      }
      return 0 === e.length ? "" : e.trim();
    };
    f.isPowerOfTwo = function(b) {
      return b && 0 === (b & b - 1);
    };
    f.roundToMultipleOfFour = function(b) {
      return b + 3 & -4;
    };
    f.nearestPowerOfTwo = function(b) {
      b--;
      b |= b >> 1;
      b |= b >> 2;
      b |= b >> 4;
      b |= b >> 8;
      b |= b >> 16;
      b++;
      return b;
    };
    f.roundToMultipleOfPowerOfTwo = function(b, p) {
      var e = (1 << p) - 1;
      return b + e & ~e;
    };
    Math.imul || (Math.imul = function(b, p) {
      var e = b & 65535, f = p & 65535;
      return e * f + ((b >>> 16 & 65535) * f + e * (p >>> 16 & 65535) << 16 >>> 0) | 0;
    });
    Math.clz32 || (Math.clz32 = function(b) {
      b |= b >> 1;
      b |= b >> 2;
      b |= b >> 4;
      b |= b >> 8;
      return 32 - f.ones(b | b >> 16);
    });
  })(q = d.IntegerUtilities || (d.IntegerUtilities = {}));
  (function(f) {
    function b(b, f, p, h, m, c) {
      return (p - b) * (c - f) - (h - f) * (m - b);
    }
    f.pointInPolygon = function(b, f, p) {
      for (var h = 0, m = p.length - 2, c = 0;c < m;c += 2) {
        var g = p[c + 0], q = p[c + 1], l = p[c + 2], t = p[c + 3];
        (q <= f && t > f || q > f && t <= f) && b < g + (f - q) / (t - q) * (l - g) && h++;
      }
      return 1 === (h & 1);
    };
    f.signedArea = b;
    f.counterClockwise = function(e, f, p, h, m, c) {
      return 0 < b(e, f, p, h, m, c);
    };
    f.clockwise = function(e, f, p, h, m, c) {
      return 0 > b(e, f, p, h, m, c);
    };
    f.pointInPolygonInt32 = function(b, f, p) {
      b |= 0;
      f |= 0;
      for (var h = 0, m = p.length - 2, c = 0;c < m;c += 2) {
        var g = p[c + 0], q = p[c + 1], l = p[c + 2], t = p[c + 3];
        (q <= f && t > f || q > f && t <= f) && b < g + (f - q) / (t - q) * (l - g) && h++;
      }
      return 1 === (h & 1);
    };
  })(d.GeometricUtilities || (d.GeometricUtilities = {}));
  (function(f) {
    f[f.Error = 1] = "Error";
    f[f.Warn = 2] = "Warn";
    f[f.Debug = 4] = "Debug";
    f[f.Log = 8] = "Log";
    f[f.Info = 16] = "Info";
    f[f.All = 31] = "All";
  })(d.LogLevel || (d.LogLevel = {}));
  u = function() {
    function f(b, e) {
      void 0 === b && (b = !1);
      this._tab = "  ";
      this._padding = "";
      this._suppressOutput = b;
      this._out = e || f._consoleOut;
      this._outNoNewline = e || f._consoleOutNoNewline;
    }
    f.prototype.write = function(b, e) {
      void 0 === b && (b = "");
      void 0 === e && (e = !1);
      this._suppressOutput || this._outNoNewline((e ? this._padding : "") + b);
    };
    f.prototype.writeLn = function(b) {
      void 0 === b && (b = "");
      this._suppressOutput || this._out(this._padding + b);
    };
    f.prototype.writeObject = function(b, e) {
      void 0 === b && (b = "");
      this._suppressOutput || this._out(this._padding + b, e);
    };
    f.prototype.writeTimeLn = function(b) {
      void 0 === b && (b = "");
      this._suppressOutput || this._out(this._padding + performance.now().toFixed(2) + " " + b);
    };
    f.prototype.writeComment = function(b) {
      b = b.split("\n");
      if (1 === b.length) {
        this.writeLn("// " + b[0]);
      } else {
        this.writeLn("/**");
        for (var e = 0;e < b.length;e++) {
          this.writeLn(" * " + b[e]);
        }
        this.writeLn(" */");
      }
    };
    f.prototype.writeLns = function(b) {
      b = b.split("\n");
      for (var e = 0;e < b.length;e++) {
        this.writeLn(b[e]);
      }
    };
    f.prototype.errorLn = function(b) {
      f.logLevel & 1 && this.boldRedLn(b);
    };
    f.prototype.warnLn = function(b) {
      f.logLevel & 2 && this.yellowLn(b);
    };
    f.prototype.debugLn = function(b) {
      f.logLevel & 4 && this.purpleLn(b);
    };
    f.prototype.logLn = function(b) {
      f.logLevel & 8 && this.writeLn(b);
    };
    f.prototype.infoLn = function(b) {
      f.logLevel & 16 && this.writeLn(b);
    };
    f.prototype.yellowLn = function(b) {
      this.colorLn(f.YELLOW, b);
    };
    f.prototype.greenLn = function(b) {
      this.colorLn(f.GREEN, b);
    };
    f.prototype.boldRedLn = function(b) {
      this.colorLn(f.BOLD_RED, b);
    };
    f.prototype.redLn = function(b) {
      this.colorLn(f.RED, b);
    };
    f.prototype.purpleLn = function(b) {
      this.colorLn(f.PURPLE, b);
    };
    f.prototype.colorLn = function(b, e) {
      this._suppressOutput || (inBrowser ? this._out(this._padding + e) : this._out(this._padding + b + e + f.ENDC));
    };
    f.prototype.redLns = function(b) {
      this.colorLns(f.RED, b);
    };
    f.prototype.colorLns = function(b, e) {
      for (var f = e.split("\n"), p = 0;p < f.length;p++) {
        this.colorLn(b, f[p]);
      }
    };
    f.prototype.enter = function(b) {
      this._suppressOutput || this._out(this._padding + b);
      this.indent();
    };
    f.prototype.leaveAndEnter = function(b) {
      this.leave(b);
      this.indent();
    };
    f.prototype.leave = function(b) {
      this.outdent();
      !this._suppressOutput && b && this._out(this._padding + b);
    };
    f.prototype.indent = function() {
      this._padding += this._tab;
    };
    f.prototype.outdent = function() {
      0 < this._padding.length && (this._padding = this._padding.substring(0, this._padding.length - this._tab.length));
    };
    f.prototype.writeArray = function(b, e, f) {
      void 0 === e && (e = !1);
      void 0 === f && (f = !1);
      e = e || !1;
      for (var p = 0, h = b.length;p < h;p++) {
        var m = "";
        e && (m = null === b[p] ? "null" : void 0 === b[p] ? "undefined" : b[p].constructor.name, m += " ");
        var c = f ? "" : ("" + p).padRight(" ", 4);
        this.writeLn(c + m + b[p]);
      }
    };
    f.PURPLE = "\u001b[94m";
    f.YELLOW = "\u001b[93m";
    f.GREEN = "\u001b[92m";
    f.RED = "\u001b[91m";
    f.BOLD_RED = "\u001b[1;91m";
    f.ENDC = "\u001b[0m";
    f.logLevel = 31;
    f._consoleOut = console.info.bind(console);
    f._consoleOutNoNewline = console.info.bind(console);
    return f;
  }();
  d.IndentingWriter = u;
  var t = function() {
    return function(f, b) {
      this.value = f;
      this.next = b;
    };
  }(), u = function() {
    function f(b) {
      this._compare = b;
      this._head = null;
      this._length = 0;
    }
    f.prototype.push = function(b) {
      this._length++;
      if (this._head) {
        var e = this._head, f = null;
        b = new t(b, null);
        for (var p = this._compare;e;) {
          if (0 < p(e.value, b.value)) {
            f ? (b.next = e, f.next = b) : (b.next = this._head, this._head = b);
            return;
          }
          f = e;
          e = e.next;
        }
        f.next = b;
      } else {
        this._head = new t(b, null);
      }
    };
    f.prototype.forEach = function(b) {
      for (var e = this._head, r = null;e;) {
        var p = b(e.value);
        if (p === f.RETURN) {
          break;
        } else {
          p === f.DELETE ? e = r ? r.next = e.next : this._head = this._head.next : (r = e, e = e.next);
        }
      }
    };
    f.prototype.isEmpty = function() {
      return !this._head;
    };
    f.prototype.pop = function() {
      if (this._head) {
        this._length--;
        var b = this._head;
        this._head = this._head.next;
        return b.value;
      }
    };
    f.prototype.contains = function(b) {
      for (var e = this._head;e;) {
        if (e.value === b) {
          return !0;
        }
        e = e.next;
      }
      return !1;
    };
    f.prototype.toString = function() {
      for (var b = "[", e = this._head;e;) {
        b += e.value.toString(), (e = e.next) && (b += ",");
      }
      return b + "]";
    };
    f.RETURN = 1;
    f.DELETE = 2;
    return f;
  }();
  d.SortedList = u;
  u = function() {
    function f(b, e) {
      void 0 === e && (e = 12);
      this.start = this.index = 0;
      this._size = 1 << e;
      this._mask = this._size - 1;
      this.array = new b(this._size);
    }
    f.prototype.get = function(b) {
      return this.array[b];
    };
    f.prototype.forEachInReverse = function(b) {
      if (!this.isEmpty()) {
        for (var e = 0 === this.index ? this._size - 1 : this.index - 1, f = this.start - 1 & this._mask;e !== f && !b(this.array[e], e);) {
          e = 0 === e ? this._size - 1 : e - 1;
        }
      }
    };
    f.prototype.write = function(b) {
      this.array[this.index] = b;
      this.index = this.index + 1 & this._mask;
      this.index === this.start && (this.start = this.start + 1 & this._mask);
    };
    f.prototype.isFull = function() {
      return (this.index + 1 & this._mask) === this.start;
    };
    f.prototype.isEmpty = function() {
      return this.index === this.start;
    };
    f.prototype.reset = function() {
      this.start = this.index = 0;
    };
    return f;
  }();
  d.CircularBuffer = u;
  (function(f) {
    function b(b) {
      return b + (f.BITS_PER_WORD - 1) >> f.ADDRESS_BITS_PER_WORD << f.ADDRESS_BITS_PER_WORD;
    }
    function e(b, p) {
      b = b || "1";
      p = p || "0";
      for (var e = "", f = 0;f < length;f++) {
        e += this.get(f) ? b : p;
      }
      return e;
    }
    function r(b) {
      for (var p = [], e = 0;e < length;e++) {
        this.get(e) && p.push(b ? b[e] : e);
      }
      return p.join(", ");
    }
    f.ADDRESS_BITS_PER_WORD = 5;
    f.BITS_PER_WORD = 1 << f.ADDRESS_BITS_PER_WORD;
    f.BIT_INDEX_MASK = f.BITS_PER_WORD - 1;
    var p = function() {
      function p(e) {
        this.size = b(e);
        this.dirty = this.count = 0;
        this.length = e;
        this.bits = new Uint32Array(this.size >> f.ADDRESS_BITS_PER_WORD);
      }
      p.prototype.recount = function() {
        if (this.dirty) {
          for (var b = this.bits, p = 0, e = 0, f = b.length;e < f;e++) {
            var r = b[e], r = r - (r >> 1 & 1431655765), r = (r & 858993459) + (r >> 2 & 858993459), p = p + (16843009 * (r + (r >> 4) & 252645135) >> 24)
          }
          this.count = p;
          this.dirty = 0;
        }
      };
      p.prototype.set = function(b) {
        var p = b >> f.ADDRESS_BITS_PER_WORD, e = this.bits[p];
        b = e | 1 << (b & f.BIT_INDEX_MASK);
        this.bits[p] = b;
        this.dirty |= e ^ b;
      };
      p.prototype.setAll = function() {
        for (var b = this.bits, p = 0, e = b.length;p < e;p++) {
          b[p] = 4294967295;
        }
        this.count = this.size;
        this.dirty = 0;
      };
      p.prototype.assign = function(b) {
        this.count = b.count;
        this.dirty = b.dirty;
        this.size = b.size;
        for (var p = 0, e = this.bits.length;p < e;p++) {
          this.bits[p] = b.bits[p];
        }
      };
      p.prototype.clear = function(b) {
        var p = b >> f.ADDRESS_BITS_PER_WORD, e = this.bits[p];
        b = e & ~(1 << (b & f.BIT_INDEX_MASK));
        this.bits[p] = b;
        this.dirty |= e ^ b;
      };
      p.prototype.get = function(b) {
        return 0 !== (this.bits[b >> f.ADDRESS_BITS_PER_WORD] & 1 << (b & f.BIT_INDEX_MASK));
      };
      p.prototype.clearAll = function() {
        for (var b = this.bits, p = 0, e = b.length;p < e;p++) {
          b[p] = 0;
        }
        this.dirty = this.count = 0;
      };
      p.prototype._union = function(b) {
        var p = this.dirty, e = this.bits;
        b = b.bits;
        for (var f = 0, r = e.length;f < r;f++) {
          var h = e[f], m = h | b[f];
          e[f] = m;
          p |= h ^ m;
        }
        this.dirty = p;
      };
      p.prototype.intersect = function(b) {
        var p = this.dirty, e = this.bits;
        b = b.bits;
        for (var f = 0, r = e.length;f < r;f++) {
          var h = e[f], m = h & b[f];
          e[f] = m;
          p |= h ^ m;
        }
        this.dirty = p;
      };
      p.prototype.subtract = function(b) {
        var p = this.dirty, e = this.bits;
        b = b.bits;
        for (var f = 0, r = e.length;f < r;f++) {
          var h = e[f], m = h & ~b[f];
          e[f] = m;
          p |= h ^ m;
        }
        this.dirty = p;
      };
      p.prototype.negate = function() {
        for (var b = this.dirty, p = this.bits, e = 0, f = p.length;e < f;e++) {
          var r = p[e], h = ~r;
          p[e] = h;
          b |= r ^ h;
        }
        this.dirty = b;
      };
      p.prototype.forEach = function(b) {
        for (var p = this.bits, e = 0, r = p.length;e < r;e++) {
          var h = p[e];
          if (h) {
            for (var m = 0;m < f.BITS_PER_WORD;m++) {
              h & 1 << m && b(e * f.BITS_PER_WORD + m);
            }
          }
        }
      };
      p.prototype.toArray = function() {
        for (var b = [], p = this.bits, e = 0, r = p.length;e < r;e++) {
          var h = p[e];
          if (h) {
            for (var m = 0;m < f.BITS_PER_WORD;m++) {
              h & 1 << m && b.push(e * f.BITS_PER_WORD + m);
            }
          }
        }
        return b;
      };
      p.prototype.equals = function(b) {
        if (this.size !== b.size) {
          return !1;
        }
        var p = this.bits;
        b = b.bits;
        for (var e = 0, f = p.length;e < f;e++) {
          if (p[e] !== b[e]) {
            return !1;
          }
        }
        return !0;
      };
      p.prototype.contains = function(b) {
        if (this.size !== b.size) {
          return !1;
        }
        var p = this.bits;
        b = b.bits;
        for (var e = 0, f = p.length;e < f;e++) {
          if ((p[e] | b[e]) !== p[e]) {
            return !1;
          }
        }
        return !0;
      };
      p.prototype.isEmpty = function() {
        this.recount();
        return 0 === this.count;
      };
      p.prototype.clone = function() {
        var b = new p(this.length);
        b._union(this);
        return b;
      };
      return p;
    }();
    f.Uint32ArrayBitSet = p;
    var h = function() {
      function p(e) {
        this.dirty = this.count = 0;
        this.size = b(e);
        this.bits = 0;
        this.singleWord = !0;
        this.length = e;
      }
      p.prototype.recount = function() {
        if (this.dirty) {
          var b = this.bits, b = b - (b >> 1 & 1431655765), b = (b & 858993459) + (b >> 2 & 858993459);
          this.count = 0 + (16843009 * (b + (b >> 4) & 252645135) >> 24);
          this.dirty = 0;
        }
      };
      p.prototype.set = function(b) {
        var p = this.bits;
        this.bits = b = p | 1 << (b & f.BIT_INDEX_MASK);
        this.dirty |= p ^ b;
      };
      p.prototype.setAll = function() {
        this.bits = 4294967295;
        this.count = this.size;
        this.dirty = 0;
      };
      p.prototype.assign = function(b) {
        this.count = b.count;
        this.dirty = b.dirty;
        this.size = b.size;
        this.bits = b.bits;
      };
      p.prototype.clear = function(b) {
        var p = this.bits;
        this.bits = b = p & ~(1 << (b & f.BIT_INDEX_MASK));
        this.dirty |= p ^ b;
      };
      p.prototype.get = function(b) {
        return 0 !== (this.bits & 1 << (b & f.BIT_INDEX_MASK));
      };
      p.prototype.clearAll = function() {
        this.dirty = this.count = this.bits = 0;
      };
      p.prototype._union = function(b) {
        var p = this.bits;
        this.bits = b = p | b.bits;
        this.dirty = p ^ b;
      };
      p.prototype.intersect = function(b) {
        var p = this.bits;
        this.bits = b = p & b.bits;
        this.dirty = p ^ b;
      };
      p.prototype.subtract = function(b) {
        var p = this.bits;
        this.bits = b = p & ~b.bits;
        this.dirty = p ^ b;
      };
      p.prototype.negate = function() {
        var b = this.bits, p = ~b;
        this.bits = p;
        this.dirty = b ^ p;
      };
      p.prototype.forEach = function(b) {
        var p = this.bits;
        if (p) {
          for (var e = 0;e < f.BITS_PER_WORD;e++) {
            p & 1 << e && b(e);
          }
        }
      };
      p.prototype.toArray = function() {
        var b = [], p = this.bits;
        if (p) {
          for (var e = 0;e < f.BITS_PER_WORD;e++) {
            p & 1 << e && b.push(e);
          }
        }
        return b;
      };
      p.prototype.equals = function(b) {
        return this.bits === b.bits;
      };
      p.prototype.contains = function(b) {
        var p = this.bits;
        return (p | b.bits) === p;
      };
      p.prototype.isEmpty = function() {
        this.recount();
        return 0 === this.count;
      };
      p.prototype.clone = function() {
        var b = new p(this.length);
        b._union(this);
        return b;
      };
      return p;
    }();
    f.Uint32BitSet = h;
    h.prototype.toString = r;
    h.prototype.toBitString = e;
    p.prototype.toString = r;
    p.prototype.toBitString = e;
    f.BitSetFunctor = function(e) {
      var r = 1 === b(e) >> f.ADDRESS_BITS_PER_WORD ? h : p;
      return function() {
        return new r(e);
      };
    };
  })(d.BitSets || (d.BitSets = {}));
  u = function() {
    function f() {
    }
    f.randomStyle = function() {
      f._randomStyleCache || (f._randomStyleCache = "#ff5e3a #ff9500 #ffdb4c #87fc70 #52edc7 #1ad6fd #c644fc #ef4db6 #4a4a4a #dbddde #ff3b30 #ff9500 #ffcc00 #4cd964 #34aadc #007aff #5856d6 #ff2d55 #8e8e93 #c7c7cc #5ad427 #c86edf #d1eefc #e0f8d8 #fb2b69 #f7f7f7 #1d77ef #d6cec3 #55efcb #ff4981 #ffd3e0 #f7f7f7 #ff1300 #1f1f21 #bdbec2 #ff3a2d".split(" "));
      return f._randomStyleCache[f._nextStyle++ % f._randomStyleCache.length];
    };
    f.gradientColor = function(b) {
      return f._gradient[f._gradient.length * g.clamp(b, 0, 1) | 0];
    };
    f.contrastStyle = function(b) {
      b = parseInt(b.substr(1), 16);
      return 128 <= (299 * (b >> 16) + 587 * (b >> 8 & 255) + 114 * (b & 255)) / 1E3 ? "#000000" : "#ffffff";
    };
    f.reset = function() {
      f._nextStyle = 0;
    };
    f.TabToolbar = "#252c33";
    f.Toolbars = "#343c45";
    f.HighlightBlue = "#1d4f73";
    f.LightText = "#f5f7fa";
    f.ForegroundText = "#b6babf";
    f.Black = "#000000";
    f.VeryDark = "#14171a";
    f.Dark = "#181d20";
    f.Light = "#a9bacb";
    f.Grey = "#8fa1b2";
    f.DarkGrey = "#5f7387";
    f.Blue = "#46afe3";
    f.Purple = "#6b7abb";
    f.Pink = "#df80ff";
    f.Red = "#eb5368";
    f.Orange = "#d96629";
    f.LightOrange = "#d99b28";
    f.Green = "#70bf53";
    f.BlueGrey = "#5e88b0";
    f._nextStyle = 0;
    f._gradient = "#FF0000 #FF1100 #FF2300 #FF3400 #FF4600 #FF5700 #FF6900 #FF7B00 #FF8C00 #FF9E00 #FFAF00 #FFC100 #FFD300 #FFE400 #FFF600 #F7FF00 #E5FF00 #D4FF00 #C2FF00 #B0FF00 #9FFF00 #8DFF00 #7CFF00 #6AFF00 #58FF00 #47FF00 #35FF00 #24FF00 #12FF00 #00FF00".split(" ");
    return f;
  }();
  d.ColorStyle = u;
  u = function() {
    function f(b, e, f, p) {
      this.xMin = b | 0;
      this.yMin = e | 0;
      this.xMax = f | 0;
      this.yMax = p | 0;
    }
    f.FromUntyped = function(b) {
      return new f(b.xMin, b.yMin, b.xMax, b.yMax);
    };
    f.FromRectangle = function(b) {
      return new f(20 * b.x | 0, 20 * b.y | 0, 20 * (b.x + b.width) | 0, 20 * (b.y + b.height) | 0);
    };
    f.prototype.setElements = function(b, e, f, p) {
      this.xMin = b;
      this.yMin = e;
      this.xMax = f;
      this.yMax = p;
    };
    f.prototype.copyFrom = function(b) {
      this.setElements(b.xMin, b.yMin, b.xMax, b.yMax);
    };
    f.prototype.contains = function(b, e) {
      return b < this.xMin !== b < this.xMax && e < this.yMin !== e < this.yMax;
    };
    f.prototype.unionInPlace = function(b) {
      b.isEmpty() || (this.extendByPoint(b.xMin, b.yMin), this.extendByPoint(b.xMax, b.yMax));
    };
    f.prototype.extendByPoint = function(b, e) {
      this.extendByX(b);
      this.extendByY(e);
    };
    f.prototype.extendByX = function(b) {
      134217728 === this.xMin ? this.xMin = this.xMax = b : (this.xMin = Math.min(this.xMin, b), this.xMax = Math.max(this.xMax, b));
    };
    f.prototype.extendByY = function(b) {
      134217728 === this.yMin ? this.yMin = this.yMax = b : (this.yMin = Math.min(this.yMin, b), this.yMax = Math.max(this.yMax, b));
    };
    f.prototype.intersects = function(b) {
      return this.contains(b.xMin, b.yMin) || this.contains(b.xMax, b.yMax);
    };
    f.prototype.isEmpty = function() {
      return this.xMax <= this.xMin || this.yMax <= this.yMin;
    };
    Object.defineProperty(f.prototype, "width", {get:function() {
      return this.xMax - this.xMin;
    }, set:function(b) {
      this.xMax = this.xMin + b;
    }, enumerable:!0, configurable:!0});
    Object.defineProperty(f.prototype, "height", {get:function() {
      return this.yMax - this.yMin;
    }, set:function(b) {
      this.yMax = this.yMin + b;
    }, enumerable:!0, configurable:!0});
    f.prototype.getBaseWidth = function(b) {
      return Math.abs(Math.cos(b)) * (this.xMax - this.xMin) + Math.abs(Math.sin(b)) * (this.yMax - this.yMin);
    };
    f.prototype.getBaseHeight = function(b) {
      return Math.abs(Math.sin(b)) * (this.xMax - this.xMin) + Math.abs(Math.cos(b)) * (this.yMax - this.yMin);
    };
    f.prototype.setEmpty = function() {
      this.xMin = this.yMin = this.xMax = this.yMax = 0;
    };
    f.prototype.setToSentinels = function() {
      this.xMin = this.yMin = this.xMax = this.yMax = 134217728;
    };
    f.prototype.clone = function() {
      return new f(this.xMin, this.yMin, this.xMax, this.yMax);
    };
    f.prototype.toString = function() {
      return "{ xMin: " + this.xMin + ", xMin: " + this.yMin + ", xMax: " + this.xMax + ", xMax: " + this.yMax + " }";
    };
    return f;
  }();
  d.Bounds = u;
  u = function() {
    function f(b, e, f, p) {
      v.assert(k(b));
      v.assert(k(e));
      v.assert(k(f));
      v.assert(k(p));
      this._xMin = b | 0;
      this._yMin = e | 0;
      this._xMax = f | 0;
      this._yMax = p | 0;
    }
    f.FromUntyped = function(b) {
      return new f(b.xMin, b.yMin, b.xMax, b.yMax);
    };
    f.FromRectangle = function(b) {
      return new f(20 * b.x | 0, 20 * b.y | 0, 20 * (b.x + b.width) | 0, 20 * (b.y + b.height) | 0);
    };
    f.prototype.setElements = function(b, e, f, p) {
      this.xMin = b;
      this.yMin = e;
      this.xMax = f;
      this.yMax = p;
    };
    f.prototype.copyFrom = function(b) {
      this.setElements(b.xMin, b.yMin, b.xMax, b.yMax);
    };
    f.prototype.contains = function(b, e) {
      return b < this.xMin !== b < this.xMax && e < this.yMin !== e < this.yMax;
    };
    f.prototype.unionInPlace = function(b) {
      b.isEmpty() || (this.extendByPoint(b.xMin, b.yMin), this.extendByPoint(b.xMax, b.yMax));
    };
    f.prototype.extendByPoint = function(b, e) {
      this.extendByX(b);
      this.extendByY(e);
    };
    f.prototype.extendByX = function(b) {
      134217728 === this.xMin ? this.xMin = this.xMax = b : (this.xMin = Math.min(this.xMin, b), this.xMax = Math.max(this.xMax, b));
    };
    f.prototype.extendByY = function(b) {
      134217728 === this.yMin ? this.yMin = this.yMax = b : (this.yMin = Math.min(this.yMin, b), this.yMax = Math.max(this.yMax, b));
    };
    f.prototype.intersects = function(b) {
      return this.contains(b._xMin, b._yMin) || this.contains(b._xMax, b._yMax);
    };
    f.prototype.isEmpty = function() {
      return this._xMax <= this._xMin || this._yMax <= this._yMin;
    };
    Object.defineProperty(f.prototype, "xMin", {get:function() {
      return this._xMin;
    }, set:function(b) {
      v.assert(k(b));
      this._xMin = b;
    }, enumerable:!0, configurable:!0});
    Object.defineProperty(f.prototype, "yMin", {get:function() {
      return this._yMin;
    }, set:function(b) {
      v.assert(k(b));
      this._yMin = b | 0;
    }, enumerable:!0, configurable:!0});
    Object.defineProperty(f.prototype, "xMax", {get:function() {
      return this._xMax;
    }, set:function(b) {
      v.assert(k(b));
      this._xMax = b | 0;
    }, enumerable:!0, configurable:!0});
    Object.defineProperty(f.prototype, "width", {get:function() {
      return this._xMax - this._xMin;
    }, enumerable:!0, configurable:!0});
    Object.defineProperty(f.prototype, "yMax", {get:function() {
      return this._yMax;
    }, set:function(b) {
      v.assert(k(b));
      this._yMax = b | 0;
    }, enumerable:!0, configurable:!0});
    Object.defineProperty(f.prototype, "height", {get:function() {
      return this._yMax - this._yMin;
    }, enumerable:!0, configurable:!0});
    f.prototype.getBaseWidth = function(b) {
      return Math.abs(Math.cos(b)) * (this._xMax - this._xMin) + Math.abs(Math.sin(b)) * (this._yMax - this._yMin);
    };
    f.prototype.getBaseHeight = function(b) {
      return Math.abs(Math.sin(b)) * (this._xMax - this._xMin) + Math.abs(Math.cos(b)) * (this._yMax - this._yMin);
    };
    f.prototype.setEmpty = function() {
      this._xMin = this._yMin = this._xMax = this._yMax = 0;
    };
    f.prototype.clone = function() {
      return new f(this.xMin, this.yMin, this.xMax, this.yMax);
    };
    f.prototype.toString = function() {
      return "{ xMin: " + this._xMin + ", xMin: " + this._yMin + ", xMax: " + this._xMax + ", yMax: " + this._yMax + " }";
    };
    f.prototype.assertValid = function() {
    };
    return f;
  }();
  d.DebugBounds = u;
  u = function() {
    function f(b, e, f, p) {
      this.r = b;
      this.g = e;
      this.b = f;
      this.a = p;
    }
    f.FromARGB = function(b) {
      return new f((b >> 16 & 255) / 255, (b >> 8 & 255) / 255, (b >> 0 & 255) / 255, (b >> 24 & 255) / 255);
    };
    f.FromRGBA = function(b) {
      return f.FromARGB(m.RGBAToARGB(b));
    };
    f.prototype.toRGBA = function() {
      return 255 * this.r << 24 | 255 * this.g << 16 | 255 * this.b << 8 | 255 * this.a;
    };
    f.prototype.toCSSStyle = function() {
      return m.rgbaToCSSStyle(this.toRGBA());
    };
    f.prototype.set = function(b) {
      this.r = b.r;
      this.g = b.g;
      this.b = b.b;
      this.a = b.a;
    };
    f.randomColor = function(b) {
      void 0 === b && (b = 1);
      return new f(Math.random(), Math.random(), Math.random(), b);
    };
    f.parseColor = function(b) {
      f.colorCache || (f.colorCache = Object.create(null));
      if (f.colorCache[b]) {
        return f.colorCache[b];
      }
      var e = document.createElement("span");
      document.body.appendChild(e);
      e.style.backgroundColor = b;
      var r = getComputedStyle(e).backgroundColor;
      document.body.removeChild(e);
      (e = /^rgb\((\d+), (\d+), (\d+)\)$/.exec(r)) || (e = /^rgba\((\d+), (\d+), (\d+), ([\d.]+)\)$/.exec(r));
      r = new f(0, 0, 0, 0);
      r.r = parseFloat(e[1]) / 255;
      r.g = parseFloat(e[2]) / 255;
      r.b = parseFloat(e[3]) / 255;
      r.a = e[4] ? parseFloat(e[4]) / 255 : 1;
      return f.colorCache[b] = r;
    };
    f.Red = new f(1, 0, 0, 1);
    f.Green = new f(0, 1, 0, 1);
    f.Blue = new f(0, 0, 1, 1);
    f.None = new f(0, 0, 0, 0);
    f.White = new f(1, 1, 1, 1);
    f.Black = new f(0, 0, 0, 1);
    f.colorCache = {};
    return f;
  }();
  d.Color = u;
  var m;
  (function(f) {
    function b(b) {
      var e, f, r = b >> 24 & 255;
      f = (Math.imul(b >> 16 & 255, r) + 127) / 255 | 0;
      e = (Math.imul(b >> 8 & 255, r) + 127) / 255 | 0;
      b = (Math.imul(b >> 0 & 255, r) + 127) / 255 | 0;
      return r << 24 | f << 16 | e << 8 | b;
    }
    f.RGBAToARGB = function(b) {
      return b >> 8 & 16777215 | (b & 255) << 24;
    };
    f.ARGBToRGBA = function(b) {
      return b << 8 | b >> 24 & 255;
    };
    f.rgbaToCSSStyle = function(b) {
      return d.StringUtilities.concat9("rgba(", b >> 24 & 255, ",", b >> 16 & 255, ",", b >> 8 & 255, ",", (b & 255) / 255, ")");
    };
    f.cssStyleToRGBA = function(b) {
      if ("#" === b[0]) {
        if (7 === b.length) {
          return parseInt(b.substring(1), 16) << 8 | 255;
        }
      } else {
        if ("r" === b[0]) {
          return b = b.substring(5, b.length - 1).split(","), (parseInt(b[0]) & 255) << 24 | (parseInt(b[1]) & 255) << 16 | (parseInt(b[2]) & 255) << 8 | 255 * parseFloat(b[3]) & 255;
        }
      }
      return 4278190335;
    };
    f.hexToRGB = function(b) {
      return parseInt(b.slice(1), 16);
    };
    f.rgbToHex = function(b) {
      return "#" + ("000000" + (b >>> 0).toString(16)).slice(-6);
    };
    f.isValidHexColor = function(b) {
      return /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(b);
    };
    f.clampByte = function(b) {
      return Math.max(0, Math.min(255, b));
    };
    f.unpremultiplyARGB = function(b) {
      var e, f, r = b >> 24 & 255;
      f = Math.imul(255, b >> 16 & 255) / r & 255;
      e = Math.imul(255, b >> 8 & 255) / r & 255;
      b = Math.imul(255, b >> 0 & 255) / r & 255;
      return r << 24 | f << 16 | e << 8 | b;
    };
    f.premultiplyARGB = b;
    var e;
    f.ensureUnpremultiplyTable = function() {
      if (!e) {
        e = new Uint8Array(65536);
        for (var b = 0;256 > b;b++) {
          for (var f = 0;256 > f;f++) {
            e[(f << 8) + b] = Math.imul(255, b) / f;
          }
        }
      }
    };
    f.tableLookupUnpremultiplyARGB = function(b) {
      b |= 0;
      var f = b >> 24 & 255;
      if (0 === f) {
        return 0;
      }
      if (255 === f) {
        return b;
      }
      var r, h, m = f << 8, c = e;
      h = c[m + (b >> 16 & 255)];
      r = c[m + (b >> 8 & 255)];
      b = c[m + (b >> 0 & 255)];
      return f << 24 | h << 16 | r << 8 | b;
    };
    f.blendPremultipliedBGRA = function(b, e) {
      var f, r;
      r = 256 - (e & 255);
      f = Math.imul(b & 16711935, r) >> 8;
      r = Math.imul(b >> 8 & 16711935, r) >> 8;
      return ((e >> 8 & 16711935) + r & 16711935) << 8 | (e & 16711935) + f & 16711935;
    };
    var r = q.swap32;
    f.convertImage = function(p, f, m, c) {
      var g = m.length;
      if (p === f) {
        if (m !== c) {
          for (p = 0;p < g;p++) {
            c[p] = m[p];
          }
        }
      } else {
        if (1 === p && 3 === f) {
          for (d.ColorUtilities.ensureUnpremultiplyTable(), p = 0;p < g;p++) {
            var q = m[p];
            f = q & 255;
            if (0 === f) {
              c[p] = 0;
            } else {
              if (255 === f) {
                c[p] = 4278190080 | q >> 8 & 16777215;
              } else {
                var l = q >> 24 & 255, t = q >> 16 & 255, q = q >> 8 & 255, a = f << 8, n = e, q = n[a + q], t = n[a + t], l = n[a + l];
                c[p] = f << 24 | l << 16 | t << 8 | q;
              }
            }
          }
        } else {
          if (2 === p && 3 === f) {
            for (p = 0;p < g;p++) {
              c[p] = r(m[p]);
            }
          } else {
            if (3 === p && 1 === f) {
              for (p = 0;p < g;p++) {
                f = m[p], c[p] = r(b(f & 4278255360 | f >> 16 & 255 | (f & 255) << 16));
              }
            } else {
              for (v.somewhatImplemented("Image Format Conversion: " + h[p] + " -> " + h[f]), p = 0;p < g;p++) {
                c[p] = m[p];
              }
            }
          }
        }
      }
    };
  })(m = d.ColorUtilities || (d.ColorUtilities = {}));
  u = function() {
    function f(b) {
      void 0 === b && (b = 32);
      this._list = [];
      this._maxSize = b;
    }
    f.prototype.acquire = function(b) {
      if (f._enabled) {
        for (var e = this._list, r = 0;r < e.length;r++) {
          var p = e[r];
          if (p.byteLength >= b) {
            return e.splice(r, 1), p;
          }
        }
      }
      return new ArrayBuffer(b);
    };
    f.prototype.release = function(b) {
      if (f._enabled) {
        var e = this._list;
        e.length === this._maxSize && e.shift();
        e.push(b);
      }
    };
    f.prototype.ensureUint8ArrayLength = function(b, e) {
      if (b.length >= e) {
        return b;
      }
      var f = Math.max(b.length + e, (3 * b.length >> 1) + 1), f = new Uint8Array(this.acquire(f), 0, f);
      f.set(b);
      this.release(b.buffer);
      return f;
    };
    f.prototype.ensureFloat64ArrayLength = function(b, e) {
      if (b.length >= e) {
        return b;
      }
      var f = Math.max(b.length + e, (3 * b.length >> 1) + 1), f = new Float64Array(this.acquire(f * Float64Array.BYTES_PER_ELEMENT), 0, f);
      f.set(b);
      this.release(b.buffer);
      return f;
    };
    f._enabled = !0;
    return f;
  }();
  d.ArrayBufferPool = u;
  (function(f) {
    (function(b) {
      b[b.EXTERNAL_INTERFACE_FEATURE = 1] = "EXTERNAL_INTERFACE_FEATURE";
      b[b.CLIPBOARD_FEATURE = 2] = "CLIPBOARD_FEATURE";
      b[b.SHAREDOBJECT_FEATURE = 3] = "SHAREDOBJECT_FEATURE";
      b[b.VIDEO_FEATURE = 4] = "VIDEO_FEATURE";
      b[b.SOUND_FEATURE = 5] = "SOUND_FEATURE";
      b[b.NETCONNECTION_FEATURE = 6] = "NETCONNECTION_FEATURE";
    })(f.Feature || (f.Feature = {}));
    (function(b) {
      b[b.AVM1_ERROR = 1] = "AVM1_ERROR";
      b[b.AVM2_ERROR = 2] = "AVM2_ERROR";
    })(f.ErrorTypes || (f.ErrorTypes = {}));
    f.instance;
  })(d.Telemetry || (d.Telemetry = {}));
  (function(f) {
    f.instance;
  })(d.FileLoadingService || (d.FileLoadingService = {}));
  (function(f) {
    f[f.BuiltinAbc = 0] = "BuiltinAbc";
    f[f.PlayerglobalAbcs = 1] = "PlayerglobalAbcs";
    f[f.PlayerglobalManifest = 2] = "PlayerglobalManifest";
    f[f.ShellAbc = 3] = "ShellAbc";
  })(d.SystemResourceId || (d.SystemResourceId = {}));
  (function(f) {
    f.instance;
  })(d.SystemResourcesLoadingService || (d.SystemResourcesLoadingService = {}));
  d.registerCSSFont = function(f, b, e) {
    if (inBrowser) {
      var r = document.head;
      r.insertBefore(document.createElement("style"), r.firstChild);
      r = document.styleSheets[0];
      b = "@font-face{font-family:swffont" + f + ";src:url(data:font/opentype;base64," + d.StringUtilities.base64ArrayBuffer(b) + ")}";
      r.insertRule(b, r.cssRules.length);
      e && (e = document.createElement("div"), e.style.fontFamily = "swffont" + f, e.innerHTML = "hello", document.body.appendChild(e), document.body.removeChild(e));
    }
  };
  (function(f) {
    f.instance = {enabled:!1, initJS:function(b) {
    }, registerCallback:function(b) {
    }, unregisterCallback:function(b) {
    }, eval:function(b) {
    }, call:function(b) {
    }, getId:function() {
      return null;
    }};
  })(d.ExternalInterfaceService || (d.ExternalInterfaceService = {}));
  (function(f) {
    f.instance = {setClipboard:function(b) {
      v.notImplemented("setClipboard");
    }};
  })(d.ClipboardService || (d.ClipboardService = {}));
  u = function() {
    function f() {
      this._queues = {};
    }
    f.prototype.register = function(b, e) {
      v.assert(b);
      v.assert(e);
      var f = this._queues[b];
      if (f) {
        if (-1 < f.indexOf(e)) {
          return;
        }
      } else {
        f = this._queues[b] = [];
      }
      f.push(e);
    };
    f.prototype.unregister = function(b, e) {
      v.assert(b);
      v.assert(e);
      var f = this._queues[b];
      if (f) {
        var p = f.indexOf(e);
        -1 !== p && f.splice(p, 1);
        0 === f.length && (this._queues[b] = null);
      }
    };
    f.prototype.notify = function(b, e) {
      var f = this._queues[b];
      if (f) {
        f = f.slice();
        e = Array.prototype.slice.call(arguments, 0);
        for (var p = 0;p < f.length;p++) {
          f[p].apply(null, e);
        }
      }
    };
    f.prototype.notify1 = function(b, e) {
      var f = this._queues[b];
      if (f) {
        for (var f = f.slice(), p = 0;p < f.length;p++) {
          (0,f[p])(b, e);
        }
      }
    };
    return f;
  }();
  d.Callback = u;
  (function(f) {
    f[f.None = 0] = "None";
    f[f.PremultipliedAlphaARGB = 1] = "PremultipliedAlphaARGB";
    f[f.StraightAlphaARGB = 2] = "StraightAlphaARGB";
    f[f.StraightAlphaRGBA = 3] = "StraightAlphaRGBA";
    f[f.JPEG = 4] = "JPEG";
    f[f.PNG = 5] = "PNG";
    f[f.GIF = 6] = "GIF";
  })(d.ImageType || (d.ImageType = {}));
  var h = d.ImageType;
  d.getMIMETypeForImageType = function(f) {
    switch(f) {
      case 4:
        return "image/jpeg";
      case 5:
        return "image/png";
      case 6:
        return "image/gif";
      default:
        return "text/plain";
    }
  };
  (function(f) {
    f.toCSSCursor = function(b) {
      switch(b) {
        case 0:
          return "auto";
        case 2:
          return "pointer";
        case 3:
          return "grab";
        case 4:
          return "text";
        default:
          return "default";
      }
    };
  })(d.UI || (d.UI = {}));
  u = function() {
    function f() {
      this.promise = new Promise(function(b, e) {
        this.resolve = b;
        this.reject = e;
      }.bind(this));
    }
    f.prototype.then = function(b, e) {
      return this.promise.then(b, e);
    };
    return f;
  }();
  d.PromiseWrapper = u;
})(Shumway || (Shumway = {}));
(function() {
  function d(b) {
    if ("function" !== typeof b) {
      throw new TypeError("Invalid deferred constructor");
    }
    var p = t();
    b = new b(p);
    var e = p.resolve;
    if ("function" !== typeof e) {
      throw new TypeError("Invalid resolve construction function");
    }
    p = p.reject;
    if ("function" !== typeof p) {
      throw new TypeError("Invalid reject construction function");
    }
    return {promise:b, resolve:e, reject:p};
  }
  function k(b, p) {
    if ("object" !== typeof b || null === b) {
      return !1;
    }
    try {
      var e = b.then;
      if ("function" !== typeof e) {
        return !1;
      }
      e.call(b, p.resolve, p.reject);
    } catch (f) {
      e = p.reject, e(f);
    }
    return !0;
  }
  function a(b) {
    return "object" === typeof b && null !== b && "undefined" !== typeof b.promiseStatus;
  }
  function n(b, p) {
    if ("unresolved" === b.promiseStatus) {
      var e = b.rejectReactions;
      b.result = p;
      b.resolveReactions = void 0;
      b.rejectReactions = void 0;
      b.promiseStatus = "has-rejection";
      w(e, p);
    }
  }
  function w(b, p) {
    for (var e = 0;e < b.length;e++) {
      v({reaction:b[e], argument:p});
    }
  }
  function v(b) {
    0 === e.length && setTimeout(u, 0);
    e.push(b);
  }
  function u() {
    for (;0 < e.length;) {
      var b = e[0];
      try {
        a: {
          var p = b.reaction, h = p.deferred, m = p.handler, c = void 0, g = void 0;
          try {
            c = m(b.argument);
          } catch (q) {
            var l = h.reject;
            l(q);
            break a;
          }
          if (c === h.promise) {
            l = h.reject, l(new TypeError("Self resolution"));
          } else {
            try {
              if (g = k(c, h), !g) {
                var t = h.resolve;
                t(c);
              }
            } catch (a) {
              l = h.reject, l(a);
            }
          }
        }
      } catch (n) {
        if ("function" === typeof f.onerror) {
          f.onerror(n);
        }
      }
      e.shift();
    }
  }
  function l(b) {
    throw b;
  }
  function c(b) {
    return b;
  }
  function g(b) {
    return function(p) {
      n(b, p);
    };
  }
  function q(b) {
    return function(p) {
      if ("unresolved" === b.promiseStatus) {
        var e = b.resolveReactions;
        b.result = p;
        b.resolveReactions = void 0;
        b.rejectReactions = void 0;
        b.promiseStatus = "has-resolution";
        w(e, p);
      }
    };
  }
  function t() {
    function b(p, e) {
      b.resolve = p;
      b.reject = e;
    }
    return b;
  }
  function m(b, p, e) {
    return function(f) {
      if (f === b) {
        return e(new TypeError("Self resolution"));
      }
      var h = b.promiseConstructor;
      if (a(f) && f.promiseConstructor === h) {
        return f.then(p, e);
      }
      h = d(h);
      return k(f, h) ? h.promise.then(p, e) : p(f);
    };
  }
  function h(b, p, e, f) {
    return function(h) {
      p[b] = h;
      f.countdown--;
      0 === f.countdown && e.resolve(p);
    };
  }
  function f(b) {
    if ("function" !== typeof b) {
      throw new TypeError("resolver is not a function");
    }
    if ("object" !== typeof this) {
      throw new TypeError("Promise to initialize is not an object");
    }
    this.promiseStatus = "unresolved";
    this.resolveReactions = [];
    this.rejectReactions = [];
    this.result = void 0;
    var p = q(this), e = g(this);
    try {
      b(p, e);
    } catch (h) {
      n(this, h);
    }
    this.promiseConstructor = f;
    return this;
  }
  var b = Function("return this")();
  if (b.Promise) {
    "function" !== typeof b.Promise.all && (b.Promise.all = function(e) {
      var p = 0, f = [], h, m, c = new b.Promise(function(b, p) {
        h = b;
        m = p;
      });
      e.forEach(function(b, e) {
        p++;
        b.then(function(b) {
          f[e] = b;
          p--;
          0 === p && h(f);
        }, m);
      });
      0 === p && h(f);
      return c;
    }), "function" !== typeof b.Promise.resolve && (b.Promise.resolve = function(e) {
      return new b.Promise(function(b) {
        b(e);
      });
    });
  } else {
    var e = [];
    f.all = function(b) {
      var e = d(this), f = [], m = {countdown:0}, c = 0;
      b.forEach(function(b) {
        this.cast(b).then(h(c, f, e, m), e.reject);
        c++;
        m.countdown++;
      }, this);
      0 === c && e.resolve(f);
      return e.promise;
    };
    f.cast = function(b) {
      if (a(b)) {
        return b;
      }
      var e = d(this);
      e.resolve(b);
      return e.promise;
    };
    f.reject = function(b) {
      var e = d(this);
      e.reject(b);
      return e.promise;
    };
    f.resolve = function(b) {
      var e = d(this);
      e.resolve(b);
      return e.promise;
    };
    f.prototype = {"catch":function(b) {
      this.then(void 0, b);
    }, then:function(b, e) {
      if (!a(this)) {
        throw new TypeError("this is not a Promises");
      }
      var f = d(this.promiseConstructor), h = "function" === typeof e ? e : l, g = {deferred:f, handler:m(this, "function" === typeof b ? b : c, h)}, h = {deferred:f, handler:h};
      switch(this.promiseStatus) {
        case "unresolved":
          this.resolveReactions.push(g);
          this.rejectReactions.push(h);
          break;
        case "has-resolution":
          v({reaction:g, argument:this.result});
          break;
        case "has-rejection":
          v({reaction:h, argument:this.result});
      }
      return f.promise;
    }};
    b.Promise = f;
  }
})();
"undefined" !== typeof exports && (exports.Shumway = Shumway);
(function() {
  function d(d, a, n) {
    d[a] || Object.defineProperty(d, a, {value:n, writable:!0, configurable:!0, enumerable:!1});
  }
  d(String.prototype, "padRight", function(d, a) {
    var n = this, w = n.replace(/\033\[[0-9]*m/g, "").length;
    if (!d || w >= a) {
      return n;
    }
    for (var w = (a - w) / d.length, v = 0;v < w;v++) {
      n += d;
    }
    return n;
  });
  d(String.prototype, "padLeft", function(d, a) {
    var n = this, w = n.length;
    if (!d || w >= a) {
      return n;
    }
    for (var w = (a - w) / d.length, v = 0;v < w;v++) {
      n = d + n;
    }
    return n;
  });
  d(String.prototype, "trim", function() {
    return this.replace(/^\s+|\s+$/g, "");
  });
  d(String.prototype, "endsWith", function(d) {
    return -1 !== this.indexOf(d, this.length - d.length);
  });
  d(Array.prototype, "replace", function(d, a) {
    if (d === a) {
      return 0;
    }
    for (var n = 0, w = 0;w < this.length;w++) {
      this[w] === d && (this[w] = a, n++);
    }
    return n;
  });
})();
(function(d) {
  (function(k) {
    var a = d.isObject, n = function() {
      function a(l, c, g, q) {
        this.shortName = l;
        this.longName = c;
        this.type = g;
        q = q || {};
        this.positional = q.positional;
        this.parseFn = q.parse;
        this.value = q.defaultValue;
      }
      a.prototype.parse = function(l) {
        this.value = "boolean" === this.type ? l : "number" === this.type ? parseInt(l, 10) : l;
        this.parseFn && this.parseFn(this.value);
      };
      return a;
    }();
    k.Argument = n;
    var w = function() {
      function a() {
        this.args = [];
      }
      a.prototype.addArgument = function(l, c, g, q) {
        l = new n(l, c, g, q);
        this.args.push(l);
        return l;
      };
      a.prototype.addBoundOption = function(l) {
        this.args.push(new n(l.shortName, l.longName, l.type, {parse:function(c) {
          l.value = c;
        }}));
      };
      a.prototype.addBoundOptionSet = function(l) {
        var c = this;
        l.options.forEach(function(g) {
          g instanceof v ? c.addBoundOptionSet(g) : c.addBoundOption(g);
        });
      };
      a.prototype.getUsage = function() {
        var l = "";
        this.args.forEach(function(c) {
          l = c.positional ? l + c.longName : l + ("[-" + c.shortName + "|--" + c.longName + ("boolean" === c.type ? "" : " " + c.type[0].toUpperCase()) + "]");
          l += " ";
        });
        return l;
      };
      a.prototype.parse = function(l) {
        var c = {}, g = [];
        this.args.forEach(function(f) {
          f.positional ? g.push(f) : (c["-" + f.shortName] = f, c["--" + f.longName] = f);
        });
        for (var q = [];l.length;) {
          var t = l.shift(), m = null, h = t;
          if ("--" == t) {
            q = q.concat(l);
            break;
          } else {
            if ("-" == t.slice(0, 1) || "--" == t.slice(0, 2)) {
              m = c[t];
              if (!m) {
                continue;
              }
              h = "boolean" !== m.type ? l.shift() : !0;
            } else {
              g.length ? m = g.shift() : q.push(h);
            }
          }
          m && m.parse(h);
        }
        return q;
      };
      return a;
    }();
    k.ArgumentParser = w;
    var v = function() {
      function n(l, c) {
        void 0 === c && (c = null);
        this.open = !1;
        this.name = l;
        this.settings = c || {};
        this.options = [];
      }
      n.prototype.register = function(l) {
        if (l instanceof n) {
          for (var c = 0;c < this.options.length;c++) {
            var g = this.options[c];
            if (g instanceof n && g.name === l.name) {
              return g;
            }
          }
        }
        this.options.push(l);
        if (this.settings) {
          if (l instanceof n) {
            c = this.settings[l.name], a(c) && (l.settings = c.settings, l.open = c.open);
          } else {
            if ("undefined" !== typeof this.settings[l.longName]) {
              switch(l.type) {
                case "boolean":
                  l.value = !!this.settings[l.longName];
                  break;
                case "number":
                  l.value = +this.settings[l.longName];
                  break;
                default:
                  l.value = this.settings[l.longName];
              }
            }
          }
        }
        return l;
      };
      n.prototype.trace = function(l) {
        l.enter(this.name + " {");
        this.options.forEach(function(c) {
          c.trace(l);
        });
        l.leave("}");
      };
      n.prototype.getSettings = function() {
        var l = {};
        this.options.forEach(function(c) {
          c instanceof n ? l[c.name] = {settings:c.getSettings(), open:c.open} : l[c.longName] = c.value;
        });
        return l;
      };
      n.prototype.setSettings = function(l) {
        l && this.options.forEach(function(c) {
          c instanceof n ? c.name in l && c.setSettings(l[c.name].settings) : c.longName in l && (c.value = l[c.longName]);
        });
      };
      return n;
    }();
    k.OptionSet = v;
    w = function() {
      function a(l, c, g, q, t, m) {
        void 0 === m && (m = null);
        this.longName = c;
        this.shortName = l;
        this.type = g;
        this.value = this.defaultValue = q;
        this.description = t;
        this.config = m;
      }
      a.prototype.parse = function(l) {
        this.value = l;
      };
      a.prototype.trace = function(l) {
        l.writeLn(("-" + this.shortName + "|--" + this.longName).padRight(" ", 30) + " = " + this.type + " " + this.value + " [" + this.defaultValue + "] (" + this.description + ")");
      };
      return a;
    }();
    k.Option = w;
  })(d.Options || (d.Options = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    k.ROOT = "Shumway Options";
    k.shumwayOptions = new d.Options.OptionSet(k.ROOT);
    k.setSettings = function(a) {
      k.shumwayOptions.setSettings(a);
    };
    k.getSettings = function() {
      return k.shumwayOptions.getSettings();
    };
  })(d.Settings || (d.Settings = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    var a = function() {
      function a(n, v) {
        this._parent = n;
        this._timers = d.ObjectUtilities.createMap();
        this._name = v;
        this._count = this._total = this._last = this._begin = 0;
      }
      a.time = function(d, v) {
        a.start(d);
        v();
        a.stop();
      };
      a.start = function(d) {
        a._top = a._top._timers[d] || (a._top._timers[d] = new a(a._top, d));
        a._top.start();
        d = a._flat._timers[d] || (a._flat._timers[d] = new a(a._flat, d));
        d.start();
        a._flatStack.push(d);
      };
      a.stop = function() {
        a._top.stop();
        a._top = a._top._parent;
        a._flatStack.pop().stop();
      };
      a.stopStart = function(d) {
        a.stop();
        a.start(d);
      };
      a.prototype.start = function() {
        this._begin = d.getTicks();
      };
      a.prototype.stop = function() {
        this._last = d.getTicks() - this._begin;
        this._total += this._last;
        this._count += 1;
      };
      a.prototype.toJSON = function() {
        return {name:this._name, total:this._total, timers:this._timers};
      };
      a.prototype.trace = function(a) {
        a.enter(this._name + ": " + this._total.toFixed(2) + " ms, count: " + this._count + ", average: " + (this._total / this._count).toFixed(2) + " ms");
        for (var n in this._timers) {
          this._timers[n].trace(a);
        }
        a.outdent();
      };
      a.trace = function(d) {
        a._base.trace(d);
        a._flat.trace(d);
      };
      a._base = new a(null, "Total");
      a._top = a._base;
      a._flat = new a(null, "Flat");
      a._flatStack = [];
      return a;
    }();
    k.Timer = a;
    a = function() {
      function a(n) {
        this._enabled = n;
        this.clear();
      }
      Object.defineProperty(a.prototype, "counts", {get:function() {
        return this._counts;
      }, enumerable:!0, configurable:!0});
      a.prototype.setEnabled = function(a) {
        this._enabled = a;
      };
      a.prototype.clear = function() {
        this._counts = d.ObjectUtilities.createMap();
        this._times = d.ObjectUtilities.createMap();
      };
      a.prototype.toJSON = function() {
        return {counts:this._counts, times:this._times};
      };
      a.prototype.count = function(a, n, u) {
        void 0 === n && (n = 1);
        void 0 === u && (u = 0);
        if (this._enabled) {
          return void 0 === this._counts[a] && (this._counts[a] = 0, this._times[a] = 0), this._counts[a] += n, this._times[a] += u, this._counts[a];
        }
      };
      a.prototype.trace = function(a) {
        for (var n in this._counts) {
          a.writeLn(n + ": " + this._counts[n]);
        }
      };
      a.prototype._pairToString = function(a, n) {
        var u = n[0], l = n[1], c = a[u], u = u + ": " + l;
        c && (u += ", " + c.toFixed(4), 1 < l && (u += " (" + (c / l).toFixed(4) + ")"));
        return u;
      };
      a.prototype.toStringSorted = function() {
        var a = this, n = this._times, u = [], l;
        for (l in this._counts) {
          u.push([l, this._counts[l]]);
        }
        u.sort(function(c, g) {
          return g[1] - c[1];
        });
        return u.map(function(c) {
          return a._pairToString(n, c);
        }).join(", ");
      };
      a.prototype.traceSorted = function(a) {
        var n = !0;
        void 0 === n && (n = !1);
        var u = this, l = this._times, c = [], g;
        for (g in this._counts) {
          c.push([g, this._counts[g]]);
        }
        c.sort(function(c, g) {
          return g[1] - c[1];
        });
        n ? a.writeLn(c.map(function(c) {
          return u._pairToString(l, c);
        }).join(", ")) : c.forEach(function(c) {
          a.writeLn(u._pairToString(l, c));
        });
      };
      a.instance = new a(!0);
      return a;
    }();
    k.Counter = a;
    a = function() {
      function a(n) {
        this._samples = new Float64Array(n);
        this._index = this._count = 0;
      }
      a.prototype.push = function(a) {
        this._count < this._samples.length && this._count++;
        this._index++;
        this._samples[this._index % this._samples.length] = a;
      };
      a.prototype.average = function() {
        for (var a = 0, n = 0;n < this._count;n++) {
          a += this._samples[n];
        }
        return a / this._count;
      };
      return a;
    }();
    k.Average = a;
  })(d.Metrics || (d.Metrics = {}));
})(Shumway || (Shumway = {}));
var __extends = this.__extends || function(d, k) {
  function a() {
    this.constructor = d;
  }
  for (var n in k) {
    k.hasOwnProperty(n) && (d[n] = k[n]);
  }
  a.prototype = k.prototype;
  d.prototype = new a;
};
(function(d) {
  (function(d) {
    function a(b) {
      for (var f = Math.max.apply(null, b), p = b.length, h = 1 << f, m = new Uint32Array(h), c = f << 16 | 65535, g = 0;g < h;g++) {
        m[g] = c;
      }
      for (var c = 0, g = 1, q = 2;g <= f;c <<= 1, ++g, q <<= 1) {
        for (var l = 0;l < p;++l) {
          if (b[l] === g) {
            for (var t = 0, a = 0;a < g;++a) {
              t = 2 * t + (c >> a & 1);
            }
            for (a = t;a < h;a += q) {
              m[a] = g << 16 | l;
            }
            ++c;
          }
        }
      }
      return {codes:m, maxBits:f};
    }
    var n;
    (function(b) {
      b[b.INIT = 0] = "INIT";
      b[b.BLOCK_0 = 1] = "BLOCK_0";
      b[b.BLOCK_1 = 2] = "BLOCK_1";
      b[b.BLOCK_2_PRE = 3] = "BLOCK_2_PRE";
      b[b.BLOCK_2 = 4] = "BLOCK_2";
      b[b.DONE = 5] = "DONE";
      b[b.ERROR = 6] = "ERROR";
      b[b.VERIFY_HEADER = 7] = "VERIFY_HEADER";
    })(n || (n = {}));
    n = function() {
      function b(e) {
      }
      b.prototype.push = function(b) {
      };
      b.prototype.close = function() {
      };
      b.create = function(b) {
        return "undefined" !== typeof ShumwayCom && ShumwayCom.createSpecialInflate ? new h(b, ShumwayCom.createSpecialInflate) : new w(b);
      };
      b.prototype._processZLibHeader = function(b, e, f) {
        if (e + 2 > f) {
          return 0;
        }
        b = b[e] << 8 | b[e + 1];
        e = null;
        2048 !== (b & 3840) ? e = "inflate: unknown compression method" : 0 !== b % 31 ? e = "inflate: bad FCHECK" : 0 !== (b & 32) && (e = "inflate: FDICT bit set");
        if (e) {
          if (this.onError) {
            this.onError(e);
          }
          return -1;
        }
        return 2;
      };
      b.inflate = function(f, p, h) {
        var m = new Uint8Array(p), c = 0;
        p = b.create(h);
        p.onData = function(b) {
          var e = Math.min(b.length, m.length - c);
          e && d.memCopy(m, b, c, 0, e);
          c += e;
        };
        p.onError = function(b) {
          throw Error(b);
        };
        p.push(f);
        p.close();
        return m;
      };
      return b;
    }();
    d.Inflate = n;
    var w = function(b) {
      function f(p) {
        b.call(this, p);
        this._buffer = null;
        this._bitLength = this._bitBuffer = this._bufferPosition = this._bufferSize = 0;
        this._window = new Uint8Array(65794);
        this._windowPosition = 0;
        this._state = p ? 7 : 0;
        this._isFinalBlock = !1;
        this._distanceTable = this._literalTable = null;
        this._block0Read = 0;
        this._block2State = null;
        this._copyState = {state:0, len:0, lenBits:0, dist:0, distBits:0};
        if (!m) {
          v = new Uint8Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);
          u = new Uint16Array(30);
          l = new Uint8Array(30);
          for (var h = p = 0, r = 1;30 > p;++p) {
            u[p] = r, r += 1 << (l[p] = ~~((h += 2 < p ? 1 : 0) / 2));
          }
          var n = new Uint8Array(288);
          for (p = 0;32 > p;++p) {
            n[p] = 5;
          }
          c = a(n.subarray(0, 32));
          g = new Uint16Array(29);
          q = new Uint8Array(29);
          h = p = 0;
          for (r = 3;29 > p;++p) {
            g[p] = r - (28 == p ? 1 : 0), r += 1 << (q[p] = ~~((h += 4 < p ? 1 : 0) / 4 % 6));
          }
          for (p = 0;288 > p;++p) {
            n[p] = 144 > p || 279 < p ? 8 : 256 > p ? 9 : 7;
          }
          t = a(n);
          m = !0;
        }
      }
      __extends(f, b);
      f.prototype.push = function(b) {
        if (!this._buffer || this._buffer.length < this._bufferSize + b.length) {
          var e = new Uint8Array(this._bufferSize + b.length);
          this._buffer && e.set(this._buffer);
          this._buffer = e;
        }
        this._buffer.set(b, this._bufferSize);
        this._bufferSize += b.length;
        this._bufferPosition = 0;
        b = !1;
        do {
          e = this._windowPosition;
          if (0 === this._state && (b = this._decodeInitState())) {
            break;
          }
          switch(this._state) {
            case 1:
              b = this._decodeBlock0();
              break;
            case 3:
              if (b = this._decodeBlock2Pre()) {
                break;
              }
            ;
            case 2:
            ;
            case 4:
              b = this._decodeBlock();
              break;
            case 6:
            ;
            case 5:
              this._bufferPosition = this._bufferSize;
              break;
            case 7:
              var f = this._processZLibHeader(this._buffer, this._bufferPosition, this._bufferSize);
              0 < f ? (this._bufferPosition += f, this._state = 0) : 0 === f ? b = !0 : this._state = 6;
          }
          if (0 < this._windowPosition - e) {
            this.onData(this._window.subarray(e, this._windowPosition));
          }
          65536 <= this._windowPosition && ("copyWithin" in this._buffer ? this._window.copyWithin(0, this._windowPosition - 32768, this._windowPosition) : this._window.set(this._window.subarray(this._windowPosition - 32768, this._windowPosition)), this._windowPosition = 32768);
        } while (!b && this._bufferPosition < this._bufferSize);
        this._bufferPosition < this._bufferSize ? ("copyWithin" in this._buffer ? this._buffer.copyWithin(0, this._bufferPosition, this._bufferSize) : this._buffer.set(this._buffer.subarray(this._bufferPosition, this._bufferSize)), this._bufferSize -= this._bufferPosition) : this._bufferSize = 0;
      };
      f.prototype._decodeInitState = function() {
        if (this._isFinalBlock) {
          return this._state = 5, !1;
        }
        var b = this._buffer, e = this._bufferSize, f = this._bitBuffer, h = this._bitLength, r = this._bufferPosition;
        if (3 > (e - r << 3) + h) {
          return !0;
        }
        3 > h && (f |= b[r++] << h, h += 8);
        var m = f & 7, f = f >> 3, h = h - 3;
        switch(m >> 1) {
          case 0:
            h = f = 0;
            if (4 > e - r) {
              return !0;
            }
            var g = b[r] | b[r + 1] << 8, b = b[r + 2] | b[r + 3] << 8, r = r + 4;
            if (65535 !== (g ^ b)) {
              this._error("inflate: invalid block 0 length");
              b = 6;
              break;
            }
            0 === g ? b = 0 : (this._block0Read = g, b = 1);
            break;
          case 1:
            b = 2;
            this._literalTable = t;
            this._distanceTable = c;
            break;
          case 2:
            if (26 > (e - r << 3) + h) {
              return !0;
            }
            for (;14 > h;) {
              f |= b[r++] << h, h += 8;
            }
            g = (f >> 10 & 15) + 4;
            if ((e - r << 3) + h < 14 + 3 * g) {
              return !0;
            }
            for (var e = {numLiteralCodes:(f & 31) + 257, numDistanceCodes:(f >> 5 & 31) + 1, codeLengthTable:void 0, bitLengths:void 0, codesRead:0, dupBits:0}, f = f >> 14, h = h - 14, q = new Uint8Array(19), l = 0;l < g;++l) {
              3 > h && (f |= b[r++] << h, h += 8), q[v[l]] = f & 7, f >>= 3, h -= 3;
            }
            for (;19 > l;l++) {
              q[v[l]] = 0;
            }
            e.bitLengths = new Uint8Array(e.numLiteralCodes + e.numDistanceCodes);
            e.codeLengthTable = a(q);
            this._block2State = e;
            b = 3;
            break;
          default:
            return this._error("inflate: unsupported block type"), !1;
        }
        this._isFinalBlock = !!(m & 1);
        this._state = b;
        this._bufferPosition = r;
        this._bitBuffer = f;
        this._bitLength = h;
        return !1;
      };
      f.prototype._error = function(b) {
        if (this.onError) {
          this.onError(b);
        }
      };
      f.prototype._decodeBlock0 = function() {
        var b = this._bufferPosition, e = this._windowPosition, f = this._block0Read, h = 65794 - e, r = this._bufferSize - b, m = r < f, c = Math.min(h, r, f);
        this._window.set(this._buffer.subarray(b, b + c), e);
        this._windowPosition = e + c;
        this._bufferPosition = b + c;
        this._block0Read = f - c;
        return f === c ? (this._state = 0, !1) : m && h < r;
      };
      f.prototype._readBits = function(b) {
        var e = this._bitBuffer, f = this._bitLength;
        if (b > f) {
          var h = this._bufferPosition, r = this._bufferSize;
          do {
            if (h >= r) {
              return this._bufferPosition = h, this._bitBuffer = e, this._bitLength = f, -1;
            }
            e |= this._buffer[h++] << f;
            f += 8;
          } while (b > f);
          this._bufferPosition = h;
        }
        this._bitBuffer = e >> b;
        this._bitLength = f - b;
        return e & (1 << b) - 1;
      };
      f.prototype._readCode = function(b) {
        var e = this._bitBuffer, f = this._bitLength, h = b.maxBits;
        if (h > f) {
          var r = this._bufferPosition, m = this._bufferSize;
          do {
            if (r >= m) {
              return this._bufferPosition = r, this._bitBuffer = e, this._bitLength = f, -1;
            }
            e |= this._buffer[r++] << f;
            f += 8;
          } while (h > f);
          this._bufferPosition = r;
        }
        b = b.codes[e & (1 << h) - 1];
        h = b >> 16;
        if (b & 32768) {
          return this._error("inflate: invalid encoding"), this._state = 6, -1;
        }
        this._bitBuffer = e >> h;
        this._bitLength = f - h;
        return b & 65535;
      };
      f.prototype._decodeBlock2Pre = function() {
        var b = this._block2State, e = b.numLiteralCodes + b.numDistanceCodes, f = b.bitLengths, h = b.codesRead, r = 0 < h ? f[h - 1] : 0, m = b.codeLengthTable, c;
        if (0 < b.dupBits) {
          c = this._readBits(b.dupBits);
          if (0 > c) {
            return !0;
          }
          for (;c--;) {
            f[h++] = r;
          }
          b.dupBits = 0;
        }
        for (;h < e;) {
          var g = this._readCode(m);
          if (0 > g) {
            return b.codesRead = h, !0;
          }
          if (16 > g) {
            f[h++] = r = g;
          } else {
            var q;
            switch(g) {
              case 16:
                q = 2;
                c = 3;
                g = r;
                break;
              case 17:
                c = q = 3;
                g = 0;
                break;
              case 18:
                q = 7, c = 11, g = 0;
            }
            for (;c--;) {
              f[h++] = g;
            }
            c = this._readBits(q);
            if (0 > c) {
              return b.codesRead = h, b.dupBits = q, !0;
            }
            for (;c--;) {
              f[h++] = g;
            }
            r = g;
          }
        }
        this._literalTable = a(f.subarray(0, b.numLiteralCodes));
        this._distanceTable = a(f.subarray(b.numLiteralCodes));
        this._state = 4;
        this._block2State = null;
        return !1;
      };
      f.prototype._decodeBlock = function() {
        var b = this._literalTable, e = this._distanceTable, f = this._window, h = this._windowPosition, r = this._copyState, m, c, t, a;
        if (0 !== r.state) {
          switch(r.state) {
            case 1:
              if (0 > (m = this._readBits(r.lenBits))) {
                return !0;
              }
              r.len += m;
              r.state = 2;
            case 2:
              if (0 > (m = this._readCode(e))) {
                return !0;
              }
              r.distBits = l[m];
              r.dist = u[m];
              r.state = 3;
            case 3:
              m = 0;
              if (0 < r.distBits && 0 > (m = this._readBits(r.distBits))) {
                return !0;
              }
              a = r.dist + m;
              c = r.len;
              for (m = h - a;c--;) {
                f[h++] = f[m++];
              }
              r.state = 0;
              if (65536 <= h) {
                return this._windowPosition = h, !1;
              }
              break;
          }
        }
        do {
          m = this._readCode(b);
          if (0 > m) {
            return this._windowPosition = h, !0;
          }
          if (256 > m) {
            f[h++] = m;
          } else {
            if (256 < m) {
              this._windowPosition = h;
              m -= 257;
              t = q[m];
              c = g[m];
              m = 0 === t ? 0 : this._readBits(t);
              if (0 > m) {
                return r.state = 1, r.len = c, r.lenBits = t, !0;
              }
              c += m;
              m = this._readCode(e);
              if (0 > m) {
                return r.state = 2, r.len = c, !0;
              }
              t = l[m];
              a = u[m];
              m = 0 === t ? 0 : this._readBits(t);
              if (0 > m) {
                return r.state = 3, r.len = c, r.dist = a, r.distBits = t, !0;
              }
              a += m;
              for (m = h - a;c--;) {
                f[h++] = f[m++];
              }
            } else {
              this._state = 0;
              break;
            }
          }
        } while (65536 > h);
        this._windowPosition = h;
        return !1;
      };
      return f;
    }(n), v, u, l, c, g, q, t, m = !1, h = function(b) {
      function f(p, h) {
        b.call(this, p);
        this._verifyHeader = p;
        this._specialInflate = h();
        this._specialInflate.setDataCallback(function(b) {
          this.onData(b);
        }.bind(this));
      }
      __extends(f, b);
      f.prototype.push = function(b) {
        if (this._verifyHeader) {
          var e;
          this._buffer ? (e = new Uint8Array(this._buffer.length + b.length), e.set(this._buffer), e.set(b, this._buffer.length), this._buffer = null) : e = new Uint8Array(b);
          var f = this._processZLibHeader(e, 0, e.length);
          if (0 === f) {
            this._buffer = e;
            return;
          }
          this._verifyHeader = !0;
          0 < f && (b = e.subarray(f));
        }
        this._specialInflate.push(b);
      };
      f.prototype.close = function() {
        this._specialInflate && (this._specialInflate.close(), this._specialInflate = null);
      };
      return f;
    }(n), f;
    (function(b) {
      b[b.WRITE = 0] = "WRITE";
      b[b.DONE = 1] = "DONE";
      b[b.ZLIB_HEADER = 2] = "ZLIB_HEADER";
    })(f || (f = {}));
    var b = function() {
      function b() {
        this.a = 1;
        this.b = 0;
      }
      b.prototype.update = function(b, e, f) {
        for (var h = this.a, m = this.b;e < f;++e) {
          h = (h + (b[e] & 255)) % 65521, m = (m + h) % 65521;
        }
        this.a = h;
        this.b = m;
      };
      b.prototype.getChecksum = function() {
        return this.b << 16 | this.a;
      };
      return b;
    }();
    d.Adler32 = b;
    f = function() {
      function e(e) {
        this._state = (this._writeZlibHeader = e) ? 2 : 0;
        this._adler32 = e ? new b : null;
      }
      e.prototype.push = function(b) {
        2 === this._state && (this.onData(new Uint8Array([120, 156])), this._state = 0);
        for (var e = b.length, f = new Uint8Array(e + 5 * Math.ceil(e / 65535)), h = 0, m = 0;65535 < e;) {
          f.set(new Uint8Array([0, 255, 255, 0, 0]), h), h += 5, f.set(b.subarray(m, m + 65535), h), m += 65535, h += 65535, e -= 65535;
        }
        f.set(new Uint8Array([0, e & 255, e >> 8 & 255, ~e & 255, ~e >> 8 & 255]), h);
        f.set(b.subarray(m, e), h + 5);
        this.onData(f);
        this._adler32 && this._adler32.update(b, 0, e);
      };
      e.prototype.close = function() {
        this._state = 1;
        this.onData(new Uint8Array([1, 0, 0, 255, 255]));
        if (this._adler32) {
          var b = this._adler32.getChecksum();
          this.onData(new Uint8Array([b & 255, b >> 8 & 255, b >> 16 & 255, b >>> 24 & 255]));
        }
      };
      return e;
    }();
    d.Deflate = f;
  })(d.ArrayUtilities || (d.ArrayUtilities = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    function a(b) {
      for (var e = new Uint16Array(b), f = 0;f < b;f++) {
        e[f] = 1024;
      }
      return e;
    }
    function n(b, e, f, h) {
      for (var m = 1, c = 0, g = 0;g < f;g++) {
        var q = h.decodeBit(b, m + e), m = (m << 1) + q, c = c | q << g
      }
      return c;
    }
    function w(b, e) {
      var f = [];
      f.length = e;
      for (var h = 0;h < e;h++) {
        f[h] = new g(b);
      }
      return f;
    }
    var v = function() {
      function b() {
        this.pos = this.available = 0;
        this.buffer = new Uint8Array(2E3);
      }
      b.prototype.append = function(b) {
        var e = this.pos + this.available, f = e + b.length;
        if (f > this.buffer.length) {
          for (var h = 2 * this.buffer.length;h < f;) {
            h *= 2;
          }
          f = new Uint8Array(h);
          f.set(this.buffer);
          this.buffer = f;
        }
        this.buffer.set(b, e);
        this.available += b.length;
      };
      b.prototype.compact = function() {
        0 !== this.available && (this.buffer.set(this.buffer.subarray(this.pos, this.pos + this.available), 0), this.pos = 0);
      };
      b.prototype.readByte = function() {
        if (0 >= this.available) {
          throw Error("Unexpected end of file");
        }
        this.available--;
        return this.buffer[this.pos++];
      };
      return b;
    }(), u = function() {
      function b(e) {
        this.onData = e;
        this.processed = 0;
      }
      b.prototype.writeBytes = function(b) {
        this.onData.call(null, b);
        this.processed += b.length;
      };
      return b;
    }(), l = function() {
      function b(e) {
        this.outStream = e;
        this.buf = null;
        this.size = this.pos = 0;
        this.isFull = !1;
        this.totalPos = this.writePos = 0;
      }
      b.prototype.create = function(b) {
        this.buf = new Uint8Array(b);
        this.pos = 0;
        this.size = b;
        this.isFull = !1;
        this.totalPos = this.writePos = 0;
      };
      b.prototype.putByte = function(b) {
        this.totalPos++;
        this.buf[this.pos++] = b;
        this.pos === this.size && (this.flush(), this.pos = 0, this.isFull = !0);
      };
      b.prototype.getByte = function(b) {
        return this.buf[b <= this.pos ? this.pos - b : this.size - b + this.pos];
      };
      b.prototype.flush = function() {
        this.writePos < this.pos && (this.outStream.writeBytes(this.buf.subarray(this.writePos, this.pos)), this.writePos = this.pos === this.size ? 0 : this.pos);
      };
      b.prototype.copyMatch = function(b, e) {
        for (var f = this.pos, h = this.size, m = this.buf, r = b <= f ? f - b : h - b + f, c = e;0 < c;) {
          for (var g = Math.min(Math.min(c, h - f), h - r), q = 0;q < g;q++) {
            var l = m[r++];
            m[f++] = l;
          }
          f === h && (this.pos = f, this.flush(), f = 0, this.isFull = !0);
          r === h && (r = 0);
          c -= g;
        }
        this.pos = f;
        this.totalPos += e;
      };
      b.prototype.checkDistance = function(b) {
        return b <= this.pos || this.isFull;
      };
      b.prototype.isEmpty = function() {
        return 0 === this.pos && !this.isFull;
      };
      return b;
    }(), c = function() {
      function b(e) {
        this.inStream = e;
        this.code = this.range = 0;
        this.corrupted = !1;
      }
      b.prototype.init = function() {
        0 !== this.inStream.readByte() && (this.corrupted = !0);
        this.range = -1;
        for (var b = 0, e = 0;4 > e;e++) {
          b = b << 8 | this.inStream.readByte();
        }
        b === this.range && (this.corrupted = !0);
        this.code = b;
      };
      b.prototype.isFinishedOK = function() {
        return 0 === this.code;
      };
      b.prototype.decodeDirectBits = function(b) {
        var e = 0, f = this.range, h = this.code;
        do {
          var f = f >>> 1 | 0, h = h - f | 0, m = h >> 31, h = h + (f & m) | 0;
          h === f && (this.corrupted = !0);
          0 <= f && 16777216 > f && (f <<= 8, h = h << 8 | this.inStream.readByte());
          e = (e << 1) + m + 1 | 0;
        } while (--b);
        this.range = f;
        this.code = h;
        return e;
      };
      b.prototype.decodeBit = function(b, e) {
        var f = this.range, h = this.code, m = b[e], r = (f >>> 11) * m;
        h >>> 0 < r ? (m = m + (2048 - m >> 5) | 0, f = r | 0, r = 0) : (m = m - (m >> 5) | 0, h = h - r | 0, f = f - r | 0, r = 1);
        b[e] = m & 65535;
        0 <= f && 16777216 > f && (f <<= 8, h = h << 8 | this.inStream.readByte());
        this.range = f;
        this.code = h;
        return r;
      };
      return b;
    }(), g = function() {
      function b(e) {
        this.numBits = e;
        this.probs = a(1 << e);
      }
      b.prototype.decode = function(b) {
        for (var e = 1, f = 0;f < this.numBits;f++) {
          e = (e << 1) + b.decodeBit(this.probs, e);
        }
        return e - (1 << this.numBits);
      };
      b.prototype.reverseDecode = function(b) {
        return n(this.probs, 0, this.numBits, b);
      };
      return b;
    }(), q = function() {
      function b() {
        this.choice = a(2);
        this.lowCoder = w(3, 16);
        this.midCoder = w(3, 16);
        this.highCoder = new g(8);
      }
      b.prototype.decode = function(b, e) {
        return 0 === b.decodeBit(this.choice, 0) ? this.lowCoder[e].decode(b) : 0 === b.decodeBit(this.choice, 1) ? 8 + this.midCoder[e].decode(b) : 16 + this.highCoder.decode(b);
      };
      return b;
    }(), t = function() {
      function e(b, f) {
        this.rangeDec = new c(b);
        this.outWindow = new l(f);
        this.markerIsMandatory = !1;
        this.dictSizeInProperties = this.dictSize = this.lp = this.pb = this.lc = 0;
        this.leftToUnpack = this.unpackSize = void 0;
        this.reps = new Int32Array(4);
        this.state = 0;
      }
      e.prototype.decodeProperties = function(b) {
        var e = b[0];
        if (225 <= e) {
          throw Error("Incorrect LZMA properties");
        }
        this.lc = e % 9;
        e = e / 9 | 0;
        this.pb = e / 5 | 0;
        this.lp = e % 5;
        for (e = this.dictSizeInProperties = 0;4 > e;e++) {
          this.dictSizeInProperties |= b[e + 1] << 8 * e;
        }
        this.dictSize = this.dictSizeInProperties;
        4096 > this.dictSize && (this.dictSize = 4096);
      };
      e.prototype.create = function() {
        this.outWindow.create(this.dictSize);
        this.init();
        this.rangeDec.init();
        this.reps[0] = 0;
        this.reps[1] = 0;
        this.reps[2] = 0;
        this.state = this.reps[3] = 0;
        this.leftToUnpack = this.unpackSize;
      };
      e.prototype.decodeLiteral = function(b, e) {
        var f = this.outWindow, h = this.rangeDec, m = 0;
        f.isEmpty() || (m = f.getByte(1));
        var r = 1, m = 768 * (((f.totalPos & (1 << this.lp) - 1) << this.lc) + (m >> 8 - this.lc));
        if (7 <= b) {
          f = f.getByte(e + 1);
          do {
            var c = f >> 7 & 1, f = f << 1, g = h.decodeBit(this.litProbs, m + ((1 + c << 8) + r)), r = r << 1 | g;
            if (c !== g) {
              break;
            }
          } while (256 > r);
        }
        for (;256 > r;) {
          r = r << 1 | h.decodeBit(this.litProbs, m + r);
        }
        return r - 256 & 255;
      };
      e.prototype.decodeDistance = function(b) {
        var e = b;
        3 < e && (e = 3);
        b = this.rangeDec;
        e = this.posSlotDecoder[e].decode(b);
        if (4 > e) {
          return e;
        }
        var f = (e >> 1) - 1, h = (2 | e & 1) << f;
        14 > e ? h = h + n(this.posDecoders, h - e, f, b) | 0 : (h = h + (b.decodeDirectBits(f - 4) << 4) | 0, h = h + this.alignDecoder.reverseDecode(b) | 0);
        return h;
      };
      e.prototype.init = function() {
        this.litProbs = a(768 << this.lc + this.lp);
        this.posSlotDecoder = w(6, 4);
        this.alignDecoder = new g(4);
        this.posDecoders = a(115);
        this.isMatch = a(192);
        this.isRep = a(12);
        this.isRepG0 = a(12);
        this.isRepG1 = a(12);
        this.isRepG2 = a(12);
        this.isRep0Long = a(192);
        this.lenDecoder = new q;
        this.repLenDecoder = new q;
      };
      e.prototype.decode = function(e) {
        for (var r = this.rangeDec, c = this.outWindow, g = this.pb, q = this.dictSize, l = this.markerIsMandatory, t = this.leftToUnpack, a = this.isMatch, n = this.isRep, u = this.isRepG0, d = this.isRepG1, v = this.isRepG2, k = this.isRep0Long, w = this.lenDecoder, G = this.repLenDecoder, L = this.reps[0], F = this.reps[1], S = this.reps[2], U = this.reps[3], N = this.state;;) {
          if (e && 48 > r.inStream.available) {
            this.outWindow.flush();
            break;
          }
          if (0 === t && !l && (this.outWindow.flush(), r.isFinishedOK())) {
            return f;
          }
          var R = c.totalPos & (1 << g) - 1;
          if (0 === r.decodeBit(a, (N << 4) + R)) {
            if (0 === t) {
              return m;
            }
            c.putByte(this.decodeLiteral(N, L));
            N = 4 > N ? 0 : 10 > N ? N - 3 : N - 6;
            t--;
          } else {
            if (0 !== r.decodeBit(n, N)) {
              if (0 === t || c.isEmpty()) {
                return m;
              }
              if (0 === r.decodeBit(u, N)) {
                if (0 === r.decodeBit(k, (N << 4) + R)) {
                  N = 7 > N ? 9 : 11;
                  c.putByte(c.getByte(L + 1));
                  t--;
                  continue;
                }
              } else {
                var T;
                0 === r.decodeBit(d, N) ? T = F : (0 === r.decodeBit(v, N) ? T = S : (T = U, U = S), S = F);
                F = L;
                L = T;
              }
              R = G.decode(r, R);
              N = 7 > N ? 8 : 11;
            } else {
              U = S;
              S = F;
              F = L;
              R = w.decode(r, R);
              N = 7 > N ? 7 : 10;
              L = this.decodeDistance(R);
              if (-1 === L) {
                return this.outWindow.flush(), r.isFinishedOK() ? h : m;
              }
              if (0 === t || L >= q || !c.checkDistance(L)) {
                return m;
              }
            }
            R += 2;
            T = !1;
            void 0 !== t && t < R && (R = t, T = !0);
            c.copyMatch(L + 1, R);
            t -= R;
            if (T) {
              return m;
            }
          }
        }
        this.state = N;
        this.reps[0] = L;
        this.reps[1] = F;
        this.reps[2] = S;
        this.reps[3] = U;
        this.leftToUnpack = t;
        return b;
      };
      e.prototype.flushOutput = function() {
        this.outWindow.flush();
      };
      return e;
    }(), m = 0, h = 1, f = 2, b = 3, e;
    (function(b) {
      b[b.WAIT_FOR_LZMA_HEADER = 0] = "WAIT_FOR_LZMA_HEADER";
      b[b.WAIT_FOR_SWF_HEADER = 1] = "WAIT_FOR_SWF_HEADER";
      b[b.PROCESS_DATA = 2] = "PROCESS_DATA";
      b[b.CLOSED = 3] = "CLOSED";
      b[b.ERROR = 4] = "ERROR";
    })(e || (e = {}));
    e = function() {
      function e(b) {
        void 0 === b && (b = !1);
        this._state = b ? 1 : 0;
        this.buffer = null;
      }
      e.prototype.push = function(e) {
        if (2 > this._state) {
          var f = this.buffer ? this.buffer.length : 0, h = (1 === this._state ? 17 : 13) + 5;
          if (f + e.length < h) {
            h = new Uint8Array(f + e.length);
            0 < f && h.set(this.buffer);
            h.set(e, f);
            this.buffer = h;
            return;
          }
          var m = new Uint8Array(h);
          0 < f && m.set(this.buffer);
          m.set(e.subarray(0, h - f), f);
          this._inStream = new v;
          this._inStream.append(m.subarray(h - 5));
          this._outStream = new u(function(b) {
            this.onData.call(null, b);
          }.bind(this));
          this._decoder = new t(this._inStream, this._outStream);
          if (1 === this._state) {
            this._decoder.decodeProperties(m.subarray(12, 17)), this._decoder.markerIsMandatory = !1, this._decoder.unpackSize = ((m[4] | m[5] << 8 | m[6] << 16 | m[7] << 24) >>> 0) - 8;
          } else {
            this._decoder.decodeProperties(m.subarray(0, 5));
            for (var f = 0, r = !1, c = 0;8 > c;c++) {
              var g = m[5 + c];
              255 !== g && (r = !0);
              f |= g << 8 * c;
            }
            this._decoder.markerIsMandatory = !r;
            this._decoder.unpackSize = r ? f : void 0;
          }
          this._decoder.create();
          e = e.subarray(h);
          this._state = 2;
        } else {
          if (2 !== this._state) {
            return;
          }
        }
        try {
          this._inStream.append(e);
          var q = this._decoder.decode(!0);
          this._inStream.compact();
          q !== b && this._checkError(q);
        } catch (l) {
          this._decoder.flushOutput(), this._decoder = null, this._error(l);
        }
      };
      e.prototype.close = function() {
        if (2 === this._state) {
          this._state = 3;
          try {
            var b = this._decoder.decode(!1);
            this._checkError(b);
          } catch (e) {
            this._decoder.flushOutput(), this._error(e);
          }
          this._decoder = null;
        }
      };
      e.prototype._error = function(b) {
        this._state = 4;
        if (this.onError) {
          this.onError(b);
        }
      };
      e.prototype._checkError = function(e) {
        var f;
        e === m ? f = "LZMA decoding error" : e === b ? f = "Decoding is not complete" : e === h ? void 0 !== this._decoder.unpackSize && this._decoder.unpackSize !== this._outStream.processed && (f = "Finished with end marker before than specified size") : f = "Internal LZMA Error";
        f && this._error(f);
      };
      return e;
    }();
    d.LzmaDecoder = e;
  })(d.ArrayUtilities || (d.ArrayUtilities = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    function a(h, f) {
      h !== l(h, 0, f) && throwError("RangeError", Errors.ParamRangeError);
    }
    function n(h) {
      return "string" === typeof h ? h : void 0 == h ? null : h + "";
    }
    var w = d.Debug.notImplemented, v = d.StringUtilities.utf8decode, u = d.StringUtilities.utf8encode, l = d.NumberUtilities.clamp, c = function() {
      return function(h, f, b) {
        this.buffer = h;
        this.length = f;
        this.littleEndian = b;
      };
    }();
    k.PlainObjectDataBuffer = c;
    for (var g = new Uint32Array(33), q = 1, t = 0;32 >= q;q++) {
      g[q] = t = t << 1 | 1;
    }
    var m;
    (function(h) {
      h[h.U8 = 1] = "U8";
      h[h.I32 = 2] = "I32";
      h[h.F32 = 4] = "F32";
    })(m || (m = {}));
    q = function() {
      function h(f) {
        void 0 === f && (f = h.INITIAL_SIZE);
        this._buffer || (this._buffer = new ArrayBuffer(f), this._position = this._length = 0, this._resetViews(), this._littleEndian = h._nativeLittleEndian, this._bitLength = this._bitBuffer = 0);
      }
      h.FromArrayBuffer = function(f, b) {
        void 0 === b && (b = -1);
        var e = Object.create(h.prototype);
        e._buffer = f;
        e._length = -1 === b ? f.byteLength : b;
        e._position = 0;
        e._resetViews();
        e._littleEndian = h._nativeLittleEndian;
        e._bitBuffer = 0;
        e._bitLength = 0;
        return e;
      };
      h.FromPlainObject = function(f) {
        var b = h.FromArrayBuffer(f.buffer, f.length);
        b._littleEndian = f.littleEndian;
        return b;
      };
      h.prototype.toPlainObject = function() {
        return new c(this._buffer, this._length, this._littleEndian);
      };
      h.prototype._resetViews = function() {
        this._u8 = new Uint8Array(this._buffer);
        this._f32 = this._i32 = null;
      };
      h.prototype._requestViews = function(f) {
        0 === (this._buffer.byteLength & 3) && (null === this._i32 && f & 2 && (this._i32 = new Int32Array(this._buffer)), null === this._f32 && f & 4 && (this._f32 = new Float32Array(this._buffer)));
      };
      h.prototype.getBytes = function() {
        return new Uint8Array(this._buffer, 0, this._length);
      };
      h.prototype._ensureCapacity = function(f) {
        var b = this._buffer;
        if (b.byteLength < f) {
          for (var e = Math.max(b.byteLength, 1);e < f;) {
            e *= 2;
          }
          f = h._arrayBufferPool.acquire(e);
          e = this._u8;
          this._buffer = f;
          this._resetViews();
          this._u8.set(e);
          h._arrayBufferPool.release(b);
        }
      };
      h.prototype.clear = function() {
        this._position = this._length = 0;
      };
      h.prototype.readBoolean = function() {
        return 0 !== this.readUnsignedByte();
      };
      h.prototype.readByte = function() {
        return this.readUnsignedByte() << 24 >> 24;
      };
      h.prototype.readUnsignedByte = function() {
        this._position + 1 > this._length && throwError("EOFError", Errors.EOFError);
        return this._u8[this._position++];
      };
      h.prototype.readBytes = function(f, b, e) {
        void 0 === b && (b = 0);
        void 0 === e && (e = 0);
        var h = this._position;
        b || (b = 0);
        e || (e = this._length - h);
        h + e > this._length && throwError("EOFError", Errors.EOFError);
        f.length < b + e && (f._ensureCapacity(b + e), f.length = b + e);
        f._u8.set(new Uint8Array(this._buffer, h, e), b);
        this._position += e;
      };
      h.prototype.readShort = function() {
        return this.readUnsignedShort() << 16 >> 16;
      };
      h.prototype.readUnsignedShort = function() {
        var f = this._u8, b = this._position;
        b + 2 > this._length && throwError("EOFError", Errors.EOFError);
        var e = f[b + 0], f = f[b + 1];
        this._position = b + 2;
        return this._littleEndian ? f << 8 | e : e << 8 | f;
      };
      h.prototype.readInt = function() {
        var f = this._u8, b = this._position;
        b + 4 > this._length && throwError("EOFError", Errors.EOFError);
        var e = f[b + 0], h = f[b + 1], p = f[b + 2], f = f[b + 3];
        this._position = b + 4;
        return this._littleEndian ? f << 24 | p << 16 | h << 8 | e : e << 24 | h << 16 | p << 8 | f;
      };
      h.prototype.readUnsignedInt = function() {
        return this.readInt() >>> 0;
      };
      h.prototype.readFloat = function() {
        var f = this._position;
        f + 4 > this._length && throwError("EOFError", Errors.EOFError);
        this._position = f + 4;
        this._requestViews(4);
        if (this._littleEndian && 0 === (f & 3) && this._f32) {
          return this._f32[f >> 2];
        }
        var b = this._u8, e = d.IntegerUtilities.u8;
        this._littleEndian ? (e[0] = b[f + 0], e[1] = b[f + 1], e[2] = b[f + 2], e[3] = b[f + 3]) : (e[3] = b[f + 0], e[2] = b[f + 1], e[1] = b[f + 2], e[0] = b[f + 3]);
        return d.IntegerUtilities.f32[0];
      };
      h.prototype.readDouble = function() {
        var f = this._u8, b = this._position;
        b + 8 > this._length && throwError("EOFError", Errors.EOFError);
        var e = d.IntegerUtilities.u8;
        this._littleEndian ? (e[0] = f[b + 0], e[1] = f[b + 1], e[2] = f[b + 2], e[3] = f[b + 3], e[4] = f[b + 4], e[5] = f[b + 5], e[6] = f[b + 6], e[7] = f[b + 7]) : (e[0] = f[b + 7], e[1] = f[b + 6], e[2] = f[b + 5], e[3] = f[b + 4], e[4] = f[b + 3], e[5] = f[b + 2], e[6] = f[b + 1], e[7] = f[b + 0]);
        this._position = b + 8;
        return d.IntegerUtilities.f64[0];
      };
      h.prototype.writeBoolean = function(f) {
        this.writeByte(f ? 1 : 0);
      };
      h.prototype.writeByte = function(f) {
        var b = this._position + 1;
        this._ensureCapacity(b);
        this._u8[this._position++] = f;
        b > this._length && (this._length = b);
      };
      h.prototype.writeUnsignedByte = function(f) {
        var b = this._position + 1;
        this._ensureCapacity(b);
        this._u8[this._position++] = f;
        b > this._length && (this._length = b);
      };
      h.prototype.writeRawBytes = function(f) {
        var b = this._position + f.length;
        this._ensureCapacity(b);
        this._u8.set(f, this._position);
        this._position = b;
        b > this._length && (this._length = b);
      };
      h.prototype.writeBytes = function(f, b, e) {
        void 0 === b && (b = 0);
        void 0 === e && (e = 0);
        d.isNullOrUndefined(f) && throwError("TypeError", Errors.NullPointerError, "bytes");
        2 > arguments.length && (b = 0);
        3 > arguments.length && (e = 0);
        a(b, f.length);
        a(b + e, f.length);
        0 === e && (e = f.length - b);
        this.writeRawBytes(new Int8Array(f._buffer, b, e));
      };
      h.prototype.writeShort = function(f) {
        this.writeUnsignedShort(f);
      };
      h.prototype.writeUnsignedShort = function(f) {
        var b = this._position;
        this._ensureCapacity(b + 2);
        var e = this._u8;
        this._littleEndian ? (e[b + 0] = f, e[b + 1] = f >> 8) : (e[b + 0] = f >> 8, e[b + 1] = f);
        this._position = b += 2;
        b > this._length && (this._length = b);
      };
      h.prototype.writeInt = function(f) {
        this.writeUnsignedInt(f);
      };
      h.prototype.write2Ints = function(f, b) {
        this.write2UnsignedInts(f, b);
      };
      h.prototype.write4Ints = function(f, b, e, h) {
        this.write4UnsignedInts(f, b, e, h);
      };
      h.prototype.writeUnsignedInt = function(f) {
        var b = this._position;
        this._ensureCapacity(b + 4);
        this._requestViews(2);
        if (this._littleEndian === h._nativeLittleEndian && 0 === (b & 3) && this._i32) {
          this._i32[b >> 2] = f;
        } else {
          var e = this._u8;
          this._littleEndian ? (e[b + 0] = f, e[b + 1] = f >> 8, e[b + 2] = f >> 16, e[b + 3] = f >> 24) : (e[b + 0] = f >> 24, e[b + 1] = f >> 16, e[b + 2] = f >> 8, e[b + 3] = f);
        }
        this._position = b += 4;
        b > this._length && (this._length = b);
      };
      h.prototype.write2UnsignedInts = function(f, b) {
        var e = this._position;
        this._ensureCapacity(e + 8);
        this._requestViews(2);
        this._littleEndian === h._nativeLittleEndian && 0 === (e & 3) && this._i32 ? (this._i32[(e >> 2) + 0] = f, this._i32[(e >> 2) + 1] = b, this._position = e += 8, e > this._length && (this._length = e)) : (this.writeUnsignedInt(f), this.writeUnsignedInt(b));
      };
      h.prototype.write4UnsignedInts = function(f, b, e, m) {
        var p = this._position;
        this._ensureCapacity(p + 16);
        this._requestViews(2);
        this._littleEndian === h._nativeLittleEndian && 0 === (p & 3) && this._i32 ? (this._i32[(p >> 2) + 0] = f, this._i32[(p >> 2) + 1] = b, this._i32[(p >> 2) + 2] = e, this._i32[(p >> 2) + 3] = m, this._position = p += 16, p > this._length && (this._length = p)) : (this.writeUnsignedInt(f), this.writeUnsignedInt(b), this.writeUnsignedInt(e), this.writeUnsignedInt(m));
      };
      h.prototype.writeFloat = function(f) {
        var b = this._position;
        this._ensureCapacity(b + 4);
        this._requestViews(4);
        if (this._littleEndian === h._nativeLittleEndian && 0 === (b & 3) && this._f32) {
          this._f32[b >> 2] = f;
        } else {
          var e = this._u8;
          d.IntegerUtilities.f32[0] = f;
          f = d.IntegerUtilities.u8;
          this._littleEndian ? (e[b + 0] = f[0], e[b + 1] = f[1], e[b + 2] = f[2], e[b + 3] = f[3]) : (e[b + 0] = f[3], e[b + 1] = f[2], e[b + 2] = f[1], e[b + 3] = f[0]);
        }
        this._position = b += 4;
        b > this._length && (this._length = b);
      };
      h.prototype.write6Floats = function(f, b, e, m, p, c) {
        var g = this._position;
        this._ensureCapacity(g + 24);
        this._requestViews(4);
        this._littleEndian === h._nativeLittleEndian && 0 === (g & 3) && this._f32 ? (this._f32[(g >> 2) + 0] = f, this._f32[(g >> 2) + 1] = b, this._f32[(g >> 2) + 2] = e, this._f32[(g >> 2) + 3] = m, this._f32[(g >> 2) + 4] = p, this._f32[(g >> 2) + 5] = c, this._position = g += 24, g > this._length && (this._length = g)) : (this.writeFloat(f), this.writeFloat(b), this.writeFloat(e), this.writeFloat(m), this.writeFloat(p), this.writeFloat(c));
      };
      h.prototype.writeDouble = function(f) {
        var b = this._position;
        this._ensureCapacity(b + 8);
        var e = this._u8;
        d.IntegerUtilities.f64[0] = f;
        f = d.IntegerUtilities.u8;
        this._littleEndian ? (e[b + 0] = f[0], e[b + 1] = f[1], e[b + 2] = f[2], e[b + 3] = f[3], e[b + 4] = f[4], e[b + 5] = f[5], e[b + 6] = f[6], e[b + 7] = f[7]) : (e[b + 0] = f[7], e[b + 1] = f[6], e[b + 2] = f[5], e[b + 3] = f[4], e[b + 4] = f[3], e[b + 5] = f[2], e[b + 6] = f[1], e[b + 7] = f[0]);
        this._position = b += 8;
        b > this._length && (this._length = b);
      };
      h.prototype.readRawBytes = function() {
        return new Int8Array(this._buffer, 0, this._length);
      };
      h.prototype.writeUTF = function(f) {
        f = n(f);
        f = v(f);
        this.writeShort(f.length);
        this.writeRawBytes(f);
      };
      h.prototype.writeUTFBytes = function(f) {
        f = n(f);
        f = v(f);
        this.writeRawBytes(f);
      };
      h.prototype.readUTF = function() {
        return this.readUTFBytes(this.readShort());
      };
      h.prototype.readUTFBytes = function(f) {
        f >>>= 0;
        var b = this._position;
        b + f > this._length && throwError("EOFError", Errors.EOFError);
        this._position += f;
        return u(new Int8Array(this._buffer, b, f));
      };
      Object.defineProperty(h.prototype, "length", {get:function() {
        return this._length;
      }, set:function(f) {
        f >>>= 0;
        f > this._buffer.byteLength && this._ensureCapacity(f);
        this._length = f;
        this._position = l(this._position, 0, this._length);
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(h.prototype, "bytesAvailable", {get:function() {
        return this._length - this._position;
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(h.prototype, "position", {get:function() {
        return this._position;
      }, set:function(f) {
        this._position = f >>> 0;
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(h.prototype, "buffer", {get:function() {
        return this._buffer;
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(h.prototype, "bytes", {get:function() {
        return this._u8;
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(h.prototype, "ints", {get:function() {
        this._requestViews(2);
        return this._i32;
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(h.prototype, "objectEncoding", {get:function() {
        return this._objectEncoding;
      }, set:function(f) {
        this._objectEncoding = f >>> 0;
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(h.prototype, "endian", {get:function() {
        return this._littleEndian ? "littleEndian" : "bigEndian";
      }, set:function(f) {
        f = n(f);
        this._littleEndian = "auto" === f ? h._nativeLittleEndian : "littleEndian" === f;
      }, enumerable:!0, configurable:!0});
      h.prototype.toString = function() {
        return u(new Int8Array(this._buffer, 0, this._length));
      };
      h.prototype.toBlob = function(f) {
        return new Blob([new Int8Array(this._buffer, this._position, this._length)], {type:f});
      };
      h.prototype.writeMultiByte = function(f, b) {
        w("packageInternal flash.utils.ObjectOutput::writeMultiByte");
      };
      h.prototype.readMultiByte = function(f, b) {
        w("packageInternal flash.utils.ObjectInput::readMultiByte");
      };
      h.prototype.getValue = function(f) {
        f |= 0;
        return f >= this._length ? void 0 : this._u8[f];
      };
      h.prototype.setValue = function(f, b) {
        f |= 0;
        var e = f + 1;
        this._ensureCapacity(e);
        this._u8[f] = b;
        e > this._length && (this._length = e);
      };
      h.prototype.readFixed = function() {
        return this.readInt() / 65536;
      };
      h.prototype.readFixed8 = function() {
        return this.readShort() / 256;
      };
      h.prototype.readFloat16 = function() {
        var f = this.readUnsignedShort(), b = f >> 15 ? -1 : 1, e = (f & 31744) >> 10, f = f & 1023;
        return e ? 31 === e ? f ? NaN : Infinity * b : b * Math.pow(2, e - 15) * (1 + f / 1024) : f / 1024 * Math.pow(2, -14) * b;
      };
      h.prototype.readEncodedU32 = function() {
        var f = this.readUnsignedByte();
        if (!(f & 128)) {
          return f;
        }
        f = f & 127 | this.readUnsignedByte() << 7;
        if (!(f & 16384)) {
          return f;
        }
        f = f & 16383 | this.readUnsignedByte() << 14;
        if (!(f & 2097152)) {
          return f;
        }
        f = f & 2097151 | this.readUnsignedByte() << 21;
        return f & 268435456 ? f & 268435455 | this.readUnsignedByte() << 28 : f;
      };
      h.prototype.readBits = function(f) {
        return this.readUnsignedBits(f) << 32 - f >> 32 - f;
      };
      h.prototype.readUnsignedBits = function(f) {
        for (var b = this._bitBuffer, e = this._bitLength;f > e;) {
          b = b << 8 | this.readUnsignedByte(), e += 8;
        }
        e -= f;
        f = b >>> e & g[f];
        this._bitBuffer = b;
        this._bitLength = e;
        return f;
      };
      h.prototype.readFixedBits = function(f) {
        return this.readBits(f) / 65536;
      };
      h.prototype.readString = function(f) {
        var b = this._position;
        if (f) {
          b + f > this._length && throwError("EOFError", Errors.EOFError), this._position += f;
        } else {
          f = 0;
          for (var e = b;e < this._length && this._u8[e];e++) {
            f++;
          }
          this._position += f + 1;
        }
        return u(new Int8Array(this._buffer, b, f));
      };
      h.prototype.align = function() {
        this._bitLength = this._bitBuffer = 0;
      };
      h.prototype.deflate = function() {
        this.compress("deflate");
      };
      h.prototype.inflate = function() {
        this.uncompress("deflate");
      };
      h.prototype.compress = function(f) {
        f = 0 === arguments.length ? "zlib" : n(f);
        var b;
        switch(f) {
          case "zlib":
            b = new k.Deflate(!0);
            break;
          case "deflate":
            b = new k.Deflate(!1);
            break;
          default:
            return;
        }
        var e = new h;
        b.onData = e.writeRawBytes.bind(e);
        b.push(this._u8.subarray(0, this._length));
        b.close();
        this._ensureCapacity(e._u8.length);
        this._u8.set(e._u8);
        this.length = e.length;
        this._position = 0;
      };
      h.prototype.uncompress = function(f) {
        f = 0 === arguments.length ? "zlib" : n(f);
        var b;
        switch(f) {
          case "zlib":
            b = k.Inflate.create(!0);
            break;
          case "deflate":
            b = k.Inflate.create(!1);
            break;
          case "lzma":
            b = new k.LzmaDecoder(!1);
            break;
          default:
            return;
        }
        var e = new h, m;
        b.onData = e.writeRawBytes.bind(e);
        b.onError = function(b) {
          return m = b;
        };
        b.push(this._u8.subarray(0, this._length));
        m && throwError("IOError", Errors.CompressedDataError);
        b.close();
        this._ensureCapacity(e._u8.length);
        this._u8.set(e._u8);
        this.length = e.length;
        this._position = 0;
      };
      h._nativeLittleEndian = 1 === (new Int8Array((new Int32Array([1])).buffer))[0];
      h.INITIAL_SIZE = 128;
      h._arrayBufferPool = new d.ArrayBufferPool;
      return h;
    }();
    k.DataBuffer = q;
  })(d.ArrayUtilities || (d.ArrayUtilities = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  var k = d.ArrayUtilities.DataBuffer, a = d.ArrayUtilities.ensureTypedArrayCapacity;
  (function(a) {
    a[a.BeginSolidFill = 1] = "BeginSolidFill";
    a[a.BeginGradientFill = 2] = "BeginGradientFill";
    a[a.BeginBitmapFill = 3] = "BeginBitmapFill";
    a[a.EndFill = 4] = "EndFill";
    a[a.LineStyleSolid = 5] = "LineStyleSolid";
    a[a.LineStyleGradient = 6] = "LineStyleGradient";
    a[a.LineStyleBitmap = 7] = "LineStyleBitmap";
    a[a.LineEnd = 8] = "LineEnd";
    a[a.MoveTo = 9] = "MoveTo";
    a[a.LineTo = 10] = "LineTo";
    a[a.CurveTo = 11] = "CurveTo";
    a[a.CubicCurveTo = 12] = "CubicCurveTo";
  })(d.PathCommand || (d.PathCommand = {}));
  (function(a) {
    a[a.Linear = 16] = "Linear";
    a[a.Radial = 18] = "Radial";
  })(d.GradientType || (d.GradientType = {}));
  (function(a) {
    a[a.Pad = 0] = "Pad";
    a[a.Reflect = 1] = "Reflect";
    a[a.Repeat = 2] = "Repeat";
  })(d.GradientSpreadMethod || (d.GradientSpreadMethod = {}));
  (function(a) {
    a[a.RGB = 0] = "RGB";
    a[a.LinearRGB = 1] = "LinearRGB";
  })(d.GradientInterpolationMethod || (d.GradientInterpolationMethod = {}));
  (function(a) {
    a[a.None = 0] = "None";
    a[a.Normal = 1] = "Normal";
    a[a.Vertical = 2] = "Vertical";
    a[a.Horizontal = 3] = "Horizontal";
  })(d.LineScaleMode || (d.LineScaleMode = {}));
  var n = function() {
    return function(a, n, l, c, g, q, t, m, h, f, b) {
      this.commands = a;
      this.commandsPosition = n;
      this.coordinates = l;
      this.morphCoordinates = c;
      this.coordinatesPosition = g;
      this.styles = q;
      this.stylesLength = t;
      this.morphStyles = m;
      this.morphStylesLength = h;
      this.hasFills = f;
      this.hasLines = b;
    };
  }();
  d.PlainObjectShapeData = n;
  var w;
  (function(a) {
    a[a.Commands = 32] = "Commands";
    a[a.Coordinates = 128] = "Coordinates";
    a[a.Styles = 16] = "Styles";
  })(w || (w = {}));
  w = function() {
    function d(a) {
      void 0 === a && (a = !0);
      a && this.clear();
    }
    d.FromPlainObject = function(a) {
      var l = new d(!1);
      l.commands = a.commands;
      l.coordinates = a.coordinates;
      l.morphCoordinates = a.morphCoordinates;
      l.commandsPosition = a.commandsPosition;
      l.coordinatesPosition = a.coordinatesPosition;
      l.styles = k.FromArrayBuffer(a.styles, a.stylesLength);
      l.styles.endian = "auto";
      a.morphStyles && (l.morphStyles = k.FromArrayBuffer(a.morphStyles, a.morphStylesLength), l.morphStyles.endian = "auto");
      l.hasFills = a.hasFills;
      l.hasLines = a.hasLines;
      return l;
    };
    d.prototype.moveTo = function(a, l) {
      this.ensurePathCapacities(1, 2);
      this.commands[this.commandsPosition++] = 9;
      this.coordinates[this.coordinatesPosition++] = a;
      this.coordinates[this.coordinatesPosition++] = l;
    };
    d.prototype.lineTo = function(a, l) {
      this.ensurePathCapacities(1, 2);
      this.commands[this.commandsPosition++] = 10;
      this.coordinates[this.coordinatesPosition++] = a;
      this.coordinates[this.coordinatesPosition++] = l;
    };
    d.prototype.curveTo = function(a, l, c, g) {
      this.ensurePathCapacities(1, 4);
      this.commands[this.commandsPosition++] = 11;
      this.coordinates[this.coordinatesPosition++] = a;
      this.coordinates[this.coordinatesPosition++] = l;
      this.coordinates[this.coordinatesPosition++] = c;
      this.coordinates[this.coordinatesPosition++] = g;
    };
    d.prototype.cubicCurveTo = function(a, l, c, g, q, t) {
      this.ensurePathCapacities(1, 6);
      this.commands[this.commandsPosition++] = 12;
      this.coordinates[this.coordinatesPosition++] = a;
      this.coordinates[this.coordinatesPosition++] = l;
      this.coordinates[this.coordinatesPosition++] = c;
      this.coordinates[this.coordinatesPosition++] = g;
      this.coordinates[this.coordinatesPosition++] = q;
      this.coordinates[this.coordinatesPosition++] = t;
    };
    d.prototype.beginFill = function(a) {
      this.ensurePathCapacities(1, 0);
      this.commands[this.commandsPosition++] = 1;
      this.styles.writeUnsignedInt(a);
      this.hasFills = !0;
    };
    d.prototype.writeMorphFill = function(a) {
      this.morphStyles.writeUnsignedInt(a);
    };
    d.prototype.endFill = function() {
      this.ensurePathCapacities(1, 0);
      this.commands[this.commandsPosition++] = 4;
    };
    d.prototype.endLine = function() {
      this.ensurePathCapacities(1, 0);
      this.commands[this.commandsPosition++] = 8;
    };
    d.prototype.lineStyle = function(a, l, c, g, q, t, m) {
      this.ensurePathCapacities(2, 0);
      this.commands[this.commandsPosition++] = 5;
      this.coordinates[this.coordinatesPosition++] = a;
      a = this.styles;
      a.writeUnsignedInt(l);
      a.writeBoolean(c);
      a.writeUnsignedByte(g);
      a.writeUnsignedByte(q);
      a.writeUnsignedByte(t);
      a.writeUnsignedByte(m);
      this.hasLines = !0;
    };
    d.prototype.writeMorphLineStyle = function(a, l) {
      this.morphCoordinates[this.coordinatesPosition - 1] = a;
      this.morphStyles.writeUnsignedInt(l);
    };
    d.prototype.beginBitmap = function(a, l, c, g, q) {
      this.ensurePathCapacities(1, 0);
      this.commands[this.commandsPosition++] = a;
      a = this.styles;
      a.writeUnsignedInt(l);
      this._writeStyleMatrix(c, !1);
      a.writeBoolean(g);
      a.writeBoolean(q);
      this.hasFills = !0;
    };
    d.prototype.writeMorphBitmap = function(a) {
      this._writeStyleMatrix(a, !0);
    };
    d.prototype.beginGradient = function(a, l, c, g, q, t, m, h) {
      this.ensurePathCapacities(1, 0);
      this.commands[this.commandsPosition++] = a;
      a = this.styles;
      a.writeUnsignedByte(g);
      a.writeShort(h);
      this._writeStyleMatrix(q, !1);
      g = l.length;
      a.writeByte(g);
      for (q = 0;q < g;q++) {
        a.writeUnsignedByte(c[q]), a.writeUnsignedInt(l[q]);
      }
      a.writeUnsignedByte(t);
      a.writeUnsignedByte(m);
      this.hasFills = !0;
    };
    d.prototype.writeMorphGradient = function(a, l, c) {
      this._writeStyleMatrix(c, !0);
      c = this.morphStyles;
      for (var g = 0;g < a.length;g++) {
        c.writeUnsignedByte(l[g]), c.writeUnsignedInt(a[g]);
      }
    };
    d.prototype.writeCommandAndCoordinates = function(a, l, c) {
      this.ensurePathCapacities(1, 2);
      this.commands[this.commandsPosition++] = a;
      this.coordinates[this.coordinatesPosition++] = l;
      this.coordinates[this.coordinatesPosition++] = c;
    };
    d.prototype.writeCoordinates = function(a, l) {
      this.ensurePathCapacities(0, 2);
      this.coordinates[this.coordinatesPosition++] = a;
      this.coordinates[this.coordinatesPosition++] = l;
    };
    d.prototype.writeMorphCoordinates = function(n, l) {
      this.morphCoordinates = a(this.morphCoordinates, this.coordinatesPosition);
      this.morphCoordinates[this.coordinatesPosition - 2] = n;
      this.morphCoordinates[this.coordinatesPosition - 1] = l;
    };
    d.prototype.clear = function() {
      this.commandsPosition = this.coordinatesPosition = 0;
      this.commands = new Uint8Array(32);
      this.coordinates = new Int32Array(128);
      this.styles = new k(16);
      this.styles.endian = "auto";
      this.hasFills = this.hasLines = !1;
    };
    d.prototype.isEmpty = function() {
      return 0 === this.commandsPosition;
    };
    d.prototype.clone = function() {
      var a = new d(!1);
      a.commands = new Uint8Array(this.commands);
      a.commandsPosition = this.commandsPosition;
      a.coordinates = new Int32Array(this.coordinates);
      a.coordinatesPosition = this.coordinatesPosition;
      a.styles = new k(this.styles.length);
      a.styles.writeRawBytes(this.styles.bytes);
      this.morphStyles && (a.morphStyles = new k(this.morphStyles.length), a.morphStyles.writeRawBytes(this.morphStyles.bytes));
      a.hasFills = this.hasFills;
      a.hasLines = this.hasLines;
      return a;
    };
    d.prototype.toPlainObject = function() {
      return new n(this.commands, this.commandsPosition, this.coordinates, this.morphCoordinates, this.coordinatesPosition, this.styles.buffer, this.styles.length, this.morphStyles && this.morphStyles.buffer, this.morphStyles ? this.morphStyles.length : 0, this.hasFills, this.hasLines);
    };
    Object.defineProperty(d.prototype, "buffers", {get:function() {
      var a = [this.commands.buffer, this.coordinates.buffer, this.styles.buffer];
      this.morphCoordinates && a.push(this.morphCoordinates.buffer);
      this.morphStyles && a.push(this.morphStyles.buffer);
      return a;
    }, enumerable:!0, configurable:!0});
    d.prototype._writeStyleMatrix = function(a, l) {
      (l ? this.morphStyles : this.styles).write6Floats(a.a, a.b, a.c, a.d, a.tx, a.ty);
    };
    d.prototype.ensurePathCapacities = function(n, l) {
      this.commands = a(this.commands, this.commandsPosition + n);
      this.coordinates = a(this.coordinates, this.coordinatesPosition + l);
    };
    return d;
  }();
  d.ShapeData = w;
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(a) {
        a[a.CODE_END = 0] = "CODE_END";
        a[a.CODE_SHOW_FRAME = 1] = "CODE_SHOW_FRAME";
        a[a.CODE_DEFINE_SHAPE = 2] = "CODE_DEFINE_SHAPE";
        a[a.CODE_FREE_CHARACTER = 3] = "CODE_FREE_CHARACTER";
        a[a.CODE_PLACE_OBJECT = 4] = "CODE_PLACE_OBJECT";
        a[a.CODE_REMOVE_OBJECT = 5] = "CODE_REMOVE_OBJECT";
        a[a.CODE_DEFINE_BITS = 6] = "CODE_DEFINE_BITS";
        a[a.CODE_DEFINE_BUTTON = 7] = "CODE_DEFINE_BUTTON";
        a[a.CODE_JPEG_TABLES = 8] = "CODE_JPEG_TABLES";
        a[a.CODE_SET_BACKGROUND_COLOR = 9] = "CODE_SET_BACKGROUND_COLOR";
        a[a.CODE_DEFINE_FONT = 10] = "CODE_DEFINE_FONT";
        a[a.CODE_DEFINE_TEXT = 11] = "CODE_DEFINE_TEXT";
        a[a.CODE_DO_ACTION = 12] = "CODE_DO_ACTION";
        a[a.CODE_DEFINE_FONT_INFO = 13] = "CODE_DEFINE_FONT_INFO";
        a[a.CODE_DEFINE_SOUND = 14] = "CODE_DEFINE_SOUND";
        a[a.CODE_START_SOUND = 15] = "CODE_START_SOUND";
        a[a.CODE_STOP_SOUND = 16] = "CODE_STOP_SOUND";
        a[a.CODE_DEFINE_BUTTON_SOUND = 17] = "CODE_DEFINE_BUTTON_SOUND";
        a[a.CODE_SOUND_STREAM_HEAD = 18] = "CODE_SOUND_STREAM_HEAD";
        a[a.CODE_SOUND_STREAM_BLOCK = 19] = "CODE_SOUND_STREAM_BLOCK";
        a[a.CODE_DEFINE_BITS_LOSSLESS = 20] = "CODE_DEFINE_BITS_LOSSLESS";
        a[a.CODE_DEFINE_BITS_JPEG2 = 21] = "CODE_DEFINE_BITS_JPEG2";
        a[a.CODE_DEFINE_SHAPE2 = 22] = "CODE_DEFINE_SHAPE2";
        a[a.CODE_DEFINE_BUTTON_CXFORM = 23] = "CODE_DEFINE_BUTTON_CXFORM";
        a[a.CODE_PROTECT = 24] = "CODE_PROTECT";
        a[a.CODE_PATHS_ARE_POSTSCRIPT = 25] = "CODE_PATHS_ARE_POSTSCRIPT";
        a[a.CODE_PLACE_OBJECT2 = 26] = "CODE_PLACE_OBJECT2";
        a[a.CODE_REMOVE_OBJECT2 = 28] = "CODE_REMOVE_OBJECT2";
        a[a.CODE_SYNC_FRAME = 29] = "CODE_SYNC_FRAME";
        a[a.CODE_FREE_ALL = 31] = "CODE_FREE_ALL";
        a[a.CODE_DEFINE_SHAPE3 = 32] = "CODE_DEFINE_SHAPE3";
        a[a.CODE_DEFINE_TEXT2 = 33] = "CODE_DEFINE_TEXT2";
        a[a.CODE_DEFINE_BUTTON2 = 34] = "CODE_DEFINE_BUTTON2";
        a[a.CODE_DEFINE_BITS_JPEG3 = 35] = "CODE_DEFINE_BITS_JPEG3";
        a[a.CODE_DEFINE_BITS_LOSSLESS2 = 36] = "CODE_DEFINE_BITS_LOSSLESS2";
        a[a.CODE_DEFINE_EDIT_TEXT = 37] = "CODE_DEFINE_EDIT_TEXT";
        a[a.CODE_DEFINE_VIDEO = 38] = "CODE_DEFINE_VIDEO";
        a[a.CODE_DEFINE_SPRITE = 39] = "CODE_DEFINE_SPRITE";
        a[a.CODE_NAME_CHARACTER = 40] = "CODE_NAME_CHARACTER";
        a[a.CODE_PRODUCT_INFO = 41] = "CODE_PRODUCT_INFO";
        a[a.CODE_DEFINE_TEXT_FORMAT = 42] = "CODE_DEFINE_TEXT_FORMAT";
        a[a.CODE_FRAME_LABEL = 43] = "CODE_FRAME_LABEL";
        a[a.CODE_DEFINE_BEHAVIOUR = 44] = "CODE_DEFINE_BEHAVIOUR";
        a[a.CODE_SOUND_STREAM_HEAD2 = 45] = "CODE_SOUND_STREAM_HEAD2";
        a[a.CODE_DEFINE_MORPH_SHAPE = 46] = "CODE_DEFINE_MORPH_SHAPE";
        a[a.CODE_GENERATE_FRAME = 47] = "CODE_GENERATE_FRAME";
        a[a.CODE_DEFINE_FONT2 = 48] = "CODE_DEFINE_FONT2";
        a[a.CODE_GEN_COMMAND = 49] = "CODE_GEN_COMMAND";
        a[a.CODE_DEFINE_COMMAND_OBJECT = 50] = "CODE_DEFINE_COMMAND_OBJECT";
        a[a.CODE_CHARACTER_SET = 51] = "CODE_CHARACTER_SET";
        a[a.CODE_EXTERNAL_FONT = 52] = "CODE_EXTERNAL_FONT";
        a[a.CODE_DEFINE_FUNCTION = 53] = "CODE_DEFINE_FUNCTION";
        a[a.CODE_PLACE_FUNCTION = 54] = "CODE_PLACE_FUNCTION";
        a[a.CODE_GEN_TAG_OBJECTS = 55] = "CODE_GEN_TAG_OBJECTS";
        a[a.CODE_EXPORT_ASSETS = 56] = "CODE_EXPORT_ASSETS";
        a[a.CODE_IMPORT_ASSETS = 57] = "CODE_IMPORT_ASSETS";
        a[a.CODE_ENABLE_DEBUGGER = 58] = "CODE_ENABLE_DEBUGGER";
        a[a.CODE_DO_INIT_ACTION = 59] = "CODE_DO_INIT_ACTION";
        a[a.CODE_DEFINE_VIDEO_STREAM = 60] = "CODE_DEFINE_VIDEO_STREAM";
        a[a.CODE_VIDEO_FRAME = 61] = "CODE_VIDEO_FRAME";
        a[a.CODE_DEFINE_FONT_INFO2 = 62] = "CODE_DEFINE_FONT_INFO2";
        a[a.CODE_DEBUG_ID = 63] = "CODE_DEBUG_ID";
        a[a.CODE_ENABLE_DEBUGGER2 = 64] = "CODE_ENABLE_DEBUGGER2";
        a[a.CODE_SCRIPT_LIMITS = 65] = "CODE_SCRIPT_LIMITS";
        a[a.CODE_SET_TAB_INDEX = 66] = "CODE_SET_TAB_INDEX";
        a[a.CODE_FILE_ATTRIBUTES = 69] = "CODE_FILE_ATTRIBUTES";
        a[a.CODE_PLACE_OBJECT3 = 70] = "CODE_PLACE_OBJECT3";
        a[a.CODE_IMPORT_ASSETS2 = 71] = "CODE_IMPORT_ASSETS2";
        a[a.CODE_DO_ABC_DEFINE = 72] = "CODE_DO_ABC_DEFINE";
        a[a.CODE_DEFINE_FONT_ALIGN_ZONES = 73] = "CODE_DEFINE_FONT_ALIGN_ZONES";
        a[a.CODE_CSM_TEXT_SETTINGS = 74] = "CODE_CSM_TEXT_SETTINGS";
        a[a.CODE_DEFINE_FONT3 = 75] = "CODE_DEFINE_FONT3";
        a[a.CODE_SYMBOL_CLASS = 76] = "CODE_SYMBOL_CLASS";
        a[a.CODE_METADATA = 77] = "CODE_METADATA";
        a[a.CODE_DEFINE_SCALING_GRID = 78] = "CODE_DEFINE_SCALING_GRID";
        a[a.CODE_DO_ABC = 82] = "CODE_DO_ABC";
        a[a.CODE_DEFINE_SHAPE4 = 83] = "CODE_DEFINE_SHAPE4";
        a[a.CODE_DEFINE_MORPH_SHAPE2 = 84] = "CODE_DEFINE_MORPH_SHAPE2";
        a[a.CODE_DEFINE_SCENE_AND_FRAME_LABEL_DATA = 86] = "CODE_DEFINE_SCENE_AND_FRAME_LABEL_DATA";
        a[a.CODE_DEFINE_BINARY_DATA = 87] = "CODE_DEFINE_BINARY_DATA";
        a[a.CODE_DEFINE_FONT_NAME = 88] = "CODE_DEFINE_FONT_NAME";
        a[a.CODE_START_SOUND2 = 89] = "CODE_START_SOUND2";
        a[a.CODE_DEFINE_BITS_JPEG4 = 90] = "CODE_DEFINE_BITS_JPEG4";
        a[a.CODE_DEFINE_FONT4 = 91] = "CODE_DEFINE_FONT4";
      })(a.SwfTag || (a.SwfTag = {}));
      (function(a) {
        a[a.CODE_DEFINE_SHAPE = 2] = "CODE_DEFINE_SHAPE";
        a[a.CODE_DEFINE_BITS = 6] = "CODE_DEFINE_BITS";
        a[a.CODE_DEFINE_BUTTON = 7] = "CODE_DEFINE_BUTTON";
        a[a.CODE_DEFINE_FONT = 10] = "CODE_DEFINE_FONT";
        a[a.CODE_DEFINE_TEXT = 11] = "CODE_DEFINE_TEXT";
        a[a.CODE_DEFINE_SOUND = 14] = "CODE_DEFINE_SOUND";
        a[a.CODE_DEFINE_BITS_LOSSLESS = 20] = "CODE_DEFINE_BITS_LOSSLESS";
        a[a.CODE_DEFINE_BITS_JPEG2 = 21] = "CODE_DEFINE_BITS_JPEG2";
        a[a.CODE_DEFINE_SHAPE2 = 22] = "CODE_DEFINE_SHAPE2";
        a[a.CODE_DEFINE_SHAPE3 = 32] = "CODE_DEFINE_SHAPE3";
        a[a.CODE_DEFINE_TEXT2 = 33] = "CODE_DEFINE_TEXT2";
        a[a.CODE_DEFINE_BUTTON2 = 34] = "CODE_DEFINE_BUTTON2";
        a[a.CODE_DEFINE_BITS_JPEG3 = 35] = "CODE_DEFINE_BITS_JPEG3";
        a[a.CODE_DEFINE_BITS_LOSSLESS2 = 36] = "CODE_DEFINE_BITS_LOSSLESS2";
        a[a.CODE_DEFINE_EDIT_TEXT = 37] = "CODE_DEFINE_EDIT_TEXT";
        a[a.CODE_DEFINE_SPRITE = 39] = "CODE_DEFINE_SPRITE";
        a[a.CODE_DEFINE_MORPH_SHAPE = 46] = "CODE_DEFINE_MORPH_SHAPE";
        a[a.CODE_DEFINE_FONT2 = 48] = "CODE_DEFINE_FONT2";
        a[a.CODE_DEFINE_FONT3 = 75] = "CODE_DEFINE_FONT3";
        a[a.CODE_DEFINE_SHAPE4 = 83] = "CODE_DEFINE_SHAPE4";
        a[a.CODE_DEFINE_MORPH_SHAPE2 = 84] = "CODE_DEFINE_MORPH_SHAPE2";
        a[a.CODE_DEFINE_BINARY_DATA = 87] = "CODE_DEFINE_BINARY_DATA";
        a[a.CODE_DEFINE_BITS_JPEG4 = 90] = "CODE_DEFINE_BITS_JPEG4";
        a[a.CODE_DEFINE_FONT4 = 91] = "CODE_DEFINE_FONT4";
      })(a.DefinitionTags || (a.DefinitionTags = {}));
      (function(a) {
        a[a.CODE_DEFINE_BITS = 6] = "CODE_DEFINE_BITS";
        a[a.CODE_DEFINE_BITS_JPEG2 = 21] = "CODE_DEFINE_BITS_JPEG2";
        a[a.CODE_DEFINE_BITS_JPEG3 = 35] = "CODE_DEFINE_BITS_JPEG3";
        a[a.CODE_DEFINE_BITS_JPEG4 = 90] = "CODE_DEFINE_BITS_JPEG4";
      })(a.ImageDefinitionTags || (a.ImageDefinitionTags = {}));
      (function(a) {
        a[a.CODE_DEFINE_FONT = 10] = "CODE_DEFINE_FONT";
        a[a.CODE_DEFINE_FONT2 = 48] = "CODE_DEFINE_FONT2";
        a[a.CODE_DEFINE_FONT3 = 75] = "CODE_DEFINE_FONT3";
        a[a.CODE_DEFINE_FONT4 = 91] = "CODE_DEFINE_FONT4";
      })(a.FontDefinitionTags || (a.FontDefinitionTags = {}));
      (function(a) {
        a[a.CODE_PLACE_OBJECT = 4] = "CODE_PLACE_OBJECT";
        a[a.CODE_PLACE_OBJECT2 = 26] = "CODE_PLACE_OBJECT2";
        a[a.CODE_PLACE_OBJECT3 = 70] = "CODE_PLACE_OBJECT3";
        a[a.CODE_REMOVE_OBJECT = 5] = "CODE_REMOVE_OBJECT";
        a[a.CODE_REMOVE_OBJECT2 = 28] = "CODE_REMOVE_OBJECT2";
        a[a.CODE_START_SOUND = 15] = "CODE_START_SOUND";
        a[a.CODE_START_SOUND2 = 89] = "CODE_START_SOUND2";
      })(a.ControlTags || (a.ControlTags = {}));
      (function(a) {
        a[a.Move = 1] = "Move";
        a[a.HasCharacter = 2] = "HasCharacter";
        a[a.HasMatrix = 4] = "HasMatrix";
        a[a.HasColorTransform = 8] = "HasColorTransform";
        a[a.HasRatio = 16] = "HasRatio";
        a[a.HasName = 32] = "HasName";
        a[a.HasClipDepth = 64] = "HasClipDepth";
        a[a.HasClipActions = 128] = "HasClipActions";
        a[a.HasFilterList = 256] = "HasFilterList";
        a[a.HasBlendMode = 512] = "HasBlendMode";
        a[a.HasCacheAsBitmap = 1024] = "HasCacheAsBitmap";
        a[a.HasClassName = 2048] = "HasClassName";
        a[a.HasImage = 4096] = "HasImage";
        a[a.HasVisible = 8192] = "HasVisible";
        a[a.OpaqueBackground = 16384] = "OpaqueBackground";
        a[a.Reserved = 32768] = "Reserved";
      })(a.PlaceObjectFlags || (a.PlaceObjectFlags = {}));
      (function(a) {
        a[a.Load = 1] = "Load";
        a[a.EnterFrame = 2] = "EnterFrame";
        a[a.Unload = 4] = "Unload";
        a[a.MouseMove = 8] = "MouseMove";
        a[a.MouseDown = 16] = "MouseDown";
        a[a.MouseUp = 32] = "MouseUp";
        a[a.KeyDown = 64] = "KeyDown";
        a[a.KeyUp = 128] = "KeyUp";
        a[a.Data = 256] = "Data";
        a[a.Initialize = 512] = "Initialize";
        a[a.Press = 1024] = "Press";
        a[a.Release = 2048] = "Release";
        a[a.ReleaseOutside = 4096] = "ReleaseOutside";
        a[a.RollOver = 8192] = "RollOver";
        a[a.RollOut = 16384] = "RollOut";
        a[a.DragOver = 32768] = "DragOver";
        a[a.DragOut = 65536] = "DragOut";
        a[a.KeyPress = 131072] = "KeyPress";
        a[a.Construct = 262144] = "Construct";
      })(a.AVM1ClipEvents || (a.AVM1ClipEvents = {}));
    })(d.Parser || (d.Parser = {}));
  })(d.SWF || (d.SWF = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  var k = d.Debug.unexpected, a = function() {
    function a(d, n, u, l) {
      this.url = d;
      this.method = n;
      this.mimeType = u;
      this.data = l;
    }
    a.prototype.readAll = function(a, d) {
      var u = this.url, l = new XMLHttpRequest({mozSystem:!0});
      l.open(this.method || "GET", this.url, !0);
      l.responseType = "arraybuffer";
      a && (l.onprogress = function(c) {
        a(l.response, c.loaded, c.total);
      });
      l.onreadystatechange = function(c) {
        4 === l.readyState && (200 !== l.status && 0 !== l.status || null === l.response ? (k("Path: " + u + " not found."), d(null, l.statusText)) : d(l.response));
      };
      this.mimeType && l.setRequestHeader("Content-Type", this.mimeType);
      l.send(this.data || null);
    };
    a.prototype.readChunked = function(a, d, u, l, c, g) {
      if (0 >= a) {
        this.readAsync(d, u, l, c, g);
      } else {
        var q = 0, t = new Uint8Array(a), m = 0, h;
        this.readAsync(function(f, b) {
          h = b.total;
          for (var e = f.length, r = 0;q + e >= a;) {
            var p = a - q;
            t.set(f.subarray(r, r + p), q);
            r += p;
            e -= p;
            m += a;
            d(t, {loaded:m, total:h});
            q = 0;
          }
          t.set(f.subarray(r), q);
          q += e;
        }, u, l, function() {
          0 < q && (m += q, d(t.subarray(0, q), {loaded:m, total:h}), q = 0);
          c && c();
        }, g);
      }
    };
    a.prototype.readAsync = function(a, d, u, l, c) {
      var g = new XMLHttpRequest({mozSystem:!0}), q = this.url, t = 0, m = 0;
      g.open(this.method || "GET", q, !0);
      g.responseType = "moz-chunked-arraybuffer";
      var h = "moz-chunked-arraybuffer" !== g.responseType;
      h && (g.responseType = "arraybuffer");
      g.onprogress = function(f) {
        h || (t = f.loaded, m = f.total, a(new Uint8Array(g.response), {loaded:t, total:m}));
      };
      g.onreadystatechange = function(f) {
        2 === g.readyState && c && c(q, g.status, g.getAllResponseHeaders());
        4 === g.readyState && (200 !== g.status && 0 !== g.status || null === g.response && (0 === m || t !== m) ? d(g.statusText) : (h && (f = g.response, a(new Uint8Array(f), {loaded:0, total:f.byteLength})), l && l()));
      };
      this.mimeType && g.setRequestHeader("Content-Type", this.mimeType);
      g.send(this.data || null);
      u && u();
    };
    return a;
  }();
  d.BinaryFileReader = a;
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      a[a.Objects = 0] = "Objects";
      a[a.References = 1] = "References";
    })(d.RemotingPhase || (d.RemotingPhase = {}));
    (function(a) {
      a[a.HasMatrix = 1] = "HasMatrix";
      a[a.HasBounds = 2] = "HasBounds";
      a[a.HasChildren = 4] = "HasChildren";
      a[a.HasColorTransform = 8] = "HasColorTransform";
      a[a.HasClipRect = 16] = "HasClipRect";
      a[a.HasMiscellaneousProperties = 32] = "HasMiscellaneousProperties";
      a[a.HasMask = 64] = "HasMask";
      a[a.HasClip = 128] = "HasClip";
    })(d.MessageBits || (d.MessageBits = {}));
    (function(a) {
      a[a.None = 0] = "None";
      a[a.Asset = 134217728] = "Asset";
    })(d.IDMask || (d.IDMask = {}));
    (function(a) {
      a[a.EOF = 0] = "EOF";
      a[a.UpdateFrame = 100] = "UpdateFrame";
      a[a.UpdateGraphics = 101] = "UpdateGraphics";
      a[a.UpdateBitmapData = 102] = "UpdateBitmapData";
      a[a.UpdateTextContent = 103] = "UpdateTextContent";
      a[a.UpdateStage = 104] = "UpdateStage";
      a[a.UpdateNetStream = 105] = "UpdateNetStream";
      a[a.RequestBitmapData = 106] = "RequestBitmapData";
      a[a.DrawToBitmap = 200] = "DrawToBitmap";
      a[a.MouseEvent = 300] = "MouseEvent";
      a[a.KeyboardEvent = 301] = "KeyboardEvent";
      a[a.FocusEvent = 302] = "FocusEvent";
    })(d.MessageTag || (d.MessageTag = {}));
    (function(a) {
      a[a.Blur = 0] = "Blur";
      a[a.DropShadow = 1] = "DropShadow";
    })(d.FilterType || (d.FilterType = {}));
    (function(a) {
      a[a.Identity = 0] = "Identity";
      a[a.AlphaMultiplierOnly = 1] = "AlphaMultiplierOnly";
      a[a.All = 2] = "All";
    })(d.ColorTransformEncoding || (d.ColorTransformEncoding = {}));
    (function(a) {
      a[a.Initialized = 0] = "Initialized";
      a[a.Metadata = 1] = "Metadata";
      a[a.PlayStart = 2] = "PlayStart";
      a[a.PlayStop = 3] = "PlayStop";
      a[a.BufferEmpty = 4] = "BufferEmpty";
      a[a.BufferFull = 5] = "BufferFull";
      a[a.Pause = 6] = "Pause";
      a[a.Unpause = 7] = "Unpause";
      a[a.Seeking = 8] = "Seeking";
      a[a.Seeked = 9] = "Seeked";
      a[a.Progress = 10] = "Progress";
      a[a.Error = 11] = "Error";
    })(d.VideoPlaybackEvent || (d.VideoPlaybackEvent = {}));
    (function(a) {
      a[a.Init = 1] = "Init";
      a[a.Pause = 2] = "Pause";
      a[a.Seek = 3] = "Seek";
      a[a.GetTime = 4] = "GetTime";
      a[a.GetBufferLength = 5] = "GetBufferLength";
      a[a.SetSoundLevels = 6] = "SetSoundLevels";
      a[a.GetBytesLoaded = 7] = "GetBytesLoaded";
      a[a.GetBytesTotal = 8] = "GetBytesTotal";
      a[a.EnsurePlaying = 9] = "EnsurePlaying";
    })(d.VideoControlEvent || (d.VideoControlEvent = {}));
    (function(a) {
      a[a.ShowAll = 0] = "ShowAll";
      a[a.ExactFit = 1] = "ExactFit";
      a[a.NoBorder = 2] = "NoBorder";
      a[a.NoScale = 4] = "NoScale";
    })(d.StageScaleMode || (d.StageScaleMode = {}));
    (function(a) {
      a[a.None = 0] = "None";
      a[a.Top = 1] = "Top";
      a[a.Bottom = 2] = "Bottom";
      a[a.Left = 4] = "Left";
      a[a.Right = 8] = "Right";
      a[a.TopLeft = a.Top | a.Left] = "TopLeft";
      a[a.BottomLeft = a.Bottom | a.Left] = "BottomLeft";
      a[a.BottomRight = a.Bottom | a.Right] = "BottomRight";
      a[a.TopRight = a.Top | a.Right] = "TopRight";
    })(d.StageAlignFlags || (d.StageAlignFlags = {}));
    d.MouseEventNames = "click dblclick mousedown mousemove mouseup mouseover mouseout".split(" ");
    d.KeyboardEventNames = ["keydown", "keypress", "keyup"];
    (function(a) {
      a[a.CtrlKey = 1] = "CtrlKey";
      a[a.AltKey = 2] = "AltKey";
      a[a.ShiftKey = 4] = "ShiftKey";
    })(d.KeyboardEventFlags || (d.KeyboardEventFlags = {}));
    (function(a) {
      a[a.DocumentHidden = 0] = "DocumentHidden";
      a[a.DocumentVisible = 1] = "DocumentVisible";
      a[a.WindowBlur = 2] = "WindowBlur";
      a[a.WindowFocus = 3] = "WindowFocus";
    })(d.FocusEventType || (d.FocusEventType = {}));
  })(d.Remoting || (d.Remoting = {}));
})(Shumway || (Shumway = {}));
var throwError, Errors;
(function(d) {
  (function(d) {
    (function(a) {
      var d = function() {
        function a() {
        }
        a.toRGBA = function(a, l, c, g) {
          void 0 === g && (g = 1);
          return "rgba(" + a + "," + l + "," + c + "," + g + ")";
        };
        return a;
      }();
      a.UI = d;
      var k = function() {
        function a() {
        }
        a.prototype.tabToolbar = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(37, 44, 51, a);
        };
        a.prototype.toolbars = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(52, 60, 69, a);
        };
        a.prototype.selectionBackground = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(29, 79, 115, a);
        };
        a.prototype.selectionText = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(245, 247, 250, a);
        };
        a.prototype.splitters = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(0, 0, 0, a);
        };
        a.prototype.bodyBackground = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(17, 19, 21, a);
        };
        a.prototype.sidebarBackground = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(24, 29, 32, a);
        };
        a.prototype.attentionBackground = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(161, 134, 80, a);
        };
        a.prototype.bodyText = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(143, 161, 178, a);
        };
        a.prototype.foregroundTextGrey = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(182, 186, 191, a);
        };
        a.prototype.contentTextHighContrast = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(169, 186, 203, a);
        };
        a.prototype.contentTextGrey = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(143, 161, 178, a);
        };
        a.prototype.contentTextDarkGrey = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(95, 115, 135, a);
        };
        a.prototype.blueHighlight = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(70, 175, 227, a);
        };
        a.prototype.purpleHighlight = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(107, 122, 187, a);
        };
        a.prototype.pinkHighlight = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(223, 128, 255, a);
        };
        a.prototype.redHighlight = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(235, 83, 104, a);
        };
        a.prototype.orangeHighlight = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(217, 102, 41, a);
        };
        a.prototype.lightOrangeHighlight = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(217, 155, 40, a);
        };
        a.prototype.greenHighlight = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(112, 191, 83, a);
        };
        a.prototype.blueGreyHighlight = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(94, 136, 176, a);
        };
        return a;
      }();
      a.UIThemeDark = k;
      k = function() {
        function a() {
        }
        a.prototype.tabToolbar = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(235, 236, 237, a);
        };
        a.prototype.toolbars = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(240, 241, 242, a);
        };
        a.prototype.selectionBackground = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(76, 158, 217, a);
        };
        a.prototype.selectionText = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(245, 247, 250, a);
        };
        a.prototype.splitters = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(170, 170, 170, a);
        };
        a.prototype.bodyBackground = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(252, 252, 252, a);
        };
        a.prototype.sidebarBackground = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(247, 247, 247, a);
        };
        a.prototype.attentionBackground = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(161, 134, 80, a);
        };
        a.prototype.bodyText = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(24, 25, 26, a);
        };
        a.prototype.foregroundTextGrey = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(88, 89, 89, a);
        };
        a.prototype.contentTextHighContrast = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(41, 46, 51, a);
        };
        a.prototype.contentTextGrey = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(143, 161, 178, a);
        };
        a.prototype.contentTextDarkGrey = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(102, 115, 128, a);
        };
        a.prototype.blueHighlight = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(0, 136, 204, a);
        };
        a.prototype.purpleHighlight = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(91, 95, 255, a);
        };
        a.prototype.pinkHighlight = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(184, 46, 229, a);
        };
        a.prototype.redHighlight = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(237, 38, 85, a);
        };
        a.prototype.orangeHighlight = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(241, 60, 0, a);
        };
        a.prototype.lightOrangeHighlight = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(217, 126, 0, a);
        };
        a.prototype.greenHighlight = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(44, 187, 15, a);
        };
        a.prototype.blueGreyHighlight = function(a) {
          void 0 === a && (a = 1);
          return d.toRGBA(95, 136, 176, a);
        };
        return a;
      }();
      a.UIThemeLight = k;
    })(d.Theme || (d.Theme = {}));
  })(d.Tools || (d.Tools = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      var d = function() {
        function a(d, u) {
          this._buffers = d || [];
          this._snapshots = [];
          this._windowStart = this._startTime = u;
          this._maxDepth = 0;
        }
        a.prototype.addBuffer = function(a) {
          this._buffers.push(a);
        };
        a.prototype.getSnapshotAt = function(a) {
          return this._snapshots[a];
        };
        Object.defineProperty(a.prototype, "hasSnapshots", {get:function() {
          return 0 < this.snapshotCount;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "snapshotCount", {get:function() {
          return this._snapshots.length;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "startTime", {get:function() {
          return this._startTime;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "endTime", {get:function() {
          return this._endTime;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "totalTime", {get:function() {
          return this.endTime - this.startTime;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "windowStart", {get:function() {
          return this._windowStart;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "windowEnd", {get:function() {
          return this._windowEnd;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "windowLength", {get:function() {
          return this.windowEnd - this.windowStart;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "maxDepth", {get:function() {
          return this._maxDepth;
        }, enumerable:!0, configurable:!0});
        a.prototype.forEachSnapshot = function(a) {
          for (var d = 0, l = this.snapshotCount;d < l;d++) {
            a(this._snapshots[d], d);
          }
        };
        a.prototype.createSnapshots = function() {
          var a = Number.MIN_VALUE, d = 0;
          for (this._snapshots = [];0 < this._buffers.length;) {
            var l = this._buffers.shift().createSnapshot();
            l && (a < l.endTime && (a = l.endTime), d < l.maxDepth && (d = l.maxDepth), this._snapshots.push(l));
          }
          this._windowEnd = this._endTime = a;
          this._maxDepth = d;
        };
        a.prototype.setWindow = function(a, d) {
          if (a > d) {
            var l = a;
            a = d;
            d = l;
          }
          l = Math.min(d - a, this.totalTime);
          a < this._startTime ? (a = this._startTime, d = this._startTime + l) : d > this._endTime && (a = this._endTime - l, d = this._endTime);
          this._windowStart = a;
          this._windowEnd = d;
        };
        a.prototype.moveWindowTo = function(a) {
          this.setWindow(a - this.windowLength / 2, a + this.windowLength / 2);
        };
        return a;
      }();
      a.Profile = d;
    })(d.Profiler || (d.Profiler = {}));
  })(d.Tools || (d.Tools = {}));
})(Shumway || (Shumway = {}));
__extends = this.__extends || function(d, k) {
  function a() {
    this.constructor = d;
  }
  for (var n in k) {
    k.hasOwnProperty(n) && (d[n] = k[n]);
  }
  a.prototype = k.prototype;
  d.prototype = new a;
};
(function(d) {
  (function(d) {
    (function(a) {
      var d = function() {
        return function(a) {
          this.kind = a;
          this.totalTime = this.selfTime = this.count = 0;
        };
      }();
      a.TimelineFrameStatistics = d;
      var k = function() {
        function a(d, l, c, g, q, t) {
          this.parent = d;
          this.kind = l;
          this.startData = c;
          this.endData = g;
          this.startTime = q;
          this.endTime = t;
          this.maxDepth = 0;
        }
        Object.defineProperty(a.prototype, "totalTime", {get:function() {
          return this.endTime - this.startTime;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "selfTime", {get:function() {
          var a = this.totalTime;
          if (this.children) {
            for (var l = 0, c = this.children.length;l < c;l++) {
              var g = this.children[l], a = a - (g.endTime - g.startTime)
            }
          }
          return a;
        }, enumerable:!0, configurable:!0});
        a.prototype.getChildIndex = function(a) {
          for (var l = this.children, c = 0;c < l.length;c++) {
            if (l[c].endTime > a) {
              return c;
            }
          }
          return 0;
        };
        a.prototype.getChildRange = function(a, l) {
          if (this.children && a <= this.endTime && l >= this.startTime && l >= a) {
            var c = this._getNearestChild(a), g = this._getNearestChildReverse(l);
            if (c <= g) {
              return a = this.children[c].startTime, l = this.children[g].endTime, {startIndex:c, endIndex:g, startTime:a, endTime:l, totalTime:l - a};
            }
          }
          return null;
        };
        a.prototype._getNearestChild = function(a) {
          var l = this.children;
          if (l && l.length) {
            if (a <= l[0].endTime) {
              return 0;
            }
            for (var c, g = 0, q = l.length - 1;q > g;) {
              c = (g + q) / 2 | 0;
              var t = l[c];
              if (a >= t.startTime && a <= t.endTime) {
                return c;
              }
              a > t.endTime ? g = c + 1 : q = c;
            }
            return Math.ceil((g + q) / 2);
          }
          return 0;
        };
        a.prototype._getNearestChildReverse = function(a) {
          var l = this.children;
          if (l && l.length) {
            var c = l.length - 1;
            if (a >= l[c].startTime) {
              return c;
            }
            for (var g, q = 0;c > q;) {
              g = Math.ceil((q + c) / 2);
              var t = l[g];
              if (a >= t.startTime && a <= t.endTime) {
                return g;
              }
              a > t.endTime ? q = g : c = g - 1;
            }
            return (q + c) / 2 | 0;
          }
          return 0;
        };
        a.prototype.query = function(a) {
          if (a < this.startTime || a > this.endTime) {
            return null;
          }
          var l = this.children;
          if (l && 0 < l.length) {
            for (var c, g = 0, q = l.length - 1;q > g;) {
              var t = (g + q) / 2 | 0;
              c = l[t];
              if (a >= c.startTime && a <= c.endTime) {
                return c.query(a);
              }
              a > c.endTime ? g = t + 1 : q = t;
            }
            c = l[q];
            if (a >= c.startTime && a <= c.endTime) {
              return c.query(a);
            }
          }
          return this;
        };
        a.prototype.queryNext = function(a) {
          for (var l = this;a > l.endTime;) {
            if (l.parent) {
              l = l.parent;
            } else {
              break;
            }
          }
          return l.query(a);
        };
        a.prototype.getDepth = function() {
          for (var a = 0, l = this;l;) {
            a++, l = l.parent;
          }
          return a;
        };
        a.prototype.calculateStatistics = function() {
          function a(c) {
            if (c.kind) {
              var g = l[c.kind.id] || (l[c.kind.id] = new d(c.kind));
              g.count++;
              g.selfTime += c.selfTime;
              g.totalTime += c.totalTime;
            }
            c.children && c.children.forEach(a);
          }
          var l = this.statistics = [];
          a(this);
        };
        a.prototype.trace = function(a) {
          var l = (this.kind ? this.kind.name + ": " : "Profile: ") + (this.endTime - this.startTime).toFixed(2);
          if (this.children && this.children.length) {
            a.enter(l);
            for (l = 0;l < this.children.length;l++) {
              this.children[l].trace(a);
            }
            a.outdent();
          } else {
            a.writeLn(l);
          }
        };
        return a;
      }();
      a.TimelineFrame = k;
      k = function(a) {
        function d(l) {
          a.call(this, null, null, null, null, NaN, NaN);
          this.name = l;
        }
        __extends(d, a);
        return d;
      }(k);
      a.TimelineBufferSnapshot = k;
    })(d.Profiler || (d.Profiler = {}));
  })(d.Tools || (d.Tools = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var n = function() {
        function n(a, u) {
          void 0 === a && (a = "");
          this.name = a || "";
          this._startTime = d.isNullOrUndefined(u) ? jsGlobal.START_TIME : u;
        }
        n.prototype.getKind = function(a) {
          return this._kinds[a];
        };
        Object.defineProperty(n.prototype, "kinds", {get:function() {
          return this._kinds.concat();
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(n.prototype, "depth", {get:function() {
          return this._depth;
        }, enumerable:!0, configurable:!0});
        n.prototype._initialize = function() {
          this._depth = 0;
          this._stack = [];
          this._data = [];
          this._kinds = [];
          this._kindNameMap = Object.create(null);
          this._marks = new d.CircularBuffer(Int32Array, 20);
          this._times = new d.CircularBuffer(Float64Array, 20);
        };
        n.prototype._getKindId = function(a) {
          var d = n.MAX_KINDID;
          if (void 0 === this._kindNameMap[a]) {
            if (d = this._kinds.length, d < n.MAX_KINDID) {
              var l = {id:d, name:a, visible:!0};
              this._kinds.push(l);
              this._kindNameMap[a] = l;
            } else {
              d = n.MAX_KINDID;
            }
          } else {
            d = this._kindNameMap[a].id;
          }
          return d;
        };
        n.prototype._getMark = function(a, u, l) {
          var c = n.MAX_DATAID;
          d.isNullOrUndefined(l) || u === n.MAX_KINDID || (c = this._data.length, c < n.MAX_DATAID ? this._data.push(l) : c = n.MAX_DATAID);
          return a | c << 16 | u;
        };
        n.prototype.enter = function(a, u, l) {
          l = (d.isNullOrUndefined(l) ? performance.now() : l) - this._startTime;
          this._marks || this._initialize();
          this._depth++;
          a = this._getKindId(a);
          this._marks.write(this._getMark(n.ENTER, a, u));
          this._times.write(l);
          this._stack.push(a);
        };
        n.prototype.leave = function(a, u, l) {
          l = (d.isNullOrUndefined(l) ? performance.now() : l) - this._startTime;
          var c = this._stack.pop();
          a && (c = this._getKindId(a));
          this._marks.write(this._getMark(n.LEAVE, c, u));
          this._times.write(l);
          this._depth--;
        };
        n.prototype.count = function(a, d, l) {
        };
        n.prototype.createSnapshot = function() {
          var v;
          void 0 === v && (v = Number.MAX_VALUE);
          if (!this._marks) {
            return null;
          }
          var u = this._times, l = this._kinds, c = this._data, g = new a.TimelineBufferSnapshot(this.name), q = [g], t = 0;
          this._marks || this._initialize();
          this._marks.forEachInReverse(function(m, h) {
            var f = c[m >>> 16 & n.MAX_DATAID], b = l[m & n.MAX_KINDID];
            if (d.isNullOrUndefined(b) || b.visible) {
              var e = m & 2147483648, r = u.get(h), p = q.length;
              if (e === n.LEAVE) {
                if (1 === p && (t++, t > v)) {
                  return !0;
                }
                q.push(new a.TimelineFrame(q[p - 1], b, null, f, NaN, r));
              } else {
                if (e === n.ENTER) {
                  if (b = q.pop(), e = q[q.length - 1]) {
                    for (e.children ? e.children.unshift(b) : e.children = [b], e = q.length, b.depth = e, b.startData = f, b.startTime = r;b;) {
                      if (b.maxDepth < e) {
                        b.maxDepth = e, b = b.parent;
                      } else {
                        break;
                      }
                    }
                  } else {
                    return !0;
                  }
                }
              }
            }
          });
          g.children && g.children.length && (g.startTime = g.children[0].startTime, g.endTime = g.children[g.children.length - 1].endTime);
          return g;
        };
        n.prototype.reset = function(a) {
          this._startTime = d.isNullOrUndefined(a) ? performance.now() : a;
          this._marks ? (this._depth = 0, this._data = [], this._marks.reset(), this._times.reset()) : this._initialize();
        };
        n.FromFirefoxProfile = function(a, d) {
          for (var l = a.profile.threads[0].samples, c = new n(d, l[0].time), g = [], q, t = 0;t < l.length;t++) {
            q = l[t];
            var m = q.time, h = q.frames, f = 0;
            for (q = Math.min(h.length, g.length);f < q && h[f].location === g[f].location;) {
              f++;
            }
            for (var b = g.length - f, e = 0;e < b;e++) {
              q = g.pop(), c.leave(q.location, null, m);
            }
            for (;f < h.length;) {
              q = h[f++], c.enter(q.location, null, m);
            }
            g = h;
          }
          for (;q = g.pop();) {
            c.leave(q.location, null, m);
          }
          return c;
        };
        n.FromChromeProfile = function(a, d) {
          var l = a.timestamps, c = a.samples, g = new n(d, l[0] / 1E3), q = [], t = {}, m;
          n._resolveIds(a.head, t);
          for (var h = 0;h < l.length;h++) {
            var f = l[h] / 1E3, b = [];
            for (m = t[c[h]];m;) {
              b.unshift(m), m = m.parent;
            }
            var e = 0;
            for (m = Math.min(b.length, q.length);e < m && b[e] === q[e];) {
              e++;
            }
            for (var r = q.length - e, p = 0;p < r;p++) {
              m = q.pop(), g.leave(m.functionName, null, f);
            }
            for (;e < b.length;) {
              m = b[e++], g.enter(m.functionName, null, f);
            }
            q = b;
          }
          for (;m = q.pop();) {
            g.leave(m.functionName, null, f);
          }
          return g;
        };
        n._resolveIds = function(a, d) {
          d[a.id] = a;
          if (a.children) {
            for (var l = 0;l < a.children.length;l++) {
              a.children[l].parent = a, n._resolveIds(a.children[l], d);
            }
          }
        };
        n.ENTER = 0;
        n.LEAVE = -2147483648;
        n.MAX_KINDID = 65535;
        n.MAX_DATAID = 32767;
        return n;
      }();
      a.TimelineBuffer = n;
    })(k.Profiler || (k.Profiler = {}));
  })(d.Tools || (d.Tools = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        a[a.DARK = 0] = "DARK";
        a[a.LIGHT = 1] = "LIGHT";
      })(a.UIThemeType || (a.UIThemeType = {}));
      var n = function() {
        function n(a, d) {
          void 0 === d && (d = 0);
          this._container = a;
          this._headers = [];
          this._charts = [];
          this._profiles = [];
          this._activeProfile = null;
          this.themeType = d;
          this._tooltip = this._createTooltip();
        }
        n.prototype.createProfile = function(d, n) {
          var l = new a.Profile(d, n);
          l.createSnapshots();
          this._profiles.push(l);
          this.activateProfile(l);
          return l;
        };
        n.prototype.activateProfile = function(a) {
          this.deactivateProfile();
          this._activeProfile = a;
          this._createViews();
          this._initializeViews();
        };
        n.prototype.activateProfileAt = function(a) {
          this.activateProfile(this.getProfileAt(a));
        };
        n.prototype.deactivateProfile = function() {
          this._activeProfile && (this._destroyViews(), this._activeProfile = null);
        };
        n.prototype.resize = function() {
          this._onResize();
        };
        n.prototype.getProfileAt = function(a) {
          return this._profiles[a];
        };
        Object.defineProperty(n.prototype, "activeProfile", {get:function() {
          return this._activeProfile;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(n.prototype, "profileCount", {get:function() {
          return this._profiles.length;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(n.prototype, "container", {get:function() {
          return this._container;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(n.prototype, "themeType", {get:function() {
          return this._themeType;
        }, set:function(a) {
          switch(a) {
            case 0:
              this._theme = new k.Theme.UIThemeDark;
              break;
            case 1:
              this._theme = new k.Theme.UIThemeLight;
          }
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(n.prototype, "theme", {get:function() {
          return this._theme;
        }, enumerable:!0, configurable:!0});
        n.prototype.getSnapshotAt = function(a) {
          return this._activeProfile.getSnapshotAt(a);
        };
        n.prototype._createViews = function() {
          if (this._activeProfile) {
            var d = this;
            this._overviewHeader = new a.FlameChartHeader(this, 0);
            this._overview = new a.FlameChartOverview(this, 0);
            this._activeProfile.forEachSnapshot(function(n, l) {
              d._headers.push(new a.FlameChartHeader(d, 1));
              d._charts.push(new a.FlameChart(d, n));
            });
            window.addEventListener("resize", this._onResize.bind(this));
          }
        };
        n.prototype._destroyViews = function() {
          if (this._activeProfile) {
            this._overviewHeader.destroy();
            for (this._overview.destroy();this._headers.length;) {
              this._headers.pop().destroy();
            }
            for (;this._charts.length;) {
              this._charts.pop().destroy();
            }
            window.removeEventListener("resize", this._onResize.bind(this));
          }
        };
        n.prototype._initializeViews = function() {
          if (this._activeProfile) {
            var a = this, d = this._activeProfile.startTime, l = this._activeProfile.endTime;
            this._overviewHeader.initialize(d, l);
            this._overview.initialize(d, l);
            this._activeProfile.forEachSnapshot(function(c, g) {
              a._headers[g].initialize(d, l);
              a._charts[g].initialize(d, l);
            });
          }
        };
        n.prototype._onResize = function() {
          if (this._activeProfile) {
            var a = this, d = this._container.offsetWidth;
            this._overviewHeader.setSize(d);
            this._overview.setSize(d);
            this._activeProfile.forEachSnapshot(function(l, c) {
              a._headers[c].setSize(d);
              a._charts[c].setSize(d);
            });
          }
        };
        n.prototype._updateViews = function() {
          if (this._activeProfile) {
            var a = this, d = this._activeProfile.windowStart, l = this._activeProfile.windowEnd;
            this._overviewHeader.setWindow(d, l);
            this._overview.setWindow(d, l);
            this._activeProfile.forEachSnapshot(function(c, g) {
              a._headers[g].setWindow(d, l);
              a._charts[g].setWindow(d, l);
            });
          }
        };
        n.prototype._drawViews = function() {
        };
        n.prototype._createTooltip = function() {
          var a = document.createElement("div");
          a.classList.add("profiler-tooltip");
          a.style.display = "none";
          this._container.insertBefore(a, this._container.firstChild);
          return a;
        };
        n.prototype.setWindow = function(a, d) {
          this._activeProfile.setWindow(a, d);
          this._updateViews();
        };
        n.prototype.moveWindowTo = function(a) {
          this._activeProfile.moveWindowTo(a);
          this._updateViews();
        };
        n.prototype.showTooltip = function(a, d, l, c) {
          this.removeTooltipContent();
          this._tooltip.appendChild(this.createTooltipContent(a, d));
          this._tooltip.style.display = "block";
          var g = this._tooltip.firstChild;
          d = g.clientWidth;
          g = g.clientHeight;
          l += l + d >= a.canvas.clientWidth - 50 ? -(d + 20) : 25;
          c += a.canvas.offsetTop - g / 2;
          this._tooltip.style.left = l + "px";
          this._tooltip.style.top = c + "px";
        };
        n.prototype.hideTooltip = function() {
          this._tooltip.style.display = "none";
        };
        n.prototype.createTooltipContent = function(a, d) {
          var l = Math.round(1E5 * d.totalTime) / 1E5, c = Math.round(1E5 * d.selfTime) / 1E5, g = Math.round(1E4 * d.selfTime / d.totalTime) / 100, q = document.createElement("div"), t = document.createElement("h1");
          t.textContent = d.kind.name;
          q.appendChild(t);
          t = document.createElement("p");
          t.textContent = "Total: " + l + " ms";
          q.appendChild(t);
          l = document.createElement("p");
          l.textContent = "Self: " + c + " ms (" + g + "%)";
          q.appendChild(l);
          if (c = a.getStatistics(d.kind)) {
            g = document.createElement("p"), g.textContent = "Count: " + c.count, q.appendChild(g), g = Math.round(1E5 * c.totalTime) / 1E5, l = document.createElement("p"), l.textContent = "All Total: " + g + " ms", q.appendChild(l), c = Math.round(1E5 * c.selfTime) / 1E5, g = document.createElement("p"), g.textContent = "All Self: " + c + " ms", q.appendChild(g);
          }
          this.appendDataElements(q, d.startData);
          this.appendDataElements(q, d.endData);
          return q;
        };
        n.prototype.appendDataElements = function(a, n) {
          if (!d.isNullOrUndefined(n)) {
            a.appendChild(document.createElement("hr"));
            var l;
            if (d.isObject(n)) {
              for (var c in n) {
                l = document.createElement("p"), l.textContent = c + ": " + n[c], a.appendChild(l);
              }
            } else {
              l = document.createElement("p"), l.textContent = n.toString(), a.appendChild(l);
            }
          }
        };
        n.prototype.removeTooltipContent = function() {
          for (var a = this._tooltip;a.firstChild;) {
            a.removeChild(a.firstChild);
          }
        };
        return n;
      }();
      a.Controller = n;
    })(k.Profiler || (k.Profiler = {}));
  })(d.Tools || (d.Tools = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var n = d.NumberUtilities.clamp, k = function() {
        function a(l) {
          this.value = l;
        }
        a.prototype.toString = function() {
          return this.value;
        };
        a.AUTO = new a("auto");
        a.DEFAULT = new a("default");
        a.NONE = new a("none");
        a.HELP = new a("help");
        a.POINTER = new a("pointer");
        a.PROGRESS = new a("progress");
        a.WAIT = new a("wait");
        a.CELL = new a("cell");
        a.CROSSHAIR = new a("crosshair");
        a.TEXT = new a("text");
        a.ALIAS = new a("alias");
        a.COPY = new a("copy");
        a.MOVE = new a("move");
        a.NO_DROP = new a("no-drop");
        a.NOT_ALLOWED = new a("not-allowed");
        a.ALL_SCROLL = new a("all-scroll");
        a.COL_RESIZE = new a("col-resize");
        a.ROW_RESIZE = new a("row-resize");
        a.N_RESIZE = new a("n-resize");
        a.E_RESIZE = new a("e-resize");
        a.S_RESIZE = new a("s-resize");
        a.W_RESIZE = new a("w-resize");
        a.NE_RESIZE = new a("ne-resize");
        a.NW_RESIZE = new a("nw-resize");
        a.SE_RESIZE = new a("se-resize");
        a.SW_RESIZE = new a("sw-resize");
        a.EW_RESIZE = new a("ew-resize");
        a.NS_RESIZE = new a("ns-resize");
        a.NESW_RESIZE = new a("nesw-resize");
        a.NWSE_RESIZE = new a("nwse-resize");
        a.ZOOM_IN = new a("zoom-in");
        a.ZOOM_OUT = new a("zoom-out");
        a.GRAB = new a("grab");
        a.GRABBING = new a("grabbing");
        return a;
      }();
      a.MouseCursor = k;
      var v = function() {
        function a(l, c) {
          this._target = l;
          this._eventTarget = c;
          this._wheelDisabled = !1;
          this._boundOnMouseDown = this._onMouseDown.bind(this);
          this._boundOnMouseUp = this._onMouseUp.bind(this);
          this._boundOnMouseOver = this._onMouseOver.bind(this);
          this._boundOnMouseOut = this._onMouseOut.bind(this);
          this._boundOnMouseMove = this._onMouseMove.bind(this);
          this._boundOnMouseWheel = this._onMouseWheel.bind(this);
          this._boundOnDrag = this._onDrag.bind(this);
          c.addEventListener("mousedown", this._boundOnMouseDown, !1);
          c.addEventListener("mouseover", this._boundOnMouseOver, !1);
          c.addEventListener("mouseout", this._boundOnMouseOut, !1);
          c.addEventListener("onwheel" in document ? "wheel" : "mousewheel", this._boundOnMouseWheel, !1);
        }
        a.prototype.destroy = function() {
          var a = this._eventTarget;
          a.removeEventListener("mousedown", this._boundOnMouseDown);
          a.removeEventListener("mouseover", this._boundOnMouseOver);
          a.removeEventListener("mouseout", this._boundOnMouseOut);
          a.removeEventListener("onwheel" in document ? "wheel" : "mousewheel", this._boundOnMouseWheel);
          window.removeEventListener("mousemove", this._boundOnDrag);
          window.removeEventListener("mouseup", this._boundOnMouseUp);
          this._killHoverCheck();
          this._target = this._eventTarget = null;
        };
        a.prototype.updateCursor = function(l) {
          if (!a._cursorOwner || a._cursorOwner === this._target) {
            var c = this._eventTarget.parentElement;
            a._cursor !== l && (a._cursor = l, ["", "-moz-", "-webkit-"].forEach(function(a) {
              c.style.cursor = a + l;
            }));
            a._cursorOwner = a._cursor === k.DEFAULT ? null : this._target;
          }
        };
        a.prototype._onMouseDown = function(a) {
          this._killHoverCheck();
          if (0 === a.button) {
            var c = this._getTargetMousePos(a, a.target);
            this._dragInfo = {start:c, current:c, delta:{x:0, y:0}, hasMoved:!1, originalTarget:a.target};
            window.addEventListener("mousemove", this._boundOnDrag, !1);
            window.addEventListener("mouseup", this._boundOnMouseUp, !1);
            this._target.onMouseDown(c.x, c.y);
          }
        };
        a.prototype._onDrag = function(a) {
          var c = this._dragInfo;
          a = this._getTargetMousePos(a, c.originalTarget);
          var g = {x:a.x - c.start.x, y:a.y - c.start.y};
          c.current = a;
          c.delta = g;
          c.hasMoved = !0;
          this._target.onDrag(c.start.x, c.start.y, a.x, a.y, g.x, g.y);
        };
        a.prototype._onMouseUp = function(a) {
          window.removeEventListener("mousemove", this._boundOnDrag);
          window.removeEventListener("mouseup", this._boundOnMouseUp);
          var c = this;
          a = this._dragInfo;
          if (a.hasMoved) {
            this._target.onDragEnd(a.start.x, a.start.y, a.current.x, a.current.y, a.delta.x, a.delta.y);
          } else {
            this._target.onClick(a.current.x, a.current.y);
          }
          this._dragInfo = null;
          this._wheelDisabled = !0;
          setTimeout(function() {
            c._wheelDisabled = !1;
          }, 500);
        };
        a.prototype._onMouseOver = function(a) {
          a.target.addEventListener("mousemove", this._boundOnMouseMove, !1);
          if (!this._dragInfo) {
            var c = this._getTargetMousePos(a, a.target);
            this._target.onMouseOver(c.x, c.y);
            this._startHoverCheck(a);
          }
        };
        a.prototype._onMouseOut = function(a) {
          a.target.removeEventListener("mousemove", this._boundOnMouseMove, !1);
          if (!this._dragInfo) {
            this._target.onMouseOut();
          }
          this._killHoverCheck();
        };
        a.prototype._onMouseMove = function(a) {
          if (!this._dragInfo) {
            var c = this._getTargetMousePos(a, a.target);
            this._target.onMouseMove(c.x, c.y);
            this._killHoverCheck();
            this._startHoverCheck(a);
          }
        };
        a.prototype._onMouseWheel = function(a) {
          if (!(a.altKey || a.metaKey || a.ctrlKey || a.shiftKey || (a.preventDefault(), this._dragInfo || this._wheelDisabled))) {
            var c = this._getTargetMousePos(a, a.target);
            a = n("undefined" !== typeof a.deltaY ? a.deltaY / 16 : -a.wheelDelta / 40, -1, 1);
            this._target.onMouseWheel(c.x, c.y, Math.pow(1.2, a) - 1);
          }
        };
        a.prototype._startHoverCheck = function(l) {
          this._hoverInfo = {isHovering:!1, timeoutHandle:setTimeout(this._onMouseMoveIdleHandler.bind(this), a.HOVER_TIMEOUT), pos:this._getTargetMousePos(l, l.target)};
        };
        a.prototype._killHoverCheck = function() {
          if (this._hoverInfo) {
            clearTimeout(this._hoverInfo.timeoutHandle);
            if (this._hoverInfo.isHovering) {
              this._target.onHoverEnd();
            }
            this._hoverInfo = null;
          }
        };
        a.prototype._onMouseMoveIdleHandler = function() {
          var a = this._hoverInfo;
          a.isHovering = !0;
          this._target.onHoverStart(a.pos.x, a.pos.y);
        };
        a.prototype._getTargetMousePos = function(a, c) {
          var g = c.getBoundingClientRect();
          return {x:a.clientX - g.left, y:a.clientY - g.top};
        };
        a.HOVER_TIMEOUT = 500;
        a._cursor = k.DEFAULT;
        return a;
      }();
      a.MouseController = v;
    })(k.Profiler || (k.Profiler = {}));
  })(d.Tools || (d.Tools = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(a) {
        a[a.NONE = 0] = "NONE";
        a[a.WINDOW = 1] = "WINDOW";
        a[a.HANDLE_LEFT = 2] = "HANDLE_LEFT";
        a[a.HANDLE_RIGHT = 3] = "HANDLE_RIGHT";
        a[a.HANDLE_BOTH = 4] = "HANDLE_BOTH";
      })(a.FlameChartDragTarget || (a.FlameChartDragTarget = {}));
      var d = function() {
        function d(n) {
          this._controller = n;
          this._initialized = !1;
          this._canvas = document.createElement("canvas");
          this._context = this._canvas.getContext("2d");
          this._mouseController = new a.MouseController(this, this._canvas);
          n = n.container;
          n.appendChild(this._canvas);
          n = n.getBoundingClientRect();
          this.setSize(n.width);
        }
        Object.defineProperty(d.prototype, "canvas", {get:function() {
          return this._canvas;
        }, enumerable:!0, configurable:!0});
        d.prototype.setSize = function(a, d) {
          void 0 === d && (d = 20);
          this._width = a;
          this._height = d;
          this._resetCanvas();
          this.draw();
        };
        d.prototype.initialize = function(a, d) {
          this._initialized = !0;
          this.setRange(a, d);
          this.setWindow(a, d, !1);
          this.draw();
        };
        d.prototype.setWindow = function(a, d, l) {
          void 0 === l && (l = !0);
          this._windowStart = a;
          this._windowEnd = d;
          !l || this.draw();
        };
        d.prototype.setRange = function(a, d) {
          var l = !1;
          void 0 === l && (l = !0);
          this._rangeStart = a;
          this._rangeEnd = d;
          !l || this.draw();
        };
        d.prototype.destroy = function() {
          this._mouseController.destroy();
          this._mouseController = null;
          this._controller.container.removeChild(this._canvas);
          this._controller = null;
        };
        d.prototype._resetCanvas = function() {
          var a = window.devicePixelRatio, d = this._canvas;
          d.width = this._width * a;
          d.height = this._height * a;
          d.style.width = this._width + "px";
          d.style.height = this._height + "px";
        };
        d.prototype.draw = function() {
        };
        d.prototype._almostEq = function(a, d) {
          var l;
          void 0 === l && (l = 10);
          return Math.abs(a - d) < 1 / Math.pow(10, l);
        };
        d.prototype._windowEqRange = function() {
          return this._almostEq(this._windowStart, this._rangeStart) && this._almostEq(this._windowEnd, this._rangeEnd);
        };
        d.prototype._decimalPlaces = function(a) {
          return (+a).toFixed(10).replace(/^-?\d*\.?|0+$/g, "").length;
        };
        d.prototype._toPixelsRelative = function(a) {
          return 0;
        };
        d.prototype._toPixels = function(a) {
          return 0;
        };
        d.prototype._toTimeRelative = function(a) {
          return 0;
        };
        d.prototype._toTime = function(a) {
          return 0;
        };
        d.prototype.onMouseWheel = function(a, n, l) {
          a = this._toTime(a);
          n = this._windowStart;
          var c = this._windowEnd, g = c - n;
          l = Math.max((d.MIN_WINDOW_LEN - g) / g, l);
          this._controller.setWindow(n + (n - a) * l, c + (c - a) * l);
          this.onHoverEnd();
        };
        d.prototype.onMouseDown = function(a, d) {
        };
        d.prototype.onMouseMove = function(a, d) {
        };
        d.prototype.onMouseOver = function(a, d) {
        };
        d.prototype.onMouseOut = function() {
        };
        d.prototype.onDrag = function(a, d, l, c, g, q) {
        };
        d.prototype.onDragEnd = function(a, d, l, c, g, q) {
        };
        d.prototype.onClick = function(a, d) {
        };
        d.prototype.onHoverStart = function(a, d) {
        };
        d.prototype.onHoverEnd = function() {
        };
        d.DRAGHANDLE_WIDTH = 4;
        d.MIN_WINDOW_LEN = .1;
        return d;
      }();
      a.FlameChartBase = d;
    })(d.Profiler || (d.Profiler = {}));
  })(d.Tools || (d.Tools = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var n = d.StringUtilities.trimMiddle, k = function(k) {
        function u(a, c) {
          k.call(this, a);
          this._textWidth = {};
          this._minFrameWidthInPixels = 1;
          this._snapshot = c;
          this._kindStyle = Object.create(null);
        }
        __extends(u, k);
        u.prototype.setSize = function(a, c) {
          k.prototype.setSize.call(this, a, c || this._initialized ? 12.5 * this._maxDepth : 100);
        };
        u.prototype.initialize = function(a, c) {
          this._initialized = !0;
          this._maxDepth = this._snapshot.maxDepth;
          this.setRange(a, c);
          this.setWindow(a, c, !1);
          this.setSize(this._width, 12.5 * this._maxDepth);
        };
        u.prototype.destroy = function() {
          k.prototype.destroy.call(this);
          this._snapshot = null;
        };
        u.prototype.draw = function() {
          var a = this._context, c = window.devicePixelRatio;
          d.ColorStyle.reset();
          a.save();
          a.scale(c, c);
          a.fillStyle = this._controller.theme.bodyBackground(1);
          a.fillRect(0, 0, this._width, this._height);
          this._initialized && this._drawChildren(this._snapshot);
          a.restore();
        };
        u.prototype._drawChildren = function(a, c) {
          void 0 === c && (c = 0);
          var g = a.getChildRange(this._windowStart, this._windowEnd);
          if (g) {
            for (var q = g.startIndex;q <= g.endIndex;q++) {
              var t = a.children[q];
              this._drawFrame(t, c) && this._drawChildren(t, c + 1);
            }
          }
        };
        u.prototype._drawFrame = function(a, c) {
          var g = this._context, q = this._toPixels(a.startTime), t = this._toPixels(a.endTime), m = t - q;
          if (m <= this._minFrameWidthInPixels) {
            return g.fillStyle = this._controller.theme.tabToolbar(1), g.fillRect(q, 12.5 * c, this._minFrameWidthInPixels, 12 + 12.5 * (a.maxDepth - a.depth)), !1;
          }
          0 > q && (t = m + q, q = 0);
          var t = t - q, h = this._kindStyle[a.kind.id];
          h || (h = d.ColorStyle.randomStyle(), h = this._kindStyle[a.kind.id] = {bgColor:h, textColor:d.ColorStyle.contrastStyle(h)});
          g.save();
          g.fillStyle = h.bgColor;
          g.fillRect(q, 12.5 * c, t, 12);
          12 < m && (m = a.kind.name) && m.length && (m = this._prepareText(g, m, t - 4), m.length && (g.fillStyle = h.textColor, g.textBaseline = "bottom", g.fillText(m, q + 2, 12.5 * (c + 1) - 1)));
          g.restore();
          return !0;
        };
        u.prototype._prepareText = function(a, c, g) {
          var q = this._measureWidth(a, c);
          if (g > q) {
            return c;
          }
          for (var q = 3, t = c.length;q < t;) {
            var m = q + t >> 1;
            this._measureWidth(a, n(c, m)) < g ? q = m + 1 : t = m;
          }
          c = n(c, t - 1);
          q = this._measureWidth(a, c);
          return q <= g ? c : "";
        };
        u.prototype._measureWidth = function(a, c) {
          var g = this._textWidth[c];
          g || (g = a.measureText(c).width, this._textWidth[c] = g);
          return g;
        };
        u.prototype._toPixelsRelative = function(a) {
          return a * this._width / (this._windowEnd - this._windowStart);
        };
        u.prototype._toPixels = function(a) {
          return this._toPixelsRelative(a - this._windowStart);
        };
        u.prototype._toTimeRelative = function(a) {
          return a * (this._windowEnd - this._windowStart) / this._width;
        };
        u.prototype._toTime = function(a) {
          return this._toTimeRelative(a) + this._windowStart;
        };
        u.prototype._getFrameAtPosition = function(a, c) {
          var g = 1 + c / 12.5 | 0, q = this._snapshot.query(this._toTime(a));
          if (q && q.depth >= g) {
            for (;q && q.depth > g;) {
              q = q.parent;
            }
            return q;
          }
          return null;
        };
        u.prototype.onMouseDown = function(l, c) {
          this._windowEqRange() || (this._mouseController.updateCursor(a.MouseCursor.ALL_SCROLL), this._dragInfo = {windowStartInitial:this._windowStart, windowEndInitial:this._windowEnd, target:1});
        };
        u.prototype.onMouseMove = function(a, c) {
        };
        u.prototype.onMouseOver = function(a, c) {
        };
        u.prototype.onMouseOut = function() {
        };
        u.prototype.onDrag = function(a, c, g, q, t, m) {
          if (a = this._dragInfo) {
            t = this._toTimeRelative(-t), this._controller.setWindow(a.windowStartInitial + t, a.windowEndInitial + t);
          }
        };
        u.prototype.onDragEnd = function(l, c, g, q, t, m) {
          this._dragInfo = null;
          this._mouseController.updateCursor(a.MouseCursor.DEFAULT);
        };
        u.prototype.onClick = function(l, c) {
          this._dragInfo = null;
          this._mouseController.updateCursor(a.MouseCursor.DEFAULT);
        };
        u.prototype.onHoverStart = function(a, c) {
          var g = this._getFrameAtPosition(a, c);
          g && (this._hoveredFrame = g, this._controller.showTooltip(this, g, a, c));
        };
        u.prototype.onHoverEnd = function() {
          this._hoveredFrame && (this._hoveredFrame = null, this._controller.hideTooltip());
        };
        u.prototype.getStatistics = function(a) {
          var c = this._snapshot;
          c.statistics || c.calculateStatistics();
          return c.statistics[a.id];
        };
        return u;
      }(a.FlameChartBase);
      a.FlameChart = k;
    })(k.Profiler || (k.Profiler = {}));
  })(d.Tools || (d.Tools = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var n = d.NumberUtilities.clamp;
      (function(a) {
        a[a.OVERLAY = 0] = "OVERLAY";
        a[a.STACK = 1] = "STACK";
        a[a.UNION = 2] = "UNION";
      })(a.FlameChartOverviewMode || (a.FlameChartOverviewMode = {}));
      var k = function(d) {
        function k(a, c) {
          void 0 === c && (c = 1);
          this._mode = c;
          this._overviewCanvasDirty = !0;
          this._overviewCanvas = document.createElement("canvas");
          this._overviewContext = this._overviewCanvas.getContext("2d");
          d.call(this, a);
        }
        __extends(k, d);
        k.prototype.setSize = function(a, c) {
          d.prototype.setSize.call(this, a, c || 64);
        };
        Object.defineProperty(k.prototype, "mode", {set:function(a) {
          this._mode = a;
          this.draw();
        }, enumerable:!0, configurable:!0});
        k.prototype._resetCanvas = function() {
          d.prototype._resetCanvas.call(this);
          this._overviewCanvas.width = this._canvas.width;
          this._overviewCanvas.height = this._canvas.height;
          this._overviewCanvasDirty = !0;
        };
        k.prototype.draw = function() {
          var a = this._context, c = window.devicePixelRatio, g = this._width, q = this._height;
          a.save();
          a.scale(c, c);
          a.fillStyle = this._controller.theme.bodyBackground(1);
          a.fillRect(0, 0, g, q);
          a.restore();
          this._initialized && (this._overviewCanvasDirty && (this._drawChart(), this._overviewCanvasDirty = !1), a.drawImage(this._overviewCanvas, 0, 0), this._drawSelection());
        };
        k.prototype._drawSelection = function() {
          var a = this._context, c = this._height, g = window.devicePixelRatio, q = this._selection ? this._selection.left : this._toPixels(this._windowStart), t = this._selection ? this._selection.right : this._toPixels(this._windowEnd), m = this._controller.theme;
          a.save();
          a.scale(g, g);
          this._selection ? (a.fillStyle = m.selectionText(.15), a.fillRect(q, 1, t - q, c - 1), a.fillStyle = "rgba(133, 0, 0, 1)", a.fillRect(q + .5, 0, t - q - 1, 4), a.fillRect(q + .5, c - 4, t - q - 1, 4)) : (a.fillStyle = m.bodyBackground(.4), a.fillRect(0, 1, q, c - 1), a.fillRect(t, 1, this._width, c - 1));
          a.beginPath();
          a.moveTo(q, 0);
          a.lineTo(q, c);
          a.moveTo(t, 0);
          a.lineTo(t, c);
          a.lineWidth = .5;
          a.strokeStyle = m.foregroundTextGrey(1);
          a.stroke();
          c = Math.abs((this._selection ? this._toTime(this._selection.right) : this._windowEnd) - (this._selection ? this._toTime(this._selection.left) : this._windowStart));
          a.fillStyle = m.selectionText(.5);
          a.font = "8px sans-serif";
          a.textBaseline = "alphabetic";
          a.textAlign = "end";
          a.fillText(c.toFixed(2), Math.min(q, t) - 4, 10);
          a.fillText((c / 60).toFixed(2), Math.min(q, t) - 4, 20);
          a.restore();
        };
        k.prototype._drawChart = function() {
          var a = window.devicePixelRatio, c = this._height, g = this._controller.activeProfile, q = 4 * this._width, t = g.totalTime / q, m = this._overviewContext, h = this._controller.theme.blueHighlight(1);
          m.save();
          m.translate(0, a * c);
          var f = -a * c / (g.maxDepth - 1);
          m.scale(a / 4, f);
          m.clearRect(0, 0, q, g.maxDepth - 1);
          1 == this._mode && m.scale(1, 1 / g.snapshotCount);
          for (var b = 0, e = g.snapshotCount;b < e;b++) {
            var r = g.getSnapshotAt(b);
            if (r) {
              var p = null, C = 0;
              m.beginPath();
              m.moveTo(0, 0);
              for (var d = 0;d < q;d++) {
                C = g.startTime + d * t, C = (p = p ? p.queryNext(C) : r.query(C)) ? p.getDepth() - 1 : 0, m.lineTo(d, C);
              }
              m.lineTo(d, 0);
              m.fillStyle = h;
              m.fill();
              1 == this._mode && m.translate(0, -c * a / f);
            }
          }
          m.restore();
        };
        k.prototype._toPixelsRelative = function(a) {
          return a * this._width / (this._rangeEnd - this._rangeStart);
        };
        k.prototype._toPixels = function(a) {
          return this._toPixelsRelative(a - this._rangeStart);
        };
        k.prototype._toTimeRelative = function(a) {
          return a * (this._rangeEnd - this._rangeStart) / this._width;
        };
        k.prototype._toTime = function(a) {
          return this._toTimeRelative(a) + this._rangeStart;
        };
        k.prototype._getDragTargetUnderCursor = function(l, c) {
          if (0 <= c && c < this._height) {
            var g = this._toPixels(this._windowStart), q = this._toPixels(this._windowEnd), t = 2 + a.FlameChartBase.DRAGHANDLE_WIDTH / 2, m = l >= g - t && l <= g + t, h = l >= q - t && l <= q + t;
            if (m && h) {
              return 4;
            }
            if (m) {
              return 2;
            }
            if (h) {
              return 3;
            }
            if (!this._windowEqRange() && l > g + t && l < q - t) {
              return 1;
            }
          }
          return 0;
        };
        k.prototype.onMouseDown = function(l, c) {
          var g = this._getDragTargetUnderCursor(l, c);
          0 === g ? (this._selection = {left:l, right:l}, this.draw()) : (1 === g && this._mouseController.updateCursor(a.MouseCursor.GRABBING), this._dragInfo = {windowStartInitial:this._windowStart, windowEndInitial:this._windowEnd, target:g});
        };
        k.prototype.onMouseMove = function(l, c) {
          var g = a.MouseCursor.DEFAULT, q = this._getDragTargetUnderCursor(l, c);
          0 === q || this._selection || (g = 1 === q ? a.MouseCursor.GRAB : a.MouseCursor.EW_RESIZE);
          this._mouseController.updateCursor(g);
        };
        k.prototype.onMouseOver = function(a, c) {
          this.onMouseMove(a, c);
        };
        k.prototype.onMouseOut = function() {
          this._mouseController.updateCursor(a.MouseCursor.DEFAULT);
        };
        k.prototype.onDrag = function(l, c, g, q, t, m) {
          if (this._selection) {
            this._selection = {left:l, right:n(g, 0, this._width - 1)}, this.draw();
          } else {
            l = this._dragInfo;
            if (4 === l.target) {
              if (0 !== t) {
                l.target = 0 > t ? 2 : 3;
              } else {
                return;
              }
            }
            c = this._windowStart;
            g = this._windowEnd;
            t = this._toTimeRelative(t);
            switch(l.target) {
              case 1:
                c = l.windowStartInitial + t;
                g = l.windowEndInitial + t;
                break;
              case 2:
                c = n(l.windowStartInitial + t, this._rangeStart, g - a.FlameChartBase.MIN_WINDOW_LEN);
                break;
              case 3:
                g = n(l.windowEndInitial + t, c + a.FlameChartBase.MIN_WINDOW_LEN, this._rangeEnd);
                break;
              default:
                return;
            }
            this._controller.setWindow(c, g);
          }
        };
        k.prototype.onDragEnd = function(a, c, g, q, t, m) {
          this._selection && (this._selection = null, this._controller.setWindow(this._toTime(a), this._toTime(g)));
          this._dragInfo = null;
          this.onMouseMove(g, q);
        };
        k.prototype.onClick = function(a, c) {
          this._selection = this._dragInfo = null;
          this._windowEqRange() || (0 === this._getDragTargetUnderCursor(a, c) && this._controller.moveWindowTo(this._toTime(a)), this.onMouseMove(a, c));
          this.draw();
        };
        k.prototype.onHoverStart = function(a, c) {
        };
        k.prototype.onHoverEnd = function() {
        };
        return k;
      }(a.FlameChartBase);
      a.FlameChartOverview = k;
    })(k.Profiler || (k.Profiler = {}));
  })(d.Tools || (d.Tools = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var n = d.NumberUtilities.clamp;
      (function(a) {
        a[a.OVERVIEW = 0] = "OVERVIEW";
        a[a.CHART = 1] = "CHART";
      })(a.FlameChartHeaderType || (a.FlameChartHeaderType = {}));
      var k = function(d) {
        function k(a, c) {
          this._type = c;
          d.call(this, a);
        }
        __extends(k, d);
        k.prototype.draw = function() {
          var a = this._context, c = window.devicePixelRatio, g = this._width, q = this._height;
          a.save();
          a.scale(c, c);
          a.fillStyle = this._controller.theme.tabToolbar(1);
          a.fillRect(0, 0, g, q);
          this._initialized && (0 == this._type ? (c = this._toPixels(this._windowStart), g = this._toPixels(this._windowEnd), a.fillStyle = this._controller.theme.bodyBackground(1), a.fillRect(c, 0, g - c, q), this._drawLabels(this._rangeStart, this._rangeEnd), this._drawDragHandle(c), this._drawDragHandle(g)) : this._drawLabels(this._windowStart, this._windowEnd));
          a.restore();
        };
        k.prototype._drawLabels = function(a, c) {
          var g = this._context, q = this._calculateTickInterval(a, c), t = Math.ceil(a / q) * q, m = 500 <= q, h = m ? 1E3 : 1, f = this._decimalPlaces(q / h), m = m ? "s" : "ms", b = this._toPixels(t), e = this._height / 2, r = this._controller.theme;
          g.lineWidth = 1;
          g.strokeStyle = r.contentTextDarkGrey(.5);
          g.fillStyle = r.contentTextDarkGrey(1);
          g.textAlign = "right";
          g.textBaseline = "middle";
          g.font = "11px sans-serif";
          for (r = this._width + k.TICK_MAX_WIDTH;b < r;) {
            g.fillText((t / h).toFixed(f) + " " + m, b - 7, e + 1), g.beginPath(), g.moveTo(b, 0), g.lineTo(b, this._height + 1), g.closePath(), g.stroke(), t += q, b = this._toPixels(t);
          }
        };
        k.prototype._calculateTickInterval = function(a, c) {
          var g = (c - a) / (this._width / k.TICK_MAX_WIDTH), q = Math.pow(10, Math.floor(Math.log(g) / Math.LN10)), g = g / q;
          return 5 < g ? 10 * q : 2 < g ? 5 * q : 1 < g ? 2 * q : q;
        };
        k.prototype._drawDragHandle = function(l) {
          var c = this._context;
          c.lineWidth = 2;
          c.strokeStyle = this._controller.theme.bodyBackground(1);
          c.fillStyle = this._controller.theme.foregroundTextGrey(.7);
          this._drawRoundedRect(c, l - a.FlameChartBase.DRAGHANDLE_WIDTH / 2, a.FlameChartBase.DRAGHANDLE_WIDTH, this._height - 2);
        };
        k.prototype._drawRoundedRect = function(a, c, g, q) {
          var t, m = !0;
          void 0 === m && (m = !0);
          void 0 === t && (t = !0);
          a.beginPath();
          a.moveTo(c + 2, 1);
          a.lineTo(c + g - 2, 1);
          a.quadraticCurveTo(c + g, 1, c + g, 3);
          a.lineTo(c + g, 1 + q - 2);
          a.quadraticCurveTo(c + g, 1 + q, c + g - 2, 1 + q);
          a.lineTo(c + 2, 1 + q);
          a.quadraticCurveTo(c, 1 + q, c, 1 + q - 2);
          a.lineTo(c, 3);
          a.quadraticCurveTo(c, 1, c + 2, 1);
          a.closePath();
          m && a.stroke();
          t && a.fill();
        };
        k.prototype._toPixelsRelative = function(a) {
          return a * this._width / (0 === this._type ? this._rangeEnd - this._rangeStart : this._windowEnd - this._windowStart);
        };
        k.prototype._toPixels = function(a) {
          return this._toPixelsRelative(a - (0 === this._type ? this._rangeStart : this._windowStart));
        };
        k.prototype._toTimeRelative = function(a) {
          return a * (0 === this._type ? this._rangeEnd - this._rangeStart : this._windowEnd - this._windowStart) / this._width;
        };
        k.prototype._toTime = function(a) {
          return this._toTimeRelative(a) + (0 === this._type ? this._rangeStart : this._windowStart);
        };
        k.prototype._getDragTargetUnderCursor = function(l, c) {
          if (0 <= c && c < this._height) {
            if (0 === this._type) {
              var g = this._toPixels(this._windowStart), q = this._toPixels(this._windowEnd), t = 2 + a.FlameChartBase.DRAGHANDLE_WIDTH / 2, g = l >= g - t && l <= g + t, q = l >= q - t && l <= q + t;
              if (g && q) {
                return 4;
              }
              if (g) {
                return 2;
              }
              if (q) {
                return 3;
              }
            }
            if (!this._windowEqRange()) {
              return 1;
            }
          }
          return 0;
        };
        k.prototype.onMouseDown = function(l, c) {
          var g = this._getDragTargetUnderCursor(l, c);
          1 === g && this._mouseController.updateCursor(a.MouseCursor.GRABBING);
          this._dragInfo = {windowStartInitial:this._windowStart, windowEndInitial:this._windowEnd, target:g};
        };
        k.prototype.onMouseMove = function(l, c) {
          var g = a.MouseCursor.DEFAULT, q = this._getDragTargetUnderCursor(l, c);
          0 !== q && (1 !== q ? g = a.MouseCursor.EW_RESIZE : 1 !== q || this._windowEqRange() || (g = a.MouseCursor.GRAB));
          this._mouseController.updateCursor(g);
        };
        k.prototype.onMouseOver = function(a, c) {
          this.onMouseMove(a, c);
        };
        k.prototype.onMouseOut = function() {
          this._mouseController.updateCursor(a.MouseCursor.DEFAULT);
        };
        k.prototype.onDrag = function(l, c, g, q, t, m) {
          l = this._dragInfo;
          if (4 === l.target) {
            if (0 !== t) {
              l.target = 0 > t ? 2 : 3;
            } else {
              return;
            }
          }
          c = this._windowStart;
          g = this._windowEnd;
          t = this._toTimeRelative(t);
          switch(l.target) {
            case 1:
              g = 0 === this._type ? 1 : -1;
              c = l.windowStartInitial + g * t;
              g = l.windowEndInitial + g * t;
              break;
            case 2:
              c = n(l.windowStartInitial + t, this._rangeStart, g - a.FlameChartBase.MIN_WINDOW_LEN);
              break;
            case 3:
              g = n(l.windowEndInitial + t, c + a.FlameChartBase.MIN_WINDOW_LEN, this._rangeEnd);
              break;
            default:
              return;
          }
          this._controller.setWindow(c, g);
        };
        k.prototype.onDragEnd = function(a, c, g, q, t, m) {
          this._dragInfo = null;
          this.onMouseMove(g, q);
        };
        k.prototype.onClick = function(l, c) {
          1 === this._dragInfo.target && this._mouseController.updateCursor(a.MouseCursor.GRAB);
        };
        k.prototype.onHoverStart = function(a, c) {
        };
        k.prototype.onHoverEnd = function() {
        };
        k.TICK_MAX_WIDTH = 75;
        return k;
      }(a.FlameChartBase);
      a.FlameChartHeader = k;
    })(k.Profiler || (k.Profiler = {}));
  })(d.Tools || (d.Tools = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(a) {
        var d = function() {
          function a(l, c, g, q, t) {
            this.pageLoaded = l;
            this.threadsTotal = c;
            this.threadsLoaded = g;
            this.threadFilesTotal = q;
            this.threadFilesLoaded = t;
          }
          a.prototype.toString = function() {
            return "[" + ["pageLoaded", "threadsTotal", "threadsLoaded", "threadFilesTotal", "threadFilesLoaded"].map(function(a, c, g) {
              return a + ":" + this[a];
            }, this).join(", ") + "]";
          };
          return a;
        }();
        a.TraceLoggerProgressInfo = d;
        var k = function() {
          function k(a) {
            this._baseUrl = a;
            this._threads = [];
            this._progressInfo = null;
          }
          k.prototype.loadPage = function(a, c, g) {
            this._threads = [];
            this._pageLoadCallback = c;
            this._pageLoadProgressCallback = g;
            this._progressInfo = new d(!1, 0, 0, 0, 0);
            this._loadData([a], this._onLoadPage.bind(this));
          };
          Object.defineProperty(k.prototype, "buffers", {get:function() {
            for (var a = [], c = 0, g = this._threads.length;c < g;c++) {
              a.push(this._threads[c].buffer);
            }
            return a;
          }, enumerable:!0, configurable:!0});
          k.prototype._onProgress = function() {
            this._pageLoadProgressCallback && this._pageLoadProgressCallback.call(this, this._progressInfo);
          };
          k.prototype._onLoadPage = function(l) {
            if (l && 1 == l.length) {
              var c = this, g = 0;
              l = l[0];
              var q = l.length;
              this._threads = Array(q);
              this._progressInfo.pageLoaded = !0;
              this._progressInfo.threadsTotal = q;
              for (var t = 0;t < l.length;t++) {
                var m = l[t], h = [m.dict, m.tree];
                m.corrections && h.push(m.corrections);
                this._progressInfo.threadFilesTotal += h.length;
                this._loadData(h, function(f) {
                  return function(b) {
                    b && (b = new a.Thread(b), b.buffer.name = "Thread " + f, c._threads[f] = b);
                    g++;
                    c._progressInfo.threadsLoaded++;
                    c._onProgress();
                    g === q && c._pageLoadCallback.call(c, null, c._threads);
                  };
                }(t), function(f) {
                  c._progressInfo.threadFilesLoaded++;
                  c._onProgress();
                });
              }
              this._onProgress();
            } else {
              this._pageLoadCallback.call(this, "Error loading page.", null);
            }
          };
          k.prototype._loadData = function(a, c, g) {
            var q = 0, t = 0, m = a.length, h = [];
            h.length = m;
            for (var f = 0;f < m;f++) {
              var b = this._baseUrl + a[f], e = new XMLHttpRequest, r = /\.tl$/i.test(b) ? "arraybuffer" : "json";
              e.open("GET", b, !0);
              e.responseType = r;
              e.onload = function(b, e) {
                return function(f) {
                  if ("json" === e) {
                    if (f = this.response, "string" === typeof f) {
                      try {
                        f = JSON.parse(f), h[b] = f;
                      } catch (a) {
                        t++;
                      }
                    } else {
                      h[b] = f;
                    }
                  } else {
                    h[b] = this.response;
                  }
                  ++q;
                  g && g(q);
                  q === m && c(h);
                };
              }(f, r);
              e.send();
            }
          };
          k.colors = "#0044ff #8c4b00 #cc5c33 #ff80c4 #ffbfd9 #ff8800 #8c5e00 #adcc33 #b380ff #bfd9ff #ffaa00 #8c0038 #bf8f30 #f780ff #cc99c9 #aaff00 #000073 #452699 #cc8166 #cca799 #000066 #992626 #cc6666 #ccc299 #ff6600 #526600 #992663 #cc6681 #99ccc2 #ff0066 #520066 #269973 #61994d #739699 #ffcc00 #006629 #269199 #94994d #738299 #ff0000 #590000 #234d8c #8c6246 #7d7399 #ee00ff #00474d #8c2385 #8c7546 #7c8c69 #eeff00 #4d003d #662e1a #62468c #8c6969 #6600ff #4c2900 #1a6657 #8c464f #8c6981 #44ff00 #401100 #1a2466 #663355 #567365 #d90074 #403300 #101d40 #59562d #66614d #cc0000 #002b40 #234010 #4c2626 #4d5e66 #00a3cc #400011 #231040 #4c3626 #464359 #0000bf #331b00 #80e6ff #311a33 #4d3939 #a69b00 #003329 #80ffb2 #331a20 #40303d #00a658 #40ffd9 #ffc480 #ffe1bf #332b26 #8c2500 #9933cc #80fff6 #ffbfbf #303326 #005e8c #33cc47 #b2ff80 #c8bfff #263332 #00708c #cc33ad #ffe680 #f2ffbf #262a33 #388c00 #335ccc #8091ff #bfffd9".split(" ");
          return k;
        }();
        a.TraceLogger = k;
      })(a.TraceLogger || (a.TraceLogger = {}));
    })(d.Profiler || (d.Profiler = {}));
  })(d.Tools || (d.Tools = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(d) {
        var k;
        (function(a) {
          a[a.START_HI = 0] = "START_HI";
          a[a.START_LO = 4] = "START_LO";
          a[a.STOP_HI = 8] = "STOP_HI";
          a[a.STOP_LO = 12] = "STOP_LO";
          a[a.TEXTID = 16] = "TEXTID";
          a[a.NEXTID = 20] = "NEXTID";
        })(k || (k = {}));
        k = function() {
          function d(n) {
            2 <= n.length && (this._text = n[0], this._data = new DataView(n[1]), this._buffer = new a.TimelineBuffer, this._walkTree(0));
          }
          Object.defineProperty(d.prototype, "buffer", {get:function() {
            return this._buffer;
          }, enumerable:!0, configurable:!0});
          d.prototype._walkTree = function(a) {
            var l = this._data, c = this._buffer;
            do {
              var g = a * d.ITEM_SIZE, q = 4294967295 * l.getUint32(g + 0) + l.getUint32(g + 4), t = 4294967295 * l.getUint32(g + 8) + l.getUint32(g + 12), m = l.getUint32(g + 16), g = l.getUint32(g + 20), h = 1 === (m & 1), m = m >>> 1, m = this._text[m];
              c.enter(m, null, q / 1E6);
              h && this._walkTree(a + 1);
              c.leave(m, null, t / 1E6);
              a = g;
            } while (0 !== a);
          };
          d.ITEM_SIZE = 24;
          return d;
        }();
        d.Thread = k;
      })(a.TraceLogger || (a.TraceLogger = {}));
    })(d.Profiler || (d.Profiler = {}));
  })(d.Tools || (d.Tools = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var n = d.NumberUtilities.clamp, k = function() {
        function a() {
          this.length = 0;
          this.lines = [];
          this.format = [];
          this.time = [];
          this.repeat = [];
          this.length = 0;
        }
        a.prototype.append = function(a, c) {
          var g = this.lines;
          0 < g.length && g[g.length - 1] === a ? this.repeat[g.length - 1]++ : (this.lines.push(a), this.repeat.push(1), this.format.push(c ? {backgroundFillStyle:c} : void 0), this.time.push(performance.now()), this.length++);
        };
        a.prototype.get = function(a) {
          return this.lines[a];
        };
        a.prototype.getFormat = function(a) {
          return this.format[a];
        };
        a.prototype.getTime = function(a) {
          return this.time[a];
        };
        a.prototype.getRepeat = function(a) {
          return this.repeat[a];
        };
        return a;
      }();
      a.Buffer = k;
      var v = function() {
        function a(l) {
          this.lineColor = "#2A2A2A";
          this.alternateLineColor = "#262626";
          this.textColor = "#FFFFFF";
          this.selectionColor = "#96C9F3";
          this.selectionTextColor = "#000000";
          this.ratio = 1;
          this.showLineNumbers = !0;
          this.showLineCounter = this.showLineTime = !1;
          this.canvas = l;
          this.canvas.focus();
          this.context = l.getContext("2d", {original:!0});
          this.context.fillStyle = "#FFFFFF";
          this.fontSize = 10;
          this.columnIndex = this.pageIndex = this.lineIndex = 0;
          this.selection = null;
          this.lineHeight = 15;
          this.hasFocus = !1;
          window.addEventListener("resize", this._resizeHandler.bind(this), !1);
          this._resizeHandler();
          this.textMarginBottom = this.textMarginLeft = 4;
          this.refreshFrequency = 0;
          this.buffer = new k;
          l.addEventListener("keydown", function(a) {
            var l = 0;
            switch(a.keyCode) {
              case p:
                this.showLineNumbers = !this.showLineNumbers;
                break;
              case C:
                this.showLineTime = !this.showLineTime;
                break;
              case m:
                l = -1;
                break;
              case h:
                l = 1;
                break;
              case c:
                l = -this.pageLineCount;
                break;
              case g:
                l = this.pageLineCount;
                break;
              case q:
                l = -this.lineIndex;
                break;
              case t:
                l = this.buffer.length - this.lineIndex;
                break;
              case f:
                this.columnIndex -= a.metaKey ? 10 : 1;
                0 > this.columnIndex && (this.columnIndex = 0);
                a.preventDefault();
                break;
              case b:
                this.columnIndex += a.metaKey ? 10 : 1;
                a.preventDefault();
                break;
              case e:
                a.metaKey && (this.selection = {start:0, end:this.buffer.length}, a.preventDefault());
                break;
              case r:
                if (a.metaKey) {
                  var d = "";
                  if (this.selection) {
                    for (var n = this.selection.start;n <= this.selection.end;n++) {
                      d += this.buffer.get(n) + "\n";
                    }
                  } else {
                    d = this.buffer.get(this.lineIndex);
                  }
                  alert(d);
                }
              ;
            }
            a.metaKey && (l *= this.pageLineCount);
            l && (this.scroll(l), a.preventDefault());
            l && a.shiftKey ? this.selection ? this.lineIndex > this.selection.start ? this.selection.end = this.lineIndex : this.selection.start = this.lineIndex : 0 < l ? this.selection = {start:this.lineIndex - l, end:this.lineIndex} : 0 > l && (this.selection = {start:this.lineIndex, end:this.lineIndex - l}) : l && (this.selection = null);
            this.paint();
          }.bind(this), !1);
          l.addEventListener("focus", function(b) {
            this.hasFocus = !0;
          }.bind(this), !1);
          l.addEventListener("blur", function(b) {
            this.hasFocus = !1;
          }.bind(this), !1);
          var c = 33, g = 34, q = 36, t = 35, m = 38, h = 40, f = 37, b = 39, e = 65, r = 67, p = 78, C = 84;
        }
        a.prototype.resize = function() {
          this._resizeHandler();
        };
        a.prototype._resizeHandler = function() {
          var a = this.canvas.parentElement, c = a.clientWidth, a = a.clientHeight - 1, g = window.devicePixelRatio || 1;
          1 !== g ? (this.ratio = g / 1, this.canvas.width = c * this.ratio, this.canvas.height = a * this.ratio, this.canvas.style.width = c + "px", this.canvas.style.height = a + "px") : (this.ratio = 1, this.canvas.width = c, this.canvas.height = a);
          this.pageLineCount = Math.floor(this.canvas.height / this.lineHeight);
        };
        a.prototype.gotoLine = function(a) {
          this.lineIndex = n(a, 0, this.buffer.length - 1);
        };
        a.prototype.scrollIntoView = function() {
          this.lineIndex < this.pageIndex ? this.pageIndex = this.lineIndex : this.lineIndex >= this.pageIndex + this.pageLineCount && (this.pageIndex = this.lineIndex - this.pageLineCount + 1);
        };
        a.prototype.scroll = function(a) {
          this.gotoLine(this.lineIndex + a);
          this.scrollIntoView();
        };
        a.prototype.paint = function() {
          var a = this.pageLineCount;
          this.pageIndex + a > this.buffer.length && (a = this.buffer.length - this.pageIndex);
          var c = this.textMarginLeft, g = c + (this.showLineNumbers ? 5 * (String(this.buffer.length).length + 2) : 0), q = g + (this.showLineTime ? 40 : 10), t = q + 25;
          this.context.font = this.fontSize + 'px Consolas, "Liberation Mono", Courier, monospace';
          this.context.setTransform(this.ratio, 0, 0, this.ratio, 0, 0);
          for (var m = this.canvas.width, h = this.lineHeight, f = 0;f < a;f++) {
            var b = f * this.lineHeight, e = this.pageIndex + f, r = this.buffer.get(e), p = this.buffer.getFormat(e), C = this.buffer.getRepeat(e), d = 1 < e ? this.buffer.getTime(e) - this.buffer.getTime(0) : 0;
            this.context.fillStyle = e % 2 ? this.lineColor : this.alternateLineColor;
            p && p.backgroundFillStyle && (this.context.fillStyle = p.backgroundFillStyle);
            this.context.fillRect(0, b, m, h);
            this.context.fillStyle = this.selectionTextColor;
            this.context.fillStyle = this.textColor;
            this.selection && e >= this.selection.start && e <= this.selection.end && (this.context.fillStyle = this.selectionColor, this.context.fillRect(0, b, m, h), this.context.fillStyle = this.selectionTextColor);
            this.hasFocus && e === this.lineIndex && (this.context.fillStyle = this.selectionColor, this.context.fillRect(0, b, m, h), this.context.fillStyle = this.selectionTextColor);
            0 < this.columnIndex && (r = r.substring(this.columnIndex));
            b = (f + 1) * this.lineHeight - this.textMarginBottom;
            this.showLineNumbers && this.context.fillText(String(e), c, b);
            this.showLineTime && this.context.fillText(d.toFixed(1).padLeft(" ", 6), g, b);
            1 < C && this.context.fillText(String(C).padLeft(" ", 3), q, b);
            this.context.fillText(r, t, b);
          }
        };
        a.prototype.refreshEvery = function(a) {
          function c() {
            g.paint();
            g.refreshFrequency && setTimeout(c, g.refreshFrequency);
          }
          var g = this;
          this.refreshFrequency = a;
          g.refreshFrequency && setTimeout(c, g.refreshFrequency);
        };
        a.prototype.isScrolledToBottom = function() {
          return this.lineIndex === this.buffer.length - 1;
        };
        return a;
      }();
      a.Terminal = v;
    })(k.Terminal || (k.Terminal = {}));
  })(d.Tools || (d.Tools = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      var d = function() {
        function a(d) {
          this._lastWeightedTime = this._lastTime = this._index = 0;
          this._gradient = "#FF0000 #FF1100 #FF2300 #FF3400 #FF4600 #FF5700 #FF6900 #FF7B00 #FF8C00 #FF9E00 #FFAF00 #FFC100 #FFD300 #FFE400 #FFF600 #F7FF00 #E5FF00 #D4FF00 #C2FF00 #B0FF00 #9FFF00 #8DFF00 #7CFF00 #6AFF00 #58FF00 #47FF00 #35FF00 #24FF00 #12FF00 #00FF00".split(" ");
          this._container = d;
          this._canvas = document.createElement("canvas");
          this._container.appendChild(this._canvas);
          this._context = this._canvas.getContext("2d");
          this._listenForContainerSizeChanges();
        }
        a.prototype._listenForContainerSizeChanges = function() {
          var a = this._containerWidth, d = this._containerHeight;
          this._onContainerSizeChanged();
          var l = this;
          setInterval(function() {
            if (a !== l._containerWidth || d !== l._containerHeight) {
              l._onContainerSizeChanged(), a = l._containerWidth, d = l._containerHeight;
            }
          }, 10);
        };
        a.prototype._onContainerSizeChanged = function() {
          var a = this._containerWidth, d = this._containerHeight, l = window.devicePixelRatio || 1;
          1 !== l ? (this._ratio = l / 1, this._canvas.width = a * this._ratio, this._canvas.height = d * this._ratio, this._canvas.style.width = a + "px", this._canvas.style.height = d + "px") : (this._ratio = 1, this._canvas.width = a, this._canvas.height = d);
        };
        Object.defineProperty(a.prototype, "_containerWidth", {get:function() {
          return this._container.clientWidth;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "_containerHeight", {get:function() {
          return this._container.clientHeight;
        }, enumerable:!0, configurable:!0});
        a.prototype.tickAndRender = function(a, d) {
          void 0 === a && (a = !1);
          void 0 === d && (d = 0);
          if (0 === this._lastTime) {
            this._lastTime = performance.now();
          } else {
            var l = 1 * (performance.now() - this._lastTime) + 0 * this._lastWeightedTime, c = this._context, g = 2 * this._ratio, q = 30 * this._ratio, t = performance;
            t.memory && (q += 30 * this._ratio);
            var m = (this._canvas.width - q) / (g + 1) | 0, h = this._index++;
            this._index > m && (this._index = 0);
            m = this._canvas.height;
            c.globalAlpha = 1;
            c.fillStyle = "black";
            c.fillRect(q + h * (g + 1), 0, 4 * g, this._canvas.height);
            var f = Math.min(1E3 / 60 / l, 1);
            c.fillStyle = "#00FF00";
            c.globalAlpha = a ? .5 : 1;
            f = m / 2 * f | 0;
            c.fillRect(q + h * (g + 1), m - f, g, f);
            d && (f = Math.min(1E3 / 240 / d, 1), c.fillStyle = "#FF6347", f = m / 2 * f | 0, c.fillRect(q + h * (g + 1), m / 2 - f, g, f));
            0 === h % 16 && (c.globalAlpha = 1, c.fillStyle = "black", c.fillRect(0, 0, q, this._canvas.height), c.fillStyle = "white", c.font = 8 * this._ratio + "px Arial", c.textBaseline = "middle", g = (1E3 / l).toFixed(0), d && (g += " " + d.toFixed(0)), t.memory && (g += " " + (t.memory.usedJSHeapSize / 1024 / 1024).toFixed(2)), c.fillText(g, 2 * this._ratio, this._containerHeight / 2 * this._ratio));
            this._lastTime = performance.now();
            this._lastWeightedTime = l;
          }
        };
        return a;
      }();
      a.FPS = d;
    })(d.Mini || (d.Mini = {}));
  })(d.Tools || (d.Tools = {}));
})(Shumway || (Shumway = {}));
console.timeEnd("Load Shared Dependencies");
console.time("Load AVM2 Dependencies");
(function(d) {
  (function(k) {
    k.timelineBuffer = new d.Tools.Profiler.TimelineBuffer("AVM2");
    k.counter = new d.Metrics.Counter(!1);
    k.countTimeline = function(a, d) {
      void 0 === d && (d = 1);
      k.timelineBuffer && k.timelineBuffer.count(a, d);
    };
    k.enterTimeline = function(a, d) {
    };
    k.leaveTimeline = function(a) {
    };
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    function a(a) {
      for (var d = [], l = 1;l < arguments.length;l++) {
        d[l - 1] = arguments[l];
      }
      var c = a.message;
      d.forEach(function(a, q) {
        c = c.replace("%" + (q + 1), a);
      });
      return "Error #" + a.code + ": " + c;
    }
    k.Errors = {InvokeOnIncompatibleObjectError:{code:1004, message:"Method %1 was invoked on an incompatible object."}, CallOfNonFunctionError:{code:1006, message:"%1 is not a function."}, ConvertNullToObjectError:{code:1009, message:"Cannot access a property or method of a null object reference."}, ConvertUndefinedToObjectError:{code:1010, message:"A term is undefined and has no properties."}, ClassNotFoundError:{code:1014, message:"Class %1 could not be found."}, CheckTypeFailedError:{code:1034, 
    message:"Type Coercion failed: cannot convert %1 to %2."}, WrongArgumentCountError:{code:1063, message:"Argument count mismatch on %1. Expected %2, got %3."}, ConstWriteError:{code:1074, message:"Illegal write to read-only property %1 on %2."}, XMLOnlyWorksWithOneItemLists:{code:1086, message:"The %1 method only works on lists containing one item."}, XMLAssignmentToIndexedXMLNotAllowed:{code:1087, message:"Assignment to indexed XML is not allowed."}, XMLMarkupMustBeWellFormed:{code:1088, message:"The markup in the document following the root element must be well-formed."}, 
    XMLAssigmentOneItemLists:{code:1089, message:"Assignment to lists with more than one item is not supported."}, XMLNamespaceWithPrefixAndNoURI:{code:1098, message:"Illegal prefix %1 for no namespace."}, OutOfRangeError:{code:1125, message:"The index %1 is out of range %2."}, VectorFixedError:{code:1126, message:"Cannot change the length of a fixed Vector."}, JSONCyclicStructure:{code:1129, message:"Cyclic structure cannot be converted to JSON string."}, JSONInvalidReplacer:{code:1131, message:"Replacer argument to JSON stringifier must be an array or a two parameter function."}, 
    JSONInvalidParseInput:{code:1132, message:"Invalid JSON parse input."}, InvalidRangeError:{code:1506, message:"The specified range is invalid."}, NullArgumentError:{code:1507, message:"Argument %1 cannot be null."}, InvalidArgumentError:{code:1508, message:"The value specified for argument %1 is invalid."}, InvalidParamError:{code:2004, message:"One of the parameters is invalid."}, ParamRangeError:{code:2006, message:"The supplied index is out of bounds."}, NullPointerError:{code:2007, message:"Parameter %1 must be non-null."}, 
    InvalidEnumError:{code:2008, message:"Parameter %1 must be one of the accepted values."}, CantInstantiateError:{code:2012, message:"%1 class cannot be instantiated."}, InvalidBitmapData:{code:2015, message:"Invalid BitmapData."}, EOFError:{code:2030, message:"End of file was encountered.", fqn:"flash.errors.EOFError"}, CompressedDataError:{code:2058, message:"There was an error decompressing the data.", fqn:"flash.errors.IOError"}, ProxyGetPropertyError:{code:2088, message:"The Proxy class does not implement getProperty. It must be overridden by a subclass."}, 
    ProxySetPropertyError:{code:2089, message:"The Proxy class does not implement setProperty. It must be overridden by a subclass."}, ProxyCallPropertyError:{code:2090, message:"The Proxy class does not implement callProperty. It must be overridden by a subclass."}, ProxyHasPropertyError:{code:2091, message:"The Proxy class does not implement hasProperty. It must be overridden by a subclass."}, ProxyDeletePropertyError:{code:2092, message:"The Proxy class does not implement deleteProperty. It must be overridden by a subclass."}, 
    ProxyGetDescendantsError:{code:2093, message:"The Proxy class does not implement getDescendants. It must be overridden by a subclass."}, ProxyNextNameIndexError:{code:2105, message:"The Proxy class does not implement nextNameIndex. It must be overridden by a subclass."}, ProxyNextNameError:{code:2106, message:"The Proxy class does not implement nextName. It must be overridden by a subclass."}, ProxyNextValueError:{code:2107, message:"The Proxy class does not implement nextValue. It must be overridden by a subclass."}, 
    TooFewArgumentsError:{code:2001, message:"Too few arguments were specified; got %1, %2 expected."}, SocketConnectError:{code:2011, message:"Socket connection failed to %1:%2."}, CantAddSelfError:{code:2024, message:"An object cannot be added as a child of itself."}, NotAChildError:{code:2025, message:"The supplied DisplayObject must be a child of the caller."}, DelayRangeError:{code:2066, message:"The Timer delay specified is out of range."}, ExternalInterfaceNotAvailableError:{code:2067, message:"The ExternalInterface is not available in this container. ExternalInterface requires Internet Explorer ActiveX, Firefox, Mozilla 1.7.5 and greater, or other browsers that support NPRuntime."}, 
    InvalidLoaderMethodError:{code:2069, message:"The Loader class does not implement this method."}, InvalidStageMethodError:{code:2071, message:"The Stage class does not implement this property or method."}, LoadingObjectNotSWFError:{code:2098, message:"The loading object is not a .swf file, you cannot request SWF properties from it."}, LoadingObjectNotInitializedError:{code:2099, message:"The loading object is not sufficiently loaded to provide this information."}, DecodeParamError:{code:2101, 
    message:"The String passed to URLVariables.decode() must be a URL-encoded query string containing name/value pairs."}, SceneNotFoundError:{code:2108, message:"Scene %1 was not found."}, FrameLabelNotFoundError:{code:2109, message:"Frame label %1 not found in scene %2."}, InvalidLoaderInfoMethodError:{code:2118, message:"The LoaderInfo class does not implement this method."}, CantAddParentError:{code:2150, message:"An object cannot be added as a child to one of it's children (or children's children, etc.)."}, 
    ObjectWithStringsParamError:{code:2196, message:"Parameter %1 must be an Object with only String values."}};
    for (var n in k.Errors) {
      var w = k.Errors[n];
      w.typeName = n;
      k.Errors[w.code] = w;
    }
    k.getErrorMessage = function(a) {
      var n = "Error #" + a;
      if (!d.AVM2.Runtime.debuggerMode.value) {
        return n;
      }
      a = k.Errors[a];
      return n + ": " + (a && a.message || "(unknown)");
    };
    k.getErrorInfo = function(a) {
      return k.Errors[a];
    };
    k.formatErrorMessage = a;
    k.translateErrorMessage = function(n) {
      if (n.type) {
        switch(n.type) {
          case "undefined_method":
            return a(k.Errors.CallOfNonFunctionError, "value");
          default:
            throw d.Debug.notImplemented(n.type);;
        }
      } else {
        return 0 <= n.message.indexOf("is not a function") ? a(k.Errors.CallOfNonFunctionError, "value") : n.message;
      }
    };
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
Errors = Shumway.AVM2.Errors;
(function(d) {
  (function(k) {
    (function(a) {
      var n = null;
      "undefined" !== typeof TextDecoder && (n = new TextDecoder);
      var k = function() {
        function a(d) {
          this._bytes = d;
          this._view = new DataView(d.buffer, d.byteOffset);
          this._position = 0;
        }
        a._getResultBuffer = function(d) {
          if (!a._resultBuffer || a._resultBuffer.length < d) {
            a._resultBuffer = new Int32Array(2 * d);
          }
          return a._resultBuffer;
        };
        Object.defineProperty(a.prototype, "position", {get:function() {
          return this._position;
        }, enumerable:!0, configurable:!0});
        a.prototype.remaining = function() {
          return this._bytes.length - this._position;
        };
        a.prototype.seek = function(a) {
          this._position = a;
        };
        a.prototype.readU8 = function() {
          return this._bytes[this._position++];
        };
        a.prototype.readU8s = function(a) {
          var l = new Uint8Array(a);
          l.set(this._bytes.subarray(this._position, this._position + a), 0);
          this._position += a;
          return l;
        };
        a.prototype.readS8 = function() {
          return this._bytes[this._position++] << 24 >> 24;
        };
        a.prototype.readU32 = function() {
          return this.readS32() >>> 0;
        };
        a.prototype.readU30 = function() {
          return this.readU32();
        };
        a.prototype.readU30Unsafe = function() {
          return this.readU32();
        };
        a.prototype.readS16 = function() {
          return this.readU30Unsafe() << 16 >> 16;
        };
        a.prototype.readS32 = function() {
          var a = this.readU8();
          a & 128 && (a = a & 127 | this.readU8() << 7, a & 16384 && (a = a & 16383 | this.readU8() << 14, a & 2097152 && (a = a & 2097151 | this.readU8() << 21, a & 268435456 && (a = a & 268435455 | this.readU8() << 28, a &= 4294967295))));
          return a;
        };
        a.prototype.readWord = function() {
          var a = this._view.getUint32(this._position, !0);
          this._position += 4;
          return a;
        };
        a.prototype.readS24 = function() {
          return (this.readU8() | this.readU8() << 8 | this.readU8() << 16) << 8 >> 8;
        };
        a.prototype.readDouble = function() {
          var a = this._view.getFloat64(this._position, !0);
          this._position += 8;
          return a;
        };
        a.prototype.readUTFString = function(k) {
          if (n) {
            var l = this._position;
            this._position += k;
            return n.decode(this._bytes.subarray(l, l + k));
          }
          var l = this._position, c = l + k, g = this._bytes, q = 0;
          for (k = a._getResultBuffer(2 * k);l < c;) {
            var t = g[l++];
            if (127 >= t) {
              k[q++] = t;
            } else {
              if (192 <= t) {
                var m = 0;
                224 > t ? m = (t & 31) << 6 | g[l++] & 63 : 240 > t ? m = (t & 15) << 12 | (g[l++] & 63) << 6 | g[l++] & 63 : (m = ((t & 7) << 18 | (g[l++] & 63) << 12 | (g[l++] & 63) << 6 | g[l++] & 63) - 65536, k[q++] = ((m & 1047552) >>> 10) + 55296, m = (m & 1023) + 56320);
                k[q++] = m;
              }
            }
          }
          this._position = l;
          return d.StringUtilities.fromCharCodeArray(k.subarray(0, q));
        };
        a._resultBuffer = new Int32Array(256);
        return a;
      }();
      a.AbcStream = k;
    })(k.ABC || (k.ABC = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
__extends = this.__extends || function(d, k) {
  function a() {
    this.constructor = d;
  }
  for (var n in k) {
    k.hasOwnProperty(n) && (d[n] = k[n]);
  }
  a.prototype = k.prototype;
  d.prototype = new a;
};
(function(d) {
  (function(k) {
    (function(a) {
      var n = d.isNumeric, w = d.isObject, v = d.Debug.notImplemented, u = function() {
        return function(b, e, a, f) {
          this.name = b;
          this.type = e;
          this.value = a;
          this.optional = f;
        };
      }();
      a.Parameter = u;
      var l = function() {
        function e(b, f, p) {
          var m = b.constantPool, r = b.methods, c = b.classes, g = b.metadata;
          this.holder = p;
          this.name = m.multinames[f.readU30()];
          p = f.readU8();
          this.kind = p & 15;
          this.attributes = p >> 4 & 15;
          switch(this.kind) {
            case 0:
            ;
            case 6:
              this.slotId = f.readU30();
              this.typeName = m.multinames[f.readU30()];
              b = f.readU30();
              this.value = void 0;
              0 !== b && (this.hasDefaultValue = !0, this.value = m.getValue(f.readU8(), b));
              break;
            case 1:
            ;
            case 3:
            ;
            case 2:
              this.dispId = f.readU30();
              this.methodInfo = r[f.readU30()];
              this.methodInfo.name = this.name;
              this.methodInfo.flags |= a.MethodTypeFlagByTraitKind[this.kind];
              h.attachHolder(this.methodInfo, this.holder);
              this.methodInfo.abc = b;
              break;
            case 4:
              this.slotId = f.readU30(), this.classInfo = c[f.readU30()];
          }
          if (this.attributes & 4) {
            var q, m = 0;
            for (b = f.readU30();m < b;m++) {
              r = g[f.readU30()], "__go_to_definition_help" !== r.name && "__go_to_ctor_definition_help" !== r.name && (q || (q = {}), q[r.name] = r);
            }
            q && (this.isClass() && (this.classInfo.metadata = q), this.metadata = q);
          }
        }
        e.prototype.isSlot = function() {
          return 0 === this.kind;
        };
        e.prototype.isConst = function() {
          return 6 === this.kind;
        };
        e.prototype.isMethod = function() {
          return 1 === this.kind;
        };
        e.prototype.isClass = function() {
          return 4 === this.kind;
        };
        e.prototype.isGetter = function() {
          return 2 === this.kind;
        };
        e.prototype.isSetter = function() {
          return 3 === this.kind;
        };
        e.prototype.isAccessor = function() {
          return this.isGetter() || this.isSetter();
        };
        e.prototype.isMethodOrAccessor = function() {
          return this.isMethod() || this.isGetter() || this.isSetter();
        };
        e.prototype.isProtected = function() {
          return this.name.namespaces[0].isProtected();
        };
        e.prototype.kindName = function() {
          switch(this.kind) {
            case 0:
              return "Slot";
            case 6:
              return "Const";
            case 1:
              return "Method";
            case 3:
              return "Setter";
            case 2:
              return "Getter";
            case 4:
              return "Class";
            case 5:
              return "Function";
          }
          d.Debug.unexpected();
        };
        e.prototype.isOverride = function() {
          return this.attributes & 2;
        };
        e.prototype.isFinal = function() {
          return this.attributes & 1;
        };
        e.prototype.toString = function() {
          var e = d.IntegerUtilities.getFlags(this.attributes, ["final", "override", "metadata"]);
          e && (e += " ");
          e += b.getQualifiedName(this.name);
          switch(this.kind) {
            case 0:
            ;
            case 6:
              return e + ", typeName: " + this.typeName + ", slotId: " + this.slotId + ", value: " + this.value;
            case 1:
            ;
            case 3:
            ;
            case 2:
              return e + ", " + this.kindName() + ": " + this.methodInfo.name;
            case 4:
              return e + ", slotId: " + this.slotId + ", class: " + this.classInfo;
          }
        };
        e.parseTraits = function(b, a, f) {
          for (var h = a.readU30(), m = [], r = 0;r < h;r++) {
            m.push(new e(b, a, f));
          }
          return m;
        };
        return e;
      }();
      a.Trait = l;
      var c = function() {
        return function(b, e, a) {
          this.traits = null;
          this.abc = b;
          this.index = e;
          this.hash = b.hash & 65535 | a | e << 19;
        };
      }();
      a.Info = c;
      var g = function(b) {
        function e(a, f, h) {
          b.call(this, a, f, 131072);
          this.holder = null;
          this.maxScopeDepth = this.initScopeDepth = this.localCount = this.maxStack = 0;
          this.analysis = this.activationPrototype = this.lastBoundMethod = this.classScope = this.cachedMemoizer = this.cachedMethodOrTrampoline = this.freeMethod = this.exceptions = this.code = null;
          a = a.constantPool;
          f = h.readU30();
          this.returnType = a.multinames[h.readU30()];
          this.parameters = [];
          for (var m = 0;m < f;m++) {
            this.parameters.push(new u(void 0, a.multinames[h.readU30()], void 0, !1));
          }
          h.readU30();
          this.flags = h.readU8();
          if (this.flags & 8) {
            for (m = h.readU30(), m = f - m;m < f;m++) {
              var r = h.readU30();
              this.parameters[m].value = a.getValue(h.readU8(), r);
              this.parameters[m].optional = !0;
            }
          }
          if (this.flags & 128) {
            for (m = 0;m < f;m++) {
              e.parseParameterNames ? this.parameters[m].name = a.strings[h.readU30()] : (h.readU30(), this.parameters[m].name = e._getParameterName(m));
            }
          } else {
            for (m = 0;m < f;m++) {
              this.parameters[m].name = e._getParameterName(m);
            }
          }
        }
        __extends(e, b);
        Object.defineProperty(e.prototype, "hasBody", {get:function() {
          return !!(this.flags & 256);
        }, set:function(b) {
          this.flags |= 256;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(e.prototype, "isInstanceInitializer", {get:function() {
          return !!(this.flags & 512);
        }, set:function(b) {
          this.flags |= 512;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(e.prototype, "isClassInitializer", {get:function() {
          return !!(this.flags & 1024);
        }, set:function(b) {
          this.flags |= 1024;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(e.prototype, "isScriptInitializer", {get:function() {
          return !!(this.flags & 2048);
        }, set:function(b) {
          this.flags |= 2048;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(e.prototype, "isMethod", {get:function() {
          return !!(this.flags & 4096);
        }, set:function(b) {
          this.flags |= 4096;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(e.prototype, "isGetter", {get:function() {
          return !!(this.flags & 8192);
        }, set:function(b) {
          this.flags |= 8192;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(e.prototype, "isSetter", {get:function() {
          return !!(this.flags & 16384);
        }, set:function(b) {
          this.flags |= 16384;
        }, enumerable:!0, configurable:!0});
        e._getParameterName = function(b) {
          return 26 > b ? String.fromCharCode(65 + b) : "P" + (b - 26);
        };
        e.prototype.toString = function() {
          var b = d.IntegerUtilities.getFlags(this.flags, "NEED_ARGUMENTS NEED_ACTIVATION NEED_REST HAS_OPTIONAL   SET_DXN HAS_PARAM_NAMES".split(" "));
          return (b ? b + " " : "") + this.name;
        };
        e.prototype.hasOptional = function() {
          return !!(this.flags & 8);
        };
        e.prototype.needsActivation = function() {
          return !!(this.flags & 2);
        };
        e.prototype.needsRest = function() {
          return !!(this.flags & 4);
        };
        e.prototype.needsArguments = function() {
          return !!(this.flags & 1);
        };
        e.prototype.isNative = function() {
          return !!(this.flags & 32);
        };
        e.prototype.isClassMember = function() {
          return this.holder instanceof t;
        };
        e.prototype.isInstanceMember = function() {
          return this.holder instanceof q;
        };
        e.prototype.isScriptMember = function() {
          return this.holder instanceof m;
        };
        e.prototype.hasSetsDxns = function() {
          return !!(this.flags & 64);
        };
        e.parseException = function(b, e) {
          var a = b.constantPool.multinames, f = {start:e.readU30(), end:e.readU30(), target:e.readU30(), typeNameIndex:e.readU30(), typeName:void 0, varName:a[e.readU30()]};
          f.typeName = a[f.typeNameIndex];
          return f;
        };
        e.parseBody = function(b, a) {
          var f = b.methods, p = a.readU30(), f = f[p];
          f.index = p;
          f.hasBody = !0;
          f.maxStack = a.readU30();
          f.localCount = a.readU30();
          f.initScopeDepth = a.readU30();
          f.maxScopeDepth = a.readU30();
          f.code = a.readU8s(a.readU30());
          for (var p = [], h = a.readU30(), m = 0;m < h;++m) {
            p.push(e.parseException(b, a));
          }
          f.exceptions = p;
          f.traits = l.parseTraits(b, a, f);
        };
        e.prototype.hasExceptions = function() {
          return 0 < this.exceptions.length;
        };
        e.parseParameterNames = !1;
        return e;
      }(c);
      a.MethodInfo = g;
      var q = function(b) {
        function e(a, f, m) {
          b.call(this, a, f, 65536);
          this.runtimeId = e.nextID++;
          f = a.constantPool;
          var r = a.methods;
          this.name = f.multinames[m.readU30()];
          this.superName = f.multinames[m.readU30()];
          this.flags = m.readU8();
          this.protectedNs = void 0;
          this.flags & 8 && (this.protectedNs = f.namespaces[m.readU30()]);
          var c = m.readU30();
          this.interfaces = [];
          for (var g = 0;g < c;g++) {
            this.interfaces[g] = f.multinames[m.readU30()];
          }
          this.init = r[m.readU30()];
          this.init.isInstanceInitializer = !0;
          this.init.name = this.name;
          h.attachHolder(this.init, this);
          this.traits = l.parseTraits(a, m, this);
        }
        __extends(e, b);
        e.prototype.toString = function() {
          var b = d.IntegerUtilities.getFlags(this.flags & 8, ["sealed", "final", "interface", "protected"]), b = (b ? b + " " : "") + this.name;
          this.superName && (b += " extends " + this.superName);
          return b;
        };
        e.prototype.isFinal = function() {
          return !!(this.flags & 2);
        };
        e.prototype.isSealed = function() {
          return !!(this.flags & 1);
        };
        e.prototype.isInterface = function() {
          return !!(this.flags & 4);
        };
        e.nextID = 1;
        return e;
      }(c);
      a.InstanceInfo = q;
      (function(b) {
        b[b.AbcMask = 65535] = "AbcMask";
        b[b.KindMask = 458752] = "KindMask";
        b[b.ClassInfo = 0] = "ClassInfo";
        b[b.InstanceInfo = 65536] = "InstanceInfo";
        b[b.MethodInfo = 131072] = "MethodInfo";
        b[b.ScriptInfo = 196608] = "ScriptInfo";
        b[b.NamespaceSet = 262144] = "NamespaceSet";
        b[b.IndexOffset = 19] = "IndexOffset";
      })(a.Hashes || (a.Hashes = {}));
      var t = function(e) {
        function a(b, f, m) {
          e.call(this, b, f, 0);
          this.runtimeId = a.nextID++;
          this.init = b.methods[m.readU30()];
          this.init.isClassInitializer = !0;
          h.attachHolder(this.init, this);
          this.traits = l.parseTraits(b, m, this);
          this.instanceInfo = b.instances[f];
          this.instanceInfo.classInfo = this;
          this.defaultValue = a.getDefaultValue(this.instanceInfo.name);
        }
        __extends(a, e);
        a.getDefaultValue = function(e) {
          return b.getQualifiedName(e) === b.Int || b.getQualifiedName(e) === b.Uint ? 0 : b.getQualifiedName(e) === b.Number ? NaN : b.getQualifiedName(e) === b.Boolean ? !1 : null;
        };
        a.prototype.toString = function() {
          return this.instanceInfo.name.toString();
        };
        a.nextID = 1;
        return a;
      }(c);
      a.ClassInfo = t;
      var m = function(b) {
        function e(a, f, m) {
          b.call(this, a, f, 196608);
          this.runtimeId = t.nextID++;
          this.name = a.name + "$script" + f;
          this.init = a.methods[m.readU30()];
          this.init.isScriptInitializer = !0;
          h.attachHolder(this.init, this);
          this.traits = l.parseTraits(a, m, this);
        }
        __extends(e, b);
        e.prototype.toString = function() {
          return this.name;
        };
        return e;
      }(c);
      a.ScriptInfo = m;
      var h = function() {
        function b(f, h, c) {
          void 0 === c && (c = 0);
          k.enterTimeline("Parse ABC");
          this.name = h;
          this.env = {};
          var l;
          c || (k.enterTimeline("Adler"), l = d.HashUtilities.hashBytesTo32BitsAdler(f, 0, f.length), k.leaveTimeline());
          this.hash = c ? c : l;
          c = new a.AbcStream(f);
          b._checkMagic(c);
          k.enterTimeline("Parse constantPool");
          this.constantPool = new r(c, this);
          k.leaveTimeline();
          k.enterTimeline("Parse Method Infos");
          this.methods = [];
          f = c.readU30();
          for (h = 0;h < f;++h) {
            this.methods.push(new g(this, h, c));
          }
          k.leaveTimeline();
          k.enterTimeline("Parse MetaData Infos");
          this.metadata = [];
          f = c.readU30();
          for (h = 0;h < f;++h) {
            this.metadata.push(new e(this, c));
          }
          k.leaveTimeline();
          k.enterTimeline("Parse Instance Infos");
          this.instances = [];
          f = c.readU30();
          for (h = 0;h < f;++h) {
            this.instances.push(new q(this, h, c));
          }
          k.leaveTimeline();
          k.enterTimeline("Parse Class Infos");
          this.classes = [];
          for (h = 0;h < f;++h) {
            this.classes.push(new t(this, h, c));
          }
          k.leaveTimeline();
          k.enterTimeline("Parse Script Infos");
          this.scripts = [];
          f = c.readU30();
          for (h = 0;h < f;++h) {
            this.scripts.push(new m(this, h, c));
          }
          k.leaveTimeline();
          k.enterTimeline("Parse Method Body Info");
          f = c.readU30();
          for (h = 0;h < f;++h) {
            g.parseBody(this, c);
          }
          k.leaveTimeline();
          k.leaveTimeline();
        }
        b._checkMagic = function(b) {
          b = b.readWord();
          if (3014671 > b) {
            throw Error("Invalid ABC File (magic = " + Number(b).toString(16) + ")");
          }
        };
        Object.defineProperty(b.prototype, "lastScript", {get:function() {
          return this.scripts[this.scripts.length - 1];
        }, enumerable:!0, configurable:!0});
        b.attachHolder = function(b, e) {
          b.holder = e;
        };
        b.prototype.toString = function() {
          return this.name;
        };
        b.prototype.getConstant = function(b) {
          var e = b >> 19;
          switch(b & 458752) {
            case 0:
              return this.classes[e];
            case 65536:
              return this.instances[e];
            case 131072:
              return this.methods[e];
            case 196608:
              return this.scripts[e];
            case 262144:
              return this.constantPool.namespaceSets[e];
            default:
              v("Kind");
          }
        };
        return b;
      }();
      a.AbcFile = h;
      var f = function() {
        function b(e, a, f, p) {
          void 0 === a && (a = "");
          void 0 === a && (a = "");
          this.kind = e;
          this.uri = a;
          this.prefix = f;
          this.qualifiedName = void 0;
          this._buildNamespace(p);
        }
        b.prototype._buildNamespace = function(e) {
          22 === this.kind && (this.kind = 8);
          this.isPublic() && this.uri ? (e = this.uri.length - 1, this.uri.charCodeAt(e) > b._MIN_API_MARK && (this.uri = this.uri.substring(0, e - 1))) : this.isUnique() && (this.uri = "private " + e);
          26 === this.kind && (this.uri = "*");
          this.qualifiedName = b._qualifyNamespace(this.kind, this.uri, this.prefix ? this.prefix : "");
        };
        b._hashNamespace = function(e, a, f) {
          var h = b._knownURIs.indexOf(a);
          if (0 <= h) {
            return e << 2 | h;
          }
          var h = new Int32Array(1 + a.length + f.length), m = 0;
          h[m++] = e;
          for (e = 0;e < a.length;e++) {
            h[m++] = a.charCodeAt(e);
          }
          for (e = 0;e < f.length;e++) {
            h[m++] = f.charCodeAt(e);
          }
          return d.HashUtilities.hashBytesTo32BitsMD5(h, 0, m);
        };
        b._qualifyNamespace = function(e, a, f) {
          var h = e + a, m = b._mangledNamespaceCache[h];
          if (m) {
            return m;
          }
          "8http://adobe.com/AS3/2006/builtin" === h ? m = "$AS3_" : (m = b._hashNamespace(e, a, f), m = d.StringUtilities.variableLengthEncodeInt32(m));
          b._mangledNamespaceMap[m] = {kind:e, uri:a, prefix:f};
          return b._mangledNamespaceCache[h] = m;
        };
        b.fromQualifiedName = function(e) {
          var a = e.charCodeAt(0), a = 36 === a ? e.indexOf("_", 1) : d.StringUtilities.fromEncoding(a);
          e = b._mangledNamespaceMap[e.substring(0, a + 1)];
          return new b(e.kind, e.uri, e.prefix);
        };
        b.kindFromString = function(e) {
          for (var a in b._kinds) {
            if (b._kinds[a] === e) {
              return a;
            }
          }
          return NaN;
        };
        b.createNamespace = function(e, a) {
          void 0 === a && (a = void 0);
          return new b(8, e, a);
        };
        b.parse = function(e, a, f) {
          var h = a.readU8();
          e = e.strings[a.readU30()];
          return new b(h, e, void 0, f);
        };
        b.prototype.isPublic = function() {
          return 8 === this.kind || 22 === this.kind;
        };
        b.prototype.isProtected = function() {
          return 24 === this.kind || 26 === this.kind;
        };
        b.prototype.isPrivate = function() {
          return 5 === this.kind;
        };
        b.prototype.isPackageInternal = function() {
          return 23 === this.kind;
        };
        b.prototype.isUnique = function() {
          return 5 === this.kind && !this.uri;
        };
        b.prototype.isDynamic = function() {
          return this.isPublic() && !this.uri;
        };
        b.prototype.getURI = function() {
          return this.uri;
        };
        b.prototype.toString = function() {
          return b._kinds[this.kind] + (this.uri ? " " + this.uri : "");
        };
        b.prototype.clone = function() {
          var e = Object.create(b.prototype);
          e.kind = this.kind;
          e.uri = this.uri;
          e.prefix = this.prefix;
          e.qualifiedName = this.qualifiedName;
          return e;
        };
        b.prototype.isEqualTo = function(b) {
          return this.qualifiedName === b.qualifiedName;
        };
        b.prototype.inNamespaceSet = function(b) {
          for (var e = 0;e < b.length;e++) {
            if (b[e].qualifiedName === this.qualifiedName) {
              return !0;
            }
          }
          return !1;
        };
        b.prototype.getAccessModifier = function() {
          return b._kinds[this.kind];
        };
        b.prototype.getQualifiedName = function() {
          return this.qualifiedName;
        };
        b.fromSimpleName = function(e) {
          if (e in b._simpleNameCache) {
            return b._simpleNameCache[e];
          }
          var a;
          a = 0 === e.indexOf("[") ? e.substring(1, e.length - 1).split(",") : [e];
          return b._simpleNameCache[e] = a.map(function(e) {
            e = e.trim();
            var a;
            0 < e.indexOf(" ") ? (a = e.substring(0, e.indexOf(" ")).trim(), e = e.substring(e.indexOf(" ") + 1).trim()) : (a = b._kinds, e === a[8] || e === a[23] || e === a[5] || e === a[24] || e === a[25] || e === a[26] ? (a = e, e = "") : a = b._publicPrefix);
            return new b(b.kindFromString(a), e);
          });
        };
        b._publicPrefix = "public";
        b._kinds = function() {
          var e = d.ObjectUtilities.createMap();
          e[8] = b._publicPrefix;
          e[23] = "packageInternal";
          e[5] = "private";
          e[24] = "protected";
          e[25] = "explicit";
          e[26] = "staticProtected";
          return e;
        }();
        b._MIN_API_MARK = 58004;
        b._MAX_API_MARK = 63743;
        b._knownURIs = [""];
        b._mangledNamespaceCache = d.ObjectUtilities.createMap();
        b._mangledNamespaceMap = d.ObjectUtilities.createMap();
        b.PUBLIC = new b(8);
        b.PROTECTED = new b(24);
        b.PROXY = new b(8, "http://www.adobe.com/2006/actionscript/flash/proxy");
        b.VECTOR = new b(8, "__AS3__.vec");
        b.VECTOR_PACKAGE = new b(23, "__AS3__.vec");
        b.BUILTIN = new b(5, "builtin.as$0");
        b._simpleNameCache = d.ObjectUtilities.createMap();
        return b;
      }();
      a.Namespace = f;
      f.prototype = Object.create(f.prototype);
      var b = function() {
        function b(e, a, f) {
          this.runtimeId = b._nextID++;
          this.namespaces = e;
          this.name = a;
          this.flags = f | 0;
        }
        b.parse = function(e, a, f, h, m) {
          var r = 0, c = a.readU8(), g, q = [], t = 0;
          switch(c) {
            case 7:
            ;
            case 13:
              (r = a.readU30()) ? q = [e.namespaces[r]] : t &= ~b.RUNTIME_NAME;
              (r = a.readU30()) && (g = e.strings[r]);
              break;
            case 15:
            ;
            case 16:
              (r = a.readU30()) ? g = e.strings[r] : t &= ~b.RUNTIME_NAME;
              t |= b.RUNTIME_NAMESPACE;
              break;
            case 17:
            ;
            case 18:
              t |= b.RUNTIME_NAMESPACE;
              t |= b.RUNTIME_NAME;
              break;
            case 9:
            ;
            case 14:
              (r = a.readU30()) ? g = e.strings[r] : t &= ~b.RUNTIME_NAME;
              r = a.readU30();
              q = e.namespaceSets[r];
              break;
            case 27:
            ;
            case 28:
              t |= b.RUNTIME_NAME;
              r = a.readU30();
              q = e.namespaceSets[r];
              break;
            case 29:
              return e = a.readU32(), a.readU32(), a = a.readU32(), r = void 0, f[e] && f[a] ? (r = new b(f[e].namespaces, f[e].name, t), r.typeParameter = f[a]) : h.push({index:m, factoryTypeIndex:e, typeParameterIndex:a, flags:t}), r;
            default:
              d.Debug.unexpected();
          }
          switch(c) {
            case 13:
            ;
            case 16:
            ;
            case 18:
            ;
            case 14:
            ;
            case 28:
              t |= b.ATTRIBUTE;
          }
          return new b(q, g, t);
        };
        b.isMultiname = function(e) {
          return "number" === typeof e || "string" === typeof e || e instanceof b || e instanceof Number;
        };
        b.needsResolution = function(e) {
          return e instanceof b && 1 < e.namespaces.length;
        };
        b.isQName = function(e) {
          return e instanceof b ? e.namespaces && 1 === e.namespaces.length : !0;
        };
        b.isRuntimeName = function(e) {
          return e instanceof b && e.isRuntimeName();
        };
        b.isRuntimeNamespace = function(e) {
          return e instanceof b && e.isRuntimeNamespace();
        };
        b.isRuntime = function(e) {
          return e instanceof b && e.isRuntimeName() || e.isRuntimeNamespace();
        };
        b.getQualifiedName = function(e) {
          if (e instanceof b) {
            if (void 0 !== e.qualifiedName) {
              return e.qualifiedName;
            }
            var a = String(e.name);
            if (n(a) && e.namespaces[0].isPublic()) {
              return e.qualifiedName = a;
            }
            e = e.qualifiedName = b.qualifyName(e.namespaces[0], a);
          }
          return e;
        };
        b.qualifyName = function(b, e) {
          return d.StringUtilities.concat3("$", b.qualifiedName, e);
        };
        b.stripPublicQualifier = function(b) {
          var e = "$" + f.PUBLIC.qualifiedName;
          return 0 !== b.indexOf(e) ? void 0 : b.substring(e.length);
        };
        b.fromQualifiedName = function(e) {
          if (e instanceof b) {
            return e;
          }
          if (n(e)) {
            return new b([f.PUBLIC], e, 0);
          }
          if ("$" === e[0]) {
            var a = f.fromQualifiedName(e.substring(1));
            return new b([a], e.substring(1 + a.qualifiedName.length), 0);
          }
        };
        b.getNameFromPublicQualifiedName = function(e) {
          return b.fromQualifiedName(e).name;
        };
        b.getFullQualifiedName = function(e) {
          var a = b.getQualifiedName(e);
          e instanceof b && e.typeParameter && (a += "$" + b.getFullQualifiedName(e.typeParameter));
          return a;
        };
        b.getPublicQualifiedName = function(e) {
          var a;
          if ("string" === typeof e && (a = b._publicQualifiedNameCache[e])) {
            return a;
          }
          if (n(e)) {
            return d.toNumber(e);
          }
          if (null !== e && w(e)) {
            return e;
          }
          a = b.qualifyName(f.PUBLIC, e);
          "string" === typeof e && (b._publicQualifiedNameCache[e] = a);
          return a;
        };
        b.isPublicQualifiedName = function(b) {
          return "number" === typeof b || n(b) || 1 === b.indexOf(f.PUBLIC.qualifiedName);
        };
        b.getAccessModifier = function(b) {
          return "number" === typeof b || "string" === typeof b || b instanceof Number ? "public" : b.namespaces[0].getAccessModifier();
        };
        b.isNumeric = function(e) {
          return "number" === typeof e ? !0 : "string" === typeof e ? n(e) : !isNaN(parseInt(b.getName(e), 10));
        };
        b.getName = function(b) {
          return b.getName();
        };
        b.isAnyName = function(b) {
          return "object" === typeof b && !b.isRuntimeName() && !b.name;
        };
        b.fromSimpleName = function(e) {
          if (e in b._simpleNameCache) {
            return b._simpleNameCache[e];
          }
          var a, h;
          a = e.lastIndexOf(".");
          0 >= a && (a = e.lastIndexOf(" "));
          0 < a && a < e.length - 1 ? (h = e.substring(a + 1).trim(), a = e.substring(0, a).trim()) : (h = e, a = "");
          return b._simpleNameCache[e] = new b(f.fromSimpleName(a), h, 0);
        };
        b.prototype.getQName = function(e) {
          this._qualifiedNameCache || (this._qualifiedNameCache = []);
          var a = this._qualifiedNameCache[e];
          a || (a = this._qualifiedNameCache[e] = new b([this.namespaces[e]], this.name, this.flags));
          return a;
        };
        b.prototype.hasQName = function(b) {
          if (this.name !== b.name) {
            return !1;
          }
          for (var e = 0;e < this.namespaces.length;e++) {
            if (this.namespaces[e].isEqualTo(b.namespaces[0])) {
              return !0;
            }
          }
          return !1;
        };
        b.prototype.isAttribute = function() {
          return !!(this.flags & b.ATTRIBUTE);
        };
        b.prototype.isAnyName = function() {
          return b.isAnyName(this);
        };
        b.prototype.isAnyNamespace = function() {
          return !this.isRuntimeNamespace() && (0 === this.namespaces.length || this.isAnyName() && 1 !== this.namespaces.length);
        };
        b.prototype.isRuntimeName = function() {
          return !!(this.flags & b.RUNTIME_NAME);
        };
        b.prototype.isRuntimeNamespace = function() {
          return !!(this.flags & b.RUNTIME_NAMESPACE);
        };
        b.prototype.isRuntime = function() {
          return !!(this.flags & (b.RUNTIME_NAME | b.RUNTIME_NAMESPACE));
        };
        b.prototype.isQName = function() {
          return 1 === this.namespaces.length && !this.isAnyName();
        };
        b.prototype.isSimpleStatic = function() {
          return !(this.flags & (b.RUNTIME_NAME | b.RUNTIME_NAMESPACE)) && 1 === this.namespaces.length;
        };
        b.prototype.hasTypeParameter = function() {
          return !!this.typeParameter;
        };
        b.prototype.getName = function() {
          return this.name;
        };
        b.prototype.getOriginalName = function() {
          var b = this.namespaces[0].uri;
          b && (b += ".");
          return b + this.name;
        };
        b.prototype.getNamespace = function() {
          return this.namespaces[0];
        };
        b.prototype.nameToString = function() {
          if (this.isAnyName()) {
            return "*";
          }
          var b = this.getName();
          return this.isRuntimeName() ? "[]" : b;
        };
        b.prototype.hasObjectName = function() {
          return "object" === typeof this.name;
        };
        b.prototype.toString = function() {
          var b = this.isAttribute() ? "@" : "";
          if (this.isAnyNamespace()) {
            b += "*::" + this.nameToString();
          } else {
            if (this.isRuntimeNamespace()) {
              b += "[]::" + this.nameToString();
            } else {
              if (1 === this.namespaces.length && this.isQName()) {
                b += this.namespaces[0].toString() + "::", b += this.nameToString();
              } else {
                for (var b = b + "{", e = 0, a = this.namespaces.length;e < a;e++) {
                  b += this.namespaces[e].toString(), e + 1 < a && (b += ",");
                }
                b += "}::" + this.nameToString();
              }
            }
          }
          this.hasTypeParameter() && (b += "<" + this.typeParameter.toString() + ">");
          return b;
        };
        b.ATTRIBUTE = 1;
        b.RUNTIME_NAMESPACE = 2;
        b.RUNTIME_NAME = 4;
        b._nextID = 0;
        b._publicQualifiedNameCache = d.ObjectUtilities.createMap();
        b._simpleNameCache = d.ObjectUtilities.createMap();
        b.Int = b.getPublicQualifiedName("int");
        b.Uint = b.getPublicQualifiedName("uint");
        b.Class = b.getPublicQualifiedName("Class");
        b.Array = b.getPublicQualifiedName("Array");
        b.Object = b.getPublicQualifiedName("Object");
        b.String = b.getPublicQualifiedName("String");
        b.Number = b.getPublicQualifiedName("Number");
        b.Boolean = b.getPublicQualifiedName("Boolean");
        b.Function = b.getPublicQualifiedName("Function");
        b.XML = b.getPublicQualifiedName("XML");
        b.XMLList = b.getPublicQualifiedName("XMLList");
        b.TO_STRING = b.getPublicQualifiedName("toString");
        b.VALUE_OF = b.getPublicQualifiedName("valueOf");
        b.TEMPORARY = new b([], "", 0);
        return b;
      }();
      a.Multiname = b;
      var e = function() {
        function b(e, a) {
          for (var f = e.constantPool.strings, h = this.name = f[a.readU30()], p = a.readU30(), m = [], r = [], c = 0;c < p;c++) {
            m[c] = f[a.readU30()];
          }
          for (c = 0;c < p;c++) {
            var g = m[c];
            r[c] = {key:g, value:f[a.readU30()]};
            g && "native" === h && (this[g] = r[c].value);
          }
          this.value = r;
        }
        b.prototype.toString = function() {
          return "[" + this.name + "]";
        };
        return b;
      }();
      a.MetaDataInfo = e;
      (function(b) {
        b[b.Undefined = 0] = "Undefined";
        b[b.Utf8 = 1] = "Utf8";
        b[b.Float = 2] = "Float";
        b[b.Int = 3] = "Int";
        b[b.UInt = 4] = "UInt";
        b[b.PrivateNs = 5] = "PrivateNs";
        b[b.Double = 6] = "Double";
        b[b.QName = 7] = "QName";
        b[b.Namespace = 8] = "Namespace";
        b[b.Multiname = 9] = "Multiname";
        b[b.False = 10] = "False";
        b[b.True = 11] = "True";
        b[b.Null = 12] = "Null";
        b[b.QNameA = 13] = "QNameA";
        b[b.MultinameA = 14] = "MultinameA";
        b[b.RTQName = 15] = "RTQName";
        b[b.RTQNameA = 16] = "RTQNameA";
        b[b.RTQNameL = 17] = "RTQNameL";
        b[b.RTQNameLA = 18] = "RTQNameLA";
        b[b.NameL = 19] = "NameL";
        b[b.NameLA = 20] = "NameLA";
        b[b.NamespaceSet = 21] = "NamespaceSet";
        b[b.PackageNamespace = 22] = "PackageNamespace";
        b[b.PackageInternalNs = 23] = "PackageInternalNs";
        b[b.ProtectedNamespace = 24] = "ProtectedNamespace";
        b[b.ExplicitNamespace = 25] = "ExplicitNamespace";
        b[b.StaticProtectedNs = 26] = "StaticProtectedNs";
        b[b.MultinameL = 27] = "MultinameL";
        b[b.MultinameLA = 28] = "MultinameLA";
        b[b.TypeName = 29] = "TypeName";
        b[b.ClassSealed = 1] = "ClassSealed";
        b[b.ClassFinal = 2] = "ClassFinal";
        b[b.ClassInterface = 4] = "ClassInterface";
        b[b.ClassProtectedNs = 8] = "ClassProtectedNs";
      })(a.CONSTANT || (a.CONSTANT = {}));
      (function(b) {
        b[b.Arguments = 1] = "Arguments";
        b[b.Activation = 2] = "Activation";
        b[b.Needrest = 4] = "Needrest";
        b[b.HasOptional = 8] = "HasOptional";
        b[b.IgnoreRest = 16] = "IgnoreRest";
        b[b.Native = 32] = "Native";
        b[b.Setsdxns = 64] = "Setsdxns";
        b[b.HasParamNames = 128] = "HasParamNames";
        b[b.HasBody = 256] = "HasBody";
        b[b.InstanceInitializer = 512] = "InstanceInitializer";
        b[b.ClassInitializer = 1024] = "ClassInitializer";
        b[b.ScriptInitializer = 2048] = "ScriptInitializer";
        b[b.MethodTrait = 4096] = "MethodTrait";
        b[b.GetterTrait = 8192] = "GetterTrait";
        b[b.SetterTrait = 16384] = "SetterTrait";
      })(a.METHOD || (a.METHOD = {}));
      (function(b) {
        b[b.Slot = 0] = "Slot";
        b[b.Method = 1] = "Method";
        b[b.Getter = 2] = "Getter";
        b[b.Setter = 3] = "Setter";
        b[b.Class = 4] = "Class";
        b[b.Function = 5] = "Function";
        b[b.Const = 6] = "Const";
      })(a.TRAIT || (a.TRAIT = {}));
      a.MethodTypeFlagByTraitKind = {1:4096, 2:8192, 3:16384};
      (function(b) {
        b[b.Final = 1] = "Final";
        b[b.Override = 2] = "Override";
        b[b.Metadata = 4] = "Metadata";
      })(a.ATTR || (a.ATTR = {}));
      (function(b) {
        b[b.CASEINSENSITIVE = 1] = "CASEINSENSITIVE";
        b[b.DESCENDING = 2] = "DESCENDING";
        b[b.UNIQUESORT = 4] = "UNIQUESORT";
        b[b.RETURNINDEXEDARRAY = 8] = "RETURNINDEXEDARRAY";
        b[b.NUMERIC = 16] = "NUMERIC";
      })(a.SORT || (a.SORT = {}));
      var r = function() {
        function e(a, h) {
          var m, r = [0];
          m = a.readU30();
          for (var c = 1;c < m;++c) {
            r.push(a.readS32());
          }
          var g = [0];
          m = a.readU30();
          for (c = 1;c < m;++c) {
            g.push(a.readU32());
          }
          var q = [NaN];
          m = a.readU30();
          for (c = 1;c < m;++c) {
            q.push(a.readDouble());
          }
          k.enterTimeline("Parse Strings");
          var t = [""];
          m = a.readU30();
          for (c = 1;c < m;++c) {
            t.push(a.readUTFString(a.readU30()));
          }
          k.leaveTimeline();
          this.ints = r;
          this.uints = g;
          this.doubles = q;
          this.strings = t;
          k.enterTimeline("Parse Namespaces");
          r = [void 0];
          m = a.readU30();
          for (c = 1;c < m;++c) {
            r.push(f.parse(this, a, h.hash + c));
          }
          k.leaveTimeline();
          k.enterTimeline("Parse Namespace Sets");
          g = [void 0];
          m = a.readU30();
          for (c = 1;c < m;++c) {
            q = a.readU30();
            t = [];
            t.runtimeId = e._nextNamespaceSetID++;
            t.hash = h.hash & 65535 | 262144 | c << 19;
            for (var l = 0;l < q;++l) {
              t.push(r[a.readU30()]);
            }
            g.push(t);
          }
          k.leaveTimeline();
          this.namespaces = r;
          this.namespaceSets = g;
          k.enterTimeline("Parse Multinames");
          r = [void 0];
          g = [];
          m = a.readU30();
          for (c = 1;c < m;++c) {
            r.push(b.parse(this, a, r, g, c));
          }
          for (c = 0;c < g.length;c++) {
            m = g[c], t = r[m.factoryTypeIndex], q = r[m.typeParameterIndex], t = new b(t.namespaces, t.name, m.flags), t.typeParameter = q, r[m.index] = t;
          }
          k.leaveTimeline();
          this.multinames = r;
        }
        e.prototype.getValue = function(b, e) {
          switch(b) {
            case 3:
              return this.ints[e];
            case 4:
              return this.uints[e];
            case 6:
              return this.doubles[e];
            case 1:
              return this.strings[e];
            case 11:
              return !0;
            case 10:
              return !1;
            case 12:
              return null;
            case 8:
            ;
            case 23:
              return this.namespaces[e];
            case 7:
            ;
            case 14:
            ;
            case 15:
            ;
            case 16:
            ;
            case 17:
            ;
            case 18:
            ;
            case 19:
            ;
            case 20:
              return this.multinames[e];
          }
        };
        e._nextNamespaceSetID = 1;
        return e;
      }();
      a.ConstantPool = r;
    })(k.ABC || (k.ABC = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      function n(a, c, m, h) {
        void 0 === h && (h = null);
        0 !== m.length && (a.enter(c + " {"), m.forEach(function(f, b) {
          f.trace(a, h);
        }), a.leave("}"));
      }
      function w(a, c, m) {
        var h;
        void 0 === h && (h = !1);
        var f = m.position, b = "";
        null === a.operands ? b = "null" : a.operands.forEach(function(e, f) {
          var h = b, g;
          a: {
            g = 0;
            switch(e.size) {
              case 1:
                g = m.readS8();
                break;
              case 0:
                g = m.readU8();
                break;
              case 2:
                g = m.readS16();
                break;
              case 3:
                g = m.readS24();
                break;
              case 4:
                g = m.readU30();
                break;
              case 5:
                g = m.readU32();
            }
            var l = "";
            switch(e.type) {
              case "":
                break;
              case "I":
                l = c.constantPool.ints[g];
                break;
              case "U":
                l = c.constantPool.uints[g];
                break;
              case "D":
                l = c.constantPool.doubles[g];
                break;
              case "S":
                l = c.constantPool.strings[g];
                break;
              case "N":
                l = c.constantPool.namespaces[g];
                break;
              case "CI":
                l = c.classes[g];
                break;
              case "M":
                g = c.constantPool.multinames[g];
                break a;
              default:
                l = "?";
            }
            g = e.name + ":" + g + ("" === l ? "" : " (" + l + ")");
          }
          b = h + g;
          f < a.operands.length - 1 && (b += ", ");
        });
        h && m.seek(f);
        return b;
      }
      function v(a, c) {
        var m = new g(a);
        c.scripts.forEach(function(a) {
          m.traceTraits(a.traits);
        });
      }
      function u(c, g) {
        var m = new d.Metrics.Counter(!0), h = new d.Metrics.Counter(!0), f = new d.Metrics.Counter(!0), b = new d.Metrics.Counter(!0), e = {}, r = {}, p = {};
        g.classes.forEach(function(b) {
          e[b.instanceInfo.name.name] = !0;
        });
        g.scripts.forEach(function(b) {
          b.traits.forEach(function(b) {
            if (b.isClass()) {
              var a = b.classInfo.instanceInfo.superName ? b.classInfo.instanceInfo.superName.name : "?";
              a in e || h.count(a);
              b.classInfo.traits.forEach(function(b) {
                b.isMethod() ? r[b.name.name] = !0 : p[b.name.name] = !0;
              });
              b.classInfo.instanceInfo.traits.forEach(function(b) {
                !b.isMethod() || b.attributes & 2 ? p[b.name.name] = !0 : r[b.name.name] = !0;
              });
            }
          });
        });
        var l = new d.Metrics.Counter(!0);
        g.methods.forEach(function(h) {
          function c(b) {
            var e = 0;
            switch(b.size) {
              case 1:
                e = q.readS8();
                break;
              case 0:
                e = q.readU8();
                break;
              case 2:
                e = q.readS16();
                break;
              case 3:
                e = q.readS24();
                break;
              case 4:
                e = q.readU30();
                break;
              case 5:
                e = q.readU32();
            }
            var a = "";
            switch(b.type) {
              case "":
                break;
              case "I":
                a = g.constantPool.ints[e];
                break;
              case "U":
                a = g.constantPool.uints[e];
                break;
              case "D":
                a = g.constantPool.doubles[e];
                break;
              case "S":
                a = g.constantPool.strings[e];
                break;
              case "N":
                a = g.constantPool.namespaces[e];
                break;
              case "CI":
                a = g.classes[e];
                break;
              case "M":
                a = g.constantPool.multinames[e];
                break;
              default:
                a = "?";
            }
            return a;
          }
          if (h.code) {
            for (var q = new a.AbcStream(h.code);0 < q.remaining();) {
              h = q.readU8();
              var d = k.opcodeTable[h], n = null;
              if (d) {
                switch(l.count(k.opcodeName(d)), d.operands && (n = d.operands.map(c)), h) {
                  case 65:
                  ;
                  case 67:
                    continue;
                  case 70:
                  ;
                  case 76:
                  ;
                  case 79:
                  ;
                  case 68:
                  ;
                  case 69:
                  ;
                  case 78:
                    !n[0] || n[0].name in r || f.count(n[0].name);
                    break;
                  case 74:
                    !n[0] || n[0].name in e || m.count(n[0].name);
                    break;
                  case 102:
                  ;
                  case 97:
                    !n[0] || n[0].name in p || b.count(n[0].name);
                }
              }
            }
          }
        });
        c.writeLn(JSON.stringify({definedClasses:e, definedMethods:r, definedProperties:p, libraryClasses:m.counts, librarySuperClasses:h.counts, libraryMethods:f.counts, libraryProperties:b.counts, operations:l.counts}, null, 2));
      }
      var l = d.Debug.notImplemented, c = new d.Options.Option("f", "filter", "string", "SpciMsmNtu", "[S]ource, constant[p]ool, [c]lasses, [i]nstances, [M]etadata, [s]cripts, [m]ethods, multi[N]ames, S[t]atistics, [u]tf");
      a.AbcFile.prototype.trace = function(a) {
        0 <= c.value.indexOf("p") && this.constantPool.trace(a);
        0 <= c.value.indexOf("N") && a.writeArray(this.constantPool.multinames, null, !0);
        0 <= c.value.indexOf("c") && n(a, "classes", this.classes);
        0 <= c.value.indexOf("i") && n(a, "instances", this.instances);
        0 <= c.value.indexOf("M") && n(a, "metadata", this.metadata);
        0 <= c.value.indexOf("s") && n(a, "scripts", this.scripts);
        0 <= c.value.indexOf("m") && n(a, "methods", this.methods, this);
        0 <= c.value.indexOf("S") && v(a, this);
        0 <= c.value.indexOf("t") && u(a, this);
      };
      a.ConstantPool.prototype.trace = function(a) {
        a.enter("constantPool {");
        for (var c in this) {
          "namespaces" === c ? (a.enter("namespaces {"), this.namespaces.forEach(function(m, h) {
            a.writeLn(("" + h).padRight(" ", 3) + (m ? m.toString() : "*"));
          }), a.leave("}")) : this[c] instanceof Array && (a.enter(c + " " + this[c].length + " {"), a.writeArray(this[c]), a.leave("}"));
        }
        a.leave("}");
      };
      a.ClassInfo.prototype.trace = function(a) {
        a.enter("class " + this + " {");
        n(a, "traits", this.traits);
        a.leave("}");
      };
      a.MetaDataInfo.prototype.trace = function(a) {
        a.enter(this + " {");
        this.value.forEach(function(c) {
          a.writeLn((c.key ? c.key + ": " : "") + '"' + c.value + '"');
        });
        a.leave("}");
      };
      a.InstanceInfo.prototype.trace = function(a) {
        a.enter("instance " + this + " {");
        n(a, "traits", this.traits);
        a.leave("}");
      };
      a.ScriptInfo.prototype.trace = function(a) {
        a.enter("script " + this + " {");
        n(a, "traits", this.traits);
        a.leave("}");
      };
      a.Trait.prototype.trace = function(a) {
        if (this.metadata) {
          for (var c in this.metadata) {
            this.metadata.hasOwnProperty(c) && this.metadata[c].trace(a);
          }
        }
        a.writeLn(this);
      };
      a.MethodInfo.prototype.trace = function(c) {
        var g = this.abc;
        c.enter("method" + (this.name ? " " + this.name : "") + " {");
        c.writeLn("flags: " + d.IntegerUtilities.getFlags(this.flags, "NEED_ARGUMENTS NEED_ACTIVATION NEED_REST HAS_OPTIONAL  NATIVE SET_DXN HAS_PARAM_NAMES".split(" ")));
        c.writeLn("parameters: " + this.parameters.map(function(b) {
          return (b.type ? a.Multiname.getQualifiedName(b.type) + "::" : "") + b.name;
        }));
        if (this.code) {
          var m = new a.AbcStream(this.code);
          n(c, "traits", this.traits);
          for (c.enter("code {");0 < m.remaining();) {
            var h = m.readU8(), f = d.AVM2.opcodeTable[h], b;
            b = ("" + m.position).padRight(" ", 6);
            switch(h) {
              case 27:
                b += k.opcodeName(h) + ": defaultOffset: " + m.readS24();
                h = m.readU30();
                b += ", caseCount: " + h;
                for (f = 0;f < h + 1;f++) {
                  b += " offset: " + m.readS24();
                }
                c.writeLn(b);
                break;
              default:
                f && (b += k.opcodeName(h).padRight(" ", 20), f.operands && (0 < f.operands.length && (b += w(f, g, m)), c.writeLn(b)));
            }
          }
          c.leave("}");
        }
        c.leave("}");
      };
      var g = function() {
        function c(a) {
          return void 0 === a ? "undefined" : null === a ? "null" : "string" === typeof a ? '"' + a + '"' : String(a);
        }
        function g(a, f) {
          void 0 === f && (f = !1);
          return a.parameters.map(function(b) {
            var e = b.name;
            f || (b.type && (e += ":" + b.type.getName()), void 0 !== b.value && (e += " = " + c(b.value)));
            return e;
          }).join(", ");
        }
        function m(a) {
          this.writer = a;
        }
        m.prototype = {traceTraits:function(h, f, b) {
          var e = this.writer, m = this;
          h.forEach(function(h) {
            var d;
            d = a.Multiname.getAccessModifier(h.name);
            var n = h.name.namespaces[0].uri;
            n && ("http://adobe.com/AS3/2006/builtin" === n && (n = "AS3"), d = "public" === d ? b === n ? "" : n : d);
            f && (d += " static");
            if (h.isSlot() || h.isConst()) {
              m.traceMetadata(h.metadata), d = h.isConst() ? d + " const" : d + " var", d += " " + h.name.getName(), h.typeName && (d += ":" + h.typeName.getName()), h.value && (d += " = " + c(h.value)), e.writeLn(d + ";");
            } else {
              if (h.isMethod() || h.isGetter() || h.isSetter()) {
                m.traceMetadata(h.metadata);
                n = h.methodInfo;
                h.attributes & 2 && (d += " override");
                n.isNative() && (d += " native");
                d = d + " function" + (h.isGetter() ? " get" : h.isSetter() ? " set" : "");
                d += " " + h.name.getName();
                d += "(" + g(n) + ")";
                d += n.returnType ? ":" + n.returnType.getName() : "";
                var k;
                h.holder instanceof a.ClassInfo ? (k = h.holder.instanceInfo.name, k.getName()) : h.holder instanceof a.InstanceInfo && (k = h.holder.name, k.getName());
                n.isNative();
                n.isNative() ? e.writeLn(d + ";") : b ? e.writeLn(d + ";") : e.writeLn(d + ' { notImplemented("' + h.name.getName() + '"); }');
              } else {
                h.isClass() ? (k = h.classInfo.instanceInfo.name, e.enter("package " + k.namespaces[0].uri + " {\n"), m.traceMetadata(h.metadata), m.traceClass(h.classInfo), e.leave("\n}"), m.traceClassStub(h)) : l(h);
              }
            }
          });
        }, traceClassStub2:function(a) {
          function f(e, a) {
            void 0 === a && (a = !1);
            var f = [];
            e.forEach(function(b, e) {
              (b.isMethod() || b.isGetter() || b.isSetter()) && b.methodInfo.isNative() && f.push(b);
            });
            f.forEach(function(e, a) {
              var h = e.methodInfo, m = e.name.getName();
              b.writeLn("// " + m + " :: " + (h.parameters.length ? g(h) : "void") + " -> " + (h.returnType ? h.returnType.getName() : "any"));
              b.enter((e.isGetter() ? '"get ' + m + '"' : e.isSetter() ? '"set ' + m + '"' : m) + ": function " + m + "(" + g(h, !0) + ") {");
              b.writeLn('  notImplemented("' + c + "." + m + '");');
              b.leave("}" + (a === f.length - 1 ? "" : ",\n"));
            });
          }
          var b = this.writer, e = a.classInfo, m = e.instanceInfo, c = m.name.getName();
          a = a.metadata ? a.metadata.native : null;
          if (!a) {
            return !1;
          }
          b.writeLn("Cut and paste the following into `native.js' and edit accordingly");
          b.writeLn("8< --------------------------------------------------------------");
          b.enter("natives." + a.cls + " = function " + a.cls + "(runtime, scope, instanceConstructor, baseClass) {");
          b.writeLn('var c = new Class("' + c + '", instanceConstructor, ApplicationDomain.passthroughCallable(instanceConstructor));');
          b.writeLn("c.extend(baseClass);\n");
          b.enter("c.nativeStatics = {");
          f(e.traits, !0);
          b.leave("};\n");
          b.enter("c.nativeMethods = {");
          f(m.traits);
          b.leave("};\n");
          b.writeLn("return c;");
          b.leave("};");
          b.writeLn("-------------------------------------------------------------- >8");
          return !0;
        }, traceClassStub:function(a) {
          function f(b) {
            return {properties:b.filter(function(b) {
              return !1;
            }), methods:b.filter(function(b) {
              return (b.isMethod() || b.isGetter() || b.isSetter()) && !0 === b.methodInfo.isNative();
            })};
          }
          function b(b, a) {
            function h(b, f) {
              var m = b.methodInfo, r = b.name.getName(), q = "// (" + (m.parameters.length ? g(m) : "void") + ") -> " + (m.returnType ? m.returnType.getName() : "any"), l = r;
              b.isGetter() ? l = "get" : b.isSetter() && (l = "set");
              e.enter(l + ": function " + r + "(" + g(m, !0) + ") { " + q);
              e.writeLn('notImplemented("' + c + "." + r + '");');
              a || (b.isGetter() ? e.writeLn("return this._" + r + ";") : b.isSetter() && e.writeLn("this._" + r + " = " + m.parameters[0].name + ";"));
              e.leave("}" + (f ? "," : ""));
            }
            void 0 === a && (a = !1);
            b = f(b);
            var m = [], r = Object.create(null);
            b.methods.forEach(function(b, e) {
              var a = b.name.getName();
              b.isGetter() || b.isSetter() ? (r[a] || (r[a] = []), r[a].push(b)) : m.push(b);
            });
            for (var q = 0;q < m.length;q++) {
              h(m[q], q < m.length - 1);
            }
            for (var l = d.ObjectUtilities.toKeyValueArray(r), C = 0;C < l.length;C++) {
              e.enter(l[C][0] + ": {");
              for (var n = l[C][1], q = 0;q < n.length;q++) {
                h(n[q], q < n.length - 1);
              }
              e.leave("}" + (C < l.length - 1 ? "," : ""));
            }
            b.properties.forEach(function(a, f) {
              var h = a.name.getName(), m = f === b.properties.length - 1;
              a.name.getNamespace().isPublic() && e.writeLn(h + ": " + ("'public " + a.name.name + "'") + (m ? "" : ","));
            });
          }
          var e = this.writer;
          a = a.classInfo;
          var m = a.instanceInfo, c = m.name.getName();
          e.writeLn("Cut and paste the following glue and edit accordingly.");
          e.writeLn("Class " + m);
          e.writeLn("8< --------------------------------------------------------------");
          var q = m.name.namespaces[0].uri;
          e.enter("var " + c + "Definition = (function () {");
          e.enter("return {");
          e.writeLn("// (" + g(m.init, !1) + ")");
          e.writeLn('__class__: "' + q + "." + c + '",');
          e.enter("initialize: function () {");
          e.leave("},");
          e.enter("__glue__: {");
          e.enter("native: {");
          e.enter("static: {");
          b(a.traits, !0);
          e.leave("},");
          e.enter("instance: {");
          b(m.traits);
          e.leave("}");
          e.leave("},");
          e.enter("script: {");
          e.writeLn("instance: Glue.ALL");
          e.leave("}");
          e.leave("}");
          e.leave("};");
          e.leave("}).call(this);");
          e.writeLn("-------------------------------------------------------------- >8");
          return !0;
        }, traceClass:function(h) {
          var f = this.writer, b = h.instanceInfo, e = b.name, m = a.Multiname.getAccessModifier(e);
          b.isFinal() && (m += " final");
          b.isSealed() || (m += " dynamic");
          m += b.isInterface() ? " interface " : " class ";
          m += e.getName();
          b.superName && "Object" !== b.superName.getName() && (m += " extends " + b.superName.getName());
          b.interfaces.length && (m += " implements " + b.interfaces.map(function(b) {
            return b.getName();
          }).join(", "));
          f.enter(m + " {");
          b.isInterface() || f.writeLn("public function " + e.getName() + "(" + g(b.init) + ") {}");
          var c;
          b.isInterface() && (c = e.namespaces[0].uri + ":" + e.name);
          this.traceTraits(h.traits, !0, c);
          this.traceTraits(b.traits, !1, c);
          f.leave("}");
        }, traceMetadata:function(a) {
          var f = this.writer, b;
          for (b in a) {
            a.hasOwnProperty(b) && 0 !== b.indexOf("__") && f.writeLn("[" + b + "(" + a[b].value.map(function(b) {
              return (b.key ? b.key + "=" : "") + '"' + b.value + '"';
            }).join(", ") + ")]");
          }
        }};
        return m;
      }();
    })(k.ABC || (k.ABC = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    var a = d.AVM2.ABC.AbcStream, n = d.ArrayUtilities.top, w = d.ArrayUtilities.peek;
    (function(a) {
      a[a.bkpt = 1] = "bkpt";
      a[a.nop = 2] = "nop";
      a[a.getsuper = 4] = "getsuper";
      a[a.setsuper = 5] = "setsuper";
      a[a.dxns = 6] = "dxns";
      a[a.dxnslate = 7] = "dxnslate";
      a[a.kill = 8] = "kill";
      a[a.label = 9] = "label";
      a[a.lf32x4 = 10] = "lf32x4";
      a[a.sf32x4 = 11] = "sf32x4";
      a[a.ifnlt = 12] = "ifnlt";
      a[a.ifnle = 13] = "ifnle";
      a[a.ifngt = 14] = "ifngt";
      a[a.ifnge = 15] = "ifnge";
      a[a.jump = 16] = "jump";
      a[a.iftrue = 17] = "iftrue";
      a[a.iffalse = 18] = "iffalse";
      a[a.ifeq = 19] = "ifeq";
      a[a.ifne = 20] = "ifne";
      a[a.iflt = 21] = "iflt";
      a[a.ifle = 22] = "ifle";
      a[a.ifgt = 23] = "ifgt";
      a[a.ifge = 24] = "ifge";
      a[a.ifstricteq = 25] = "ifstricteq";
      a[a.ifstrictne = 26] = "ifstrictne";
      a[a.lookupswitch = 27] = "lookupswitch";
      a[a.pushwith = 28] = "pushwith";
      a[a.popscope = 29] = "popscope";
      a[a.nextname = 30] = "nextname";
      a[a.hasnext = 31] = "hasnext";
      a[a.pushnull = 32] = "pushnull";
      a[a.pushundefined = 33] = "pushundefined";
      a[a.pushfloat = 34] = "pushfloat";
      a[a.nextvalue = 35] = "nextvalue";
      a[a.pushbyte = 36] = "pushbyte";
      a[a.pushshort = 37] = "pushshort";
      a[a.pushtrue = 38] = "pushtrue";
      a[a.pushfalse = 39] = "pushfalse";
      a[a.pushnan = 40] = "pushnan";
      a[a.pop = 41] = "pop";
      a[a.dup = 42] = "dup";
      a[a.swap = 43] = "swap";
      a[a.pushstring = 44] = "pushstring";
      a[a.pushint = 45] = "pushint";
      a[a.pushuint = 46] = "pushuint";
      a[a.pushdouble = 47] = "pushdouble";
      a[a.pushscope = 48] = "pushscope";
      a[a.pushnamespace = 49] = "pushnamespace";
      a[a.hasnext2 = 50] = "hasnext2";
      a[a.li8 = 53] = "li8";
      a[a.li16 = 54] = "li16";
      a[a.li32 = 55] = "li32";
      a[a.lf32 = 56] = "lf32";
      a[a.lf64 = 57] = "lf64";
      a[a.si8 = 58] = "si8";
      a[a.si16 = 59] = "si16";
      a[a.si32 = 60] = "si32";
      a[a.sf32 = 61] = "sf32";
      a[a.sf64 = 62] = "sf64";
      a[a.newfunction = 64] = "newfunction";
      a[a.call = 65] = "call";
      a[a.construct = 66] = "construct";
      a[a.callmethod = 67] = "callmethod";
      a[a.callstatic = 68] = "callstatic";
      a[a.callsuper = 69] = "callsuper";
      a[a.callproperty = 70] = "callproperty";
      a[a.returnvoid = 71] = "returnvoid";
      a[a.returnvalue = 72] = "returnvalue";
      a[a.constructsuper = 73] = "constructsuper";
      a[a.constructprop = 74] = "constructprop";
      a[a.callsuperid = 75] = "callsuperid";
      a[a.callproplex = 76] = "callproplex";
      a[a.callinterface = 77] = "callinterface";
      a[a.callsupervoid = 78] = "callsupervoid";
      a[a.callpropvoid = 79] = "callpropvoid";
      a[a.sxi1 = 80] = "sxi1";
      a[a.sxi8 = 81] = "sxi8";
      a[a.sxi16 = 82] = "sxi16";
      a[a.applytype = 83] = "applytype";
      a[a.pushfloat4 = 84] = "pushfloat4";
      a[a.newobject = 85] = "newobject";
      a[a.newarray = 86] = "newarray";
      a[a.newactivation = 87] = "newactivation";
      a[a.newclass = 88] = "newclass";
      a[a.getdescendants = 89] = "getdescendants";
      a[a.newcatch = 90] = "newcatch";
      a[a.findpropstrict = 93] = "findpropstrict";
      a[a.findproperty = 94] = "findproperty";
      a[a.finddef = 95] = "finddef";
      a[a.getlex = 96] = "getlex";
      a[a.setproperty = 97] = "setproperty";
      a[a.getlocal = 98] = "getlocal";
      a[a.setlocal = 99] = "setlocal";
      a[a.getglobalscope = 100] = "getglobalscope";
      a[a.getscopeobject = 101] = "getscopeobject";
      a[a.getproperty = 102] = "getproperty";
      a[a.getouterscope = 103] = "getouterscope";
      a[a.initproperty = 104] = "initproperty";
      a[a.setpropertylate = 105] = "setpropertylate";
      a[a.deleteproperty = 106] = "deleteproperty";
      a[a.deletepropertylate = 107] = "deletepropertylate";
      a[a.getslot = 108] = "getslot";
      a[a.setslot = 109] = "setslot";
      a[a.getglobalslot = 110] = "getglobalslot";
      a[a.setglobalslot = 111] = "setglobalslot";
      a[a.convert_s = 112] = "convert_s";
      a[a.esc_xelem = 113] = "esc_xelem";
      a[a.esc_xattr = 114] = "esc_xattr";
      a[a.convert_i = 115] = "convert_i";
      a[a.convert_u = 116] = "convert_u";
      a[a.convert_d = 117] = "convert_d";
      a[a.convert_b = 118] = "convert_b";
      a[a.convert_o = 119] = "convert_o";
      a[a.checkfilter = 120] = "checkfilter";
      a[a.convert_f = 121] = "convert_f";
      a[a.unplus = 122] = "unplus";
      a[a.convert_f4 = 123] = "convert_f4";
      a[a.coerce = 128] = "coerce";
      a[a.coerce_b = 129] = "coerce_b";
      a[a.coerce_a = 130] = "coerce_a";
      a[a.coerce_i = 131] = "coerce_i";
      a[a.coerce_d = 132] = "coerce_d";
      a[a.coerce_s = 133] = "coerce_s";
      a[a.astype = 134] = "astype";
      a[a.astypelate = 135] = "astypelate";
      a[a.coerce_u = 136] = "coerce_u";
      a[a.coerce_o = 137] = "coerce_o";
      a[a.negate = 144] = "negate";
      a[a.increment = 145] = "increment";
      a[a.inclocal = 146] = "inclocal";
      a[a.decrement = 147] = "decrement";
      a[a.declocal = 148] = "declocal";
      a[a.not = 150] = "not";
      a[a.bitnot = 151] = "bitnot";
      a[a.add = 160] = "add";
      a[a.subtract = 161] = "subtract";
      a[a.multiply = 162] = "multiply";
      a[a.divide = 163] = "divide";
      a[a.modulo = 164] = "modulo";
      a[a.lshift = 165] = "lshift";
      a[a.rshift = 166] = "rshift";
      a[a.urshift = 167] = "urshift";
      a[a.bitand = 168] = "bitand";
      a[a.bitor = 169] = "bitor";
      a[a.bitxor = 170] = "bitxor";
      a[a.equals = 171] = "equals";
      a[a.strictequals = 172] = "strictequals";
      a[a.lessthan = 173] = "lessthan";
      a[a.lessequals = 174] = "lessequals";
      a[a.greaterthan = 175] = "greaterthan";
      a[a.greaterequals = 176] = "greaterequals";
      a[a.istype = 178] = "istype";
      a[a.istypelate = 179] = "istypelate";
      a[a.increment_i = 192] = "increment_i";
      a[a.decrement_i = 193] = "decrement_i";
      a[a.inclocal_i = 194] = "inclocal_i";
      a[a.declocal_i = 195] = "declocal_i";
      a[a.negate_i = 196] = "negate_i";
      a[a.add_i = 197] = "add_i";
      a[a.subtract_i = 198] = "subtract_i";
      a[a.multiply_i = 199] = "multiply_i";
      a[a.getlocal0 = 208] = "getlocal0";
      a[a.getlocal1 = 209] = "getlocal1";
      a[a.getlocal2 = 210] = "getlocal2";
      a[a.getlocal3 = 211] = "getlocal3";
      a[a.setlocal0 = 212] = "setlocal0";
      a[a.setlocal1 = 213] = "setlocal1";
      a[a.setlocal2 = 214] = "setlocal2";
      a[a.setlocal3 = 215] = "setlocal3";
      a[a.invalid = 237] = "invalid";
      a[a.debug = 239] = "debug";
      a[a.debugline = 240] = "debugline";
      a[a.debugfile = 241] = "debugfile";
      a[a.bkptline = 242] = "bkptline";
      a[a.timestamp = 243] = "timestamp";
      a[a["throw"] = 3] = "throw";
      a[a["typeof"] = 149] = "typeof";
      a[a["instanceof"] = 177] = "instanceof";
      a[a["in"] = 180] = "in";
    })(k.OP || (k.OP = {}));
    var v = k.OP;
    k.opcodeTable = [null, {canThrow:!1, operands:[]}, {canThrow:!1, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[{name:"index", size:4, type:""}]}, {canThrow:!0, operands:[{name:"index", size:4, type:""}]}, {canThrow:!0, operands:[{name:"index", size:4, type:""}]}, {canThrow:!0, operands:[]}, {canThrow:!1, operands:[{name:"index", size:4, type:""}]}, {canThrow:!1, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[{name:"offset", size:3, 
    type:""}]}, {canThrow:!0, operands:[{name:"offset", size:3, type:""}]}, {canThrow:!0, operands:[{name:"offset", size:3, type:""}]}, {canThrow:!0, operands:[{name:"offset", size:3, type:""}]}, {canThrow:!1, operands:[{name:"offset", size:3, type:""}]}, {canThrow:!1, operands:[{name:"offset", size:3, type:""}]}, {canThrow:!1, operands:[{name:"offset", size:3, type:""}]}, {canThrow:!0, operands:[{name:"offset", size:3, type:""}]}, {canThrow:!0, operands:[{name:"offset", size:3, type:""}]}, {canThrow:!0, 
    operands:[{name:"offset", size:3, type:""}]}, {canThrow:!0, operands:[{name:"offset", size:3, type:""}]}, {canThrow:!0, operands:[{name:"offset", size:3, type:""}]}, {canThrow:!0, operands:[{name:"offset", size:3, type:""}]}, {canThrow:!1, operands:[{name:"offset", size:3, type:""}]}, {canThrow:!1, operands:[{name:"offset", size:3, type:""}]}, {canThrow:!1, operands:null}, {canThrow:!1, operands:[]}, {canThrow:!1, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!1, 
    operands:[]}, {canThrow:!1, operands:[]}, null, {canThrow:!0, operands:[]}, {canThrow:!1, operands:[{name:"value", size:1, type:""}]}, {canThrow:!1, operands:[{name:"value", size:2, type:""}]}, {canThrow:!1, operands:[]}, {canThrow:!1, operands:[]}, {canThrow:!1, operands:[]}, {canThrow:!1, operands:[]}, {canThrow:!1, operands:[]}, {canThrow:!1, operands:[]}, {canThrow:!1, operands:[{name:"index", size:4, type:"S"}]}, {canThrow:!1, operands:[{name:"index", size:4, type:"I"}]}, {canThrow:!1, operands:[{name:"index", 
    size:4, type:"U"}]}, {canThrow:!1, operands:[{name:"index", size:4, type:"D"}]}, {canThrow:!1, operands:[]}, {canThrow:!1, operands:[{name:"index", size:4, type:"N"}]}, {canThrow:!0, operands:[{name:"object", size:4, type:""}, {name:"index", size:4, type:""}]}, {canThrow:!0, operands:null}, {canThrow:!0, operands:null}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, 
    operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, null, {canThrow:!0, operands:[{name:"index", size:4, type:"MI"}]}, {canThrow:!0, operands:[{name:"argCount", size:4, type:""}]}, {canThrow:!0, operands:[{name:"argCount", size:4, type:""}]}, {canThrow:!0, operands:[{name:"index", size:4, type:""}, {name:"argCount", size:4, type:""}]}, {canThrow:!0, operands:[{name:"index", size:4, type:"MI"}, {name:"argCount", size:4, type:""}]}, {canThrow:!0, operands:[{name:"index", 
    size:4, type:"M"}, {name:"argCount", size:4, type:""}]}, {canThrow:!0, operands:[{name:"index", size:4, type:"M"}, {name:"argCount", size:4, type:""}]}, {canThrow:!1, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[{name:"argCount", size:4, type:""}]}, {canThrow:!0, operands:[{name:"index", size:4, type:"M"}, {name:"argCount", size:4, type:""}]}, {canThrow:!0, operands:null}, {canThrow:!0, operands:[{name:"index", size:4, type:"M"}, {name:"argCount", size:4, type:""}]}, {canThrow:!0, 
    operands:null}, {canThrow:!0, operands:[{name:"index", size:4, type:"M"}, {name:"argCount", size:4, type:""}]}, {canThrow:!0, operands:[{name:"index", size:4, type:"M"}, {name:"argCount", size:4, type:""}]}, {canThrow:!1, operands:[]}, {canThrow:!1, operands:[]}, {canThrow:!1, operands:[]}, {canThrow:!0, operands:[{name:"argCount", size:4, type:""}]}, {canThrow:!1, operands:null}, {canThrow:!0, operands:[{name:"argCount", size:4, type:""}]}, {canThrow:!0, operands:[{name:"argCount", size:4, type:""}]}, 
    {canThrow:!0, operands:[]}, {canThrow:!0, operands:[{name:"index", size:4, type:"CI"}]}, {canThrow:!0, operands:[{name:"index", size:4, type:"M"}]}, {canThrow:!0, operands:[{name:"index", size:4, type:"EI"}]}, {canThrow:!0, operands:null}, {canThrow:!0, operands:null}, {canThrow:!0, operands:[{name:"index", size:4, type:"M"}]}, {canThrow:!0, operands:[{name:"index", size:4, type:"M"}]}, {canThrow:!0, operands:null}, {canThrow:!0, operands:[{name:"index", size:4, type:"M"}]}, {canThrow:!0, operands:[{name:"index", 
    size:4, type:"M"}]}, {canThrow:!1, operands:[{name:"index", size:4, type:""}]}, {canThrow:!1, operands:[{name:"index", size:4, type:""}]}, {canThrow:!1, operands:[]}, {canThrow:!1, operands:[{name:"index", size:4, type:""}]}, {canThrow:!0, operands:[{name:"index", size:4, type:"M"}]}, {canThrow:!1, operands:null}, {canThrow:!0, operands:[{name:"index", size:4, type:"M"}]}, null, {canThrow:!0, operands:[{name:"index", size:4, type:"M"}]}, null, {canThrow:!0, operands:[{name:"index", size:4, type:""}]}, 
    {canThrow:!0, operands:[{name:"index", size:4, type:""}]}, {canThrow:!1, operands:[{name:"index", size:4, type:""}]}, {canThrow:!1, operands:[{name:"index", size:4, type:""}]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, 
    operands:[]}, null, null, null, null, {canThrow:!0, operands:[{name:"index", size:4, type:"M"}]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[{name:"index", size:4, type:"M"}]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, null, null, null, null, null, null, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[{name:"index", 
    size:4, type:""}]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[{name:"index", size:4, type:""}]}, {canThrow:!1, operands:[]}, {canThrow:!1, operands:[]}, {canThrow:!0, operands:[]}, null, null, null, null, null, null, null, null, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, 
    operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[{name:"index", size:4, type:"M"}]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, null, null, null, null, null, null, null, null, null, null, null, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[{name:"index", 
    size:4, type:""}]}, {canThrow:!0, operands:[{name:"index", size:4, type:""}]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, {canThrow:!0, operands:[]}, null, null, null, null, null, null, null, null, {canThrow:!1, operands:[]}, {canThrow:!1, operands:[]}, {canThrow:!1, operands:[]}, {canThrow:!1, operands:[]}, {canThrow:!1, operands:[]}, {canThrow:!1, operands:[]}, {canThrow:!1, operands:[]}, {canThrow:!1, operands:[]}, null, null, null, null, null, null, 
    null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, {canThrow:!1, operands:[]}, null, {canThrow:!1, operands:[{name:"value", size:0, type:""}, {name:"index", size:4, type:"S"}, {name:"object", size:0, type:""}, {name:"argCount", size:4, type:""}]}, {canThrow:!1, operands:[{name:"offset", size:4, type:""}]}, {canThrow:!1, operands:[{name:"index", size:4, type:"S"}]}, null, null, null, null, null, null, null, null, null, null, null, null, null, null];
    (function(a) {
      a[a.u08 = 0] = "u08";
      a[a.s08 = 1] = "s08";
      a[a.s16 = 2] = "s16";
      a[a.s24 = 3] = "s24";
      a[a.u30 = 4] = "u30";
      a[a.u32 = 5] = "u32";
    })(k.OpcodeSize || (k.OpcodeSize = {}));
    k.opcodeName = function(a) {
      return v[a];
    };
    var u = function() {
      function a() {
      }
      a.get = function(a) {
        return this._pool.length ? this._pool.pop().parse(a) : new l(a);
      };
      a.release = function(a) {
        a.bid = void 0;
        a.succs = null;
        a.preds = null;
        a.dominatees = null;
        a.dominator = null;
        a.end = null;
        a.region = null;
        a.spbacks = null;
        a.bdo = 0;
        a.target = null;
        a.targets = null;
        a.ti = null;
        this._pool.push(a);
      };
      a.releaseList = function(a) {
        for (var f = a.length;f--;) {
          this.release(a[f]);
        }
        a.length = 0;
      };
      a._pool = [];
      return a;
    }();
    k.BytecodePool = u;
    var l = function() {
      function a(h) {
        this.ti = null;
        this.position = 0;
        this.targets = this.target = this.offsets = null;
        this.relooperBlock = this.level = 0;
        this.spbacks = this.region = this.end = this.dominator = this.dominatees = this.preds = this.succs = null;
        this.bdo = 0;
        this.hasCatches = !1;
        this.verifierEntryState = null;
        this.value = this.offset = this.argCount = this.object = this.index = 0;
        this.parse(h);
      }
      a.prototype.parse = function(a) {
        if (!a) {
          return this.op = 237, this.canThrow = !0, this;
        }
        var f = a.readU8();
        this.op = f;
        var b = k.opcodeTable[f];
        this.canThrow = b.canThrow;
        if (27 === f) {
          b = a.readS24();
          this.offsets = [];
          for (var f = a.readU30() + 1, e = 0;e < f;e++) {
            this.offsets.push(a.readS24());
          }
          this.offsets.push(b);
        } else {
          for (e = 0, f = b.operands.length;e < f;e++) {
            var c = b.operands[e];
            switch(c.size) {
              case 0:
                this[c.name] = a.readU8();
                break;
              case 1:
                this[c.name] = a.readS8();
                break;
              case 2:
                this[c.name] = a.readS16();
                break;
              case 3:
                this[c.name] = a.readS24();
                break;
              case 4:
                this[c.name] = a.readU30();
                break;
              case 5:
                this[c.name] = a.readU32();
            }
          }
        }
        return this;
      };
      a.prototype.isBlockEnd = function() {
        switch(this.op) {
          case 27:
          ;
          case 16:
          ;
          case 21:
          ;
          case 12:
          ;
          case 22:
          ;
          case 13:
          ;
          case 23:
          ;
          case 14:
          ;
          case 24:
          ;
          case 15:
          ;
          case 19:
          ;
          case 20:
          ;
          case 25:
          ;
          case 26:
          ;
          case 17:
          ;
          case 18:
          ;
          case 72:
          ;
          case 71:
          ;
          case 3:
            return !0;
        }
        return !1;
      };
      a.prototype.makeBlockHead = function(a) {
        if (this.succs) {
          return a;
        }
        this.bid = a;
        this.succs = [];
        this.preds = [];
        this.dominatees = [];
        return a + 1;
      };
      a.prototype.trace = function(a) {
        this.succs && a.writeLn("#" + this.bid);
      };
      a.prototype.toString = function(a) {
        var f = d.AVM2.opcodeTable[this.op], b = v[this.op].padRight(" ", 20), e, c;
        if (27 === this.op) {
          for (b += "targets:", e = 0, c = this.targets.length;e < c;e++) {
            b += (0 < e ? "," : "") + this.targets[e].position;
          }
        } else {
          for (e = 0, c = f.operands.length;e < c;e++) {
            var p = f.operands[e];
            if ("offset" === p.name) {
              this.target && (b += "target:" + this.target.position);
            } else {
              var b = b + (p.name + ": "), m = this[p.name];
              if (a) {
                switch(p.type) {
                  case "":
                    b += m;
                    break;
                  case "I":
                    b += a.constantPool.ints[m];
                    break;
                  case "U":
                    b += a.constantPool.uints[m];
                    break;
                  case "D":
                    b += a.constantPool.doubles[m];
                    break;
                  case "S":
                    b += a.constantPool.strings[m];
                    break;
                  case "N":
                    b += a.constantPool.namespaces[m];
                    break;
                  case "CI":
                    b += a.classes[m];
                    break;
                  case "M":
                    b += a.constantPool.multinames[m];
                    break;
                  default:
                    b += "?";
                }
              } else {
                b += m;
              }
            }
            e < c - 1 && (b += ", ");
          }
        }
        return b;
      };
      return a;
    }();
    k.Bytecode = l;
    var c = d.BitSets.BITS_PER_WORD, g = d.BitSets.ADDRESS_BITS_PER_WORD, q = d.BitSets.BIT_INDEX_MASK, t = function(a) {
      function h(f, b) {
        a.call(this, f);
        this.blockById = b;
      }
      __extends(h, a);
      h.prototype.forEachBlock = function(a) {
        for (var b = this.blockById, e = this.bits, h = 0, p = e.length;h < p;h++) {
          var m = e[h];
          if (m) {
            for (var g = 0;g < c;g++) {
              m & 1 << g && a(b[h * c + g]);
            }
          }
        }
      };
      h.prototype.choose = function() {
        for (var a = this.blockById, b = this.bits, e = 0, h = b.length;e < h;e++) {
          var p = b[e];
          if (p) {
            for (var m = 0;m < c;m++) {
              if (p & 1 << m) {
                return a[e * c + m];
              }
            }
          }
        }
      };
      h.prototype.members = function() {
        for (var a = this.blockById, b = [], e = this.bits, h = 0, p = e.length;h < p;h++) {
          var m = e[h];
          if (m) {
            for (var g = 0;g < c;g++) {
              m & 1 << g && b.push(a[h * c + g]);
            }
          }
        }
        return b;
      };
      h.prototype.setBlocks = function(a) {
        for (var b = this.bits, e = 0, h = a.length;e < h;e++) {
          var c = a[e].bid;
          b[c >> g] |= 1 << (c & q);
        }
      };
      return h;
    }(d.BitSets.Uint32ArrayBitSet);
    k.BlockSet = t;
    t = function() {
      function c(a) {
        this.methodInfo = a;
        this.boundBlockSet = this.bytecodes = this.blocks = null;
        this.analyzedControlFlow = this.markedLoops = !1;
        a.code && (k.enterTimeline("normalizeBytecode"), this.normalizeBytecode(), k.leaveTimeline());
      }
      c.prototype.makeBlockSetFactory = function(a, f) {
        this.boundBlockSet = function() {
          return new d.AVM2.BlockSet(a, f);
        };
      };
      c.prototype.accessLocal = function(a) {
        0 !== a-- && a < this.methodInfo.parameters.length && (this.methodInfo.parameters[a].isUsed = !0);
      };
      c.prototype.getInvalidTarget = function(a, f) {
        if (a && a[f]) {
          return a[f];
        }
        var b = u.get(null);
        b.position = f;
        a && (a[f] = b);
        return b;
      };
      c.prototype.normalizeBytecode = function() {
        for (var h = this.methodInfo, f = [], b = [], e = new a(h.code), c;0 < e.remaining();) {
          var p = e.position;
          c = u.get(e);
          c.pc = p;
          switch(c.op) {
            case 2:
            ;
            case 9:
              f[p] = b.length;
              continue;
            case 27:
              c.targets = [];
              for (var m = c.offsets, g = 0, q = m.length;g < q;g++) {
                m[g] += p;
              }
              break;
            case 16:
            ;
            case 21:
            ;
            case 12:
            ;
            case 22:
            ;
            case 13:
            ;
            case 23:
            ;
            case 14:
            ;
            case 24:
            ;
            case 15:
            ;
            case 19:
            ;
            case 20:
            ;
            case 25:
            ;
            case 26:
            ;
            case 17:
            ;
            case 18:
              c.offset += e.position;
              break;
            case 208:
            ;
            case 209:
            ;
            case 210:
            ;
            case 211:
              this.accessLocal(c.op - 208);
              break;
            case 98:
              this.accessLocal(c.index);
          }
          c.position = b.length;
          f[p] = b.length;
          b.push(c);
        }
        for (var e = {}, t = 0, l = b.length;t < l;t++) {
          switch(c = b[t], c.op) {
            case 27:
              m = c.offsets;
              g = 0;
              for (q = m.length;g < q;g++) {
                p = f[m[g]], c.targets.push(b[p] || this.getInvalidTarget(e, m[g])), m[g] = p;
              }
              break;
            case 16:
            ;
            case 21:
            ;
            case 12:
            ;
            case 22:
            ;
            case 13:
            ;
            case 23:
            ;
            case 14:
            ;
            case 24:
            ;
            case 15:
            ;
            case 19:
            ;
            case 20:
            ;
            case 25:
            ;
            case 26:
            ;
            case 17:
            ;
            case 18:
              p = f[c.offset], c.target = b[p] || this.getInvalidTarget(e, c.offset), c.offset = p;
          }
        }
        this.bytecodes = b;
        h = h.exceptions;
        g = 0;
        for (q = h.length;g < q;g++) {
          c = h[g], c.start_pc = c.start, c.end_pc = c.end, c.target_pc = c.target, c.start = f[c.start], c.end = f[c.end], c.offset = f[c.target], c.target = b[c.offset], c.target.exception = c;
        }
      };
      c.prototype.analyzeControlFlow = function() {
        k.enterTimeline("analyzeControlFlow");
        this.detectBasicBlocks();
        this.normalizeReachableBlocks();
        this.computeDominance();
        this.analyzedControlFlow = !0;
        k.leaveTimeline();
        return !0;
      };
      c.prototype.detectBasicBlocks = function() {
        var a = this.bytecodes, f = this.methodInfo.exceptions, b = 0 < f.length, e = {}, c, p, m, g;
        g = a[0].makeBlockHead(0);
        p = 0;
        for (m = a.length - 1;p < m;p++) {
          switch(c = a[p], c.op) {
            case 71:
            ;
            case 72:
            ;
            case 3:
              g = a[p + 1].makeBlockHead(g);
              break;
            case 27:
              c = c.targets;
              for (var q = 0, t = c.length;q < t;q++) {
                g = c[q].makeBlockHead(g);
              }
              g = a[p + 1].makeBlockHead(g);
              break;
            case 16:
            ;
            case 21:
            ;
            case 12:
            ;
            case 22:
            ;
            case 13:
            ;
            case 23:
            ;
            case 14:
            ;
            case 24:
            ;
            case 15:
            ;
            case 19:
            ;
            case 20:
            ;
            case 25:
            ;
            case 26:
            ;
            case 17:
            ;
            case 18:
              g = c.target.makeBlockHead(g), g = a[p + 1].makeBlockHead(g);
          }
        }
        c = a[m];
        switch(c.op) {
          case 27:
            c = c.targets;
            q = 0;
            for (t = c.length;q < t;q++) {
              g = c[q].makeBlockHead(g);
            }
            break;
          case 16:
            g = c.target.makeBlockHead(g);
            break;
          case 21:
          ;
          case 12:
          ;
          case 22:
          ;
          case 13:
          ;
          case 23:
          ;
          case 14:
          ;
          case 24:
          ;
          case 15:
          ;
          case 19:
          ;
          case 20:
          ;
          case 25:
          ;
          case 26:
          ;
          case 17:
          ;
          case 18:
            g = c.target.makeBlockHead(g), a[p + 1] = this.getInvalidTarget(null, p + 1), g = a[p + 1].makeBlockHead(g);
        }
        if (b) {
          for (q = 0;q < f.length;q++) {
            p = f[q], m = a[p.end + 1], g = a[p.start].makeBlockHead(g), m && (g = m.makeBlockHead(g)), g = p.target.makeBlockHead(g);
          }
        }
        var l = a[0];
        p = 1;
        for (m = a.length;p < m;p++) {
          if (a[p].succs) {
            e[l.bid] = l;
            c = a[p - 1];
            l.end = c;
            var d = a[p];
            switch(c.op) {
              case 71:
              ;
              case 72:
              ;
              case 3:
                break;
              case 27:
                q = 0;
                for (t = c.targets.length;q < t;q++) {
                  l.succs.push(c.targets[q]);
                }
                break;
              case 16:
                l.succs.push(c.target);
                break;
              case 21:
              ;
              case 12:
              ;
              case 22:
              ;
              case 13:
              ;
              case 23:
              ;
              case 14:
              ;
              case 24:
              ;
              case 15:
              ;
              case 19:
              ;
              case 20:
              ;
              case 25:
              ;
              case 26:
              ;
              case 17:
              ;
              case 18:
                l.succs.push(c.target);
                c.target !== d && l.succs.push(d);
                break;
              default:
                l.succs.push(d);
            }
            if (b) {
              q = l;
              t = [];
              c = 0;
              for (var n = f.length;c < n;c++) {
                var k = f[c];
                q.position >= k.start && q.end.position <= k.end && t.push(k.target);
              }
              c = t;
              l.hasCatches = 0 < c.length;
              l.succs.push.apply(l.succs, c);
            }
            l = d;
          }
        }
        e[l.bid] = l;
        c = a[m - 1];
        switch(c.op) {
          case 27:
            q = 0;
            for (t = c.targets.length;q < t;q++) {
              l.succs.push(c.targets[q]);
            }
            break;
          case 16:
            l.succs.push(c.target);
        }
        l.end = c;
        this.makeBlockSetFactory(g, e);
      };
      c.prototype.normalizeReachableBlocks = function() {
        var a = this.bytecodes[0], f = [], b = {}, e = {}, c = [a];
        for (e[a.bid] = !0;a = n(c);) {
          if (b[a.bid]) {
            if (1 === b[a.bid]) {
              b[a.bid] = 2;
              f.push(a);
              for (var p = a.succs, m = 0, g = p.length;m < g;m++) {
                p[m].preds.push(a);
              }
            }
            e[a.bid] = !1;
            c.pop();
          } else {
            for (b[a.bid] = 1, e[a.bid] = !0, p = a.succs, m = 0, g = p.length;m < g;m++) {
              var q = p[m];
              e[q.bid] && (a.spbacks || (a.spbacks = new this.boundBlockSet), a.spbacks.set(q.bid));
              !b[q.bid] && c.push(q);
            }
          }
        }
        this.blocks = f.reverse();
      };
      c.prototype.computeDominance = function() {
        var a = this.blocks, f = a.length, b = Array(f);
        b[0] = 0;
        for (var e = {}, c = 0;c < f;c++) {
          e[a[c].bid] = c;
        }
        for (var p = !0;p;) {
          for (p = !1, c = 1;c < f;c++) {
            var m = a[c].preds, g = m.length, q = e[m[0].bid];
            if (!(q in b)) {
              for (var t = 1;t < g && !(q = e[m[t].bid], q in b);t++) {
              }
            }
            for (t = 0;t < g;t++) {
              var l = e[m[t].bid];
              if (l !== q && l in b) {
                for (;l !== q;) {
                  for (;l > q;) {
                    l = b[l];
                  }
                  for (;q > l;) {
                    q = b[q];
                  }
                }
                q = l;
              }
            }
            b[c] !== q && (b[c] = q, p = !0);
          }
        }
        a[0].dominator = a[0];
        for (c = 1;c < f;c++) {
          e = a[c], t = a[b[c]], e.dominator = t, t.dominatees.push(e), e.npreds = e.preds.length;
        }
        f = [a[0]];
        for (a[0].level || (a[0].level = 0);e = f.shift();) {
          a = e.dominatees;
          for (t = 0;t < a.length;t++) {
            a[t].level = e.level + 1;
          }
          f.push.apply(f, a);
        }
      };
      c.prototype.markLoops = function() {
        function a(b) {
          var e = 1, f = {}, h = {}, c = [], p = [], r = [], m = b.level + 1;
          b = [b];
          for (var g, q;g = n(b);) {
            if (f[g.bid]) {
              if (w(p) === g) {
                p.pop();
                var t = [];
                do {
                  q = c.pop(), h[q.bid] = !0, t.push(q);
                } while (q !== g);
                (1 < t.length || q.spbacks && q.spbacks.get(q.bid)) && r.push(t);
              }
              b.pop();
            } else {
              f[g.bid] = e++;
              c.push(g);
              p.push(g);
              q = g.succs;
              for (var t = 0, l = q.length;t < l;t++) {
                if (g = q[t], !(g.level < m)) {
                  var d = g.bid;
                  if (!f[d]) {
                    b.push(g);
                  } else {
                    if (!h[d]) {
                      for (;f[w(p).bid] > f[d];) {
                        p.pop();
                      }
                    }
                  }
                }
              }
            }
          }
          return r;
        }
        function f(b, a) {
          var f = new e;
          f.setBlocks(b);
          f.recount();
          this.id = a;
          this.body = f;
          this.exit = new e;
          this.save = {};
          this.head = new e;
          this.npreds = 0;
          this._dirtyLocals = null;
        }
        if (!this.analyzedControlFlow && !this.analyzeControlFlow()) {
          return !1;
        }
        var b = this.bytecodes, e = this.boundBlockSet;
        f.prototype.getDirtyLocals = function() {
          if (this._dirtyLocals) {
            return this._dirtyLocals;
          }
          var a = this._dirtyLocals = [];
          this.body.members().forEach(function(e) {
            var f = e.position;
            for (e = e.end.position;f <= e;f++) {
              var h = b[f], c = h.op;
              switch(c) {
                case 146:
                ;
                case 148:
                ;
                case 99:
                ;
                case 194:
                ;
                case 195:
                  a[h.index] = !0;
                  break;
                case 50:
                  a[h.index] = !0;
                  a[h.object] = !0;
                  break;
                case 212:
                ;
                case 213:
                ;
                case 214:
                ;
                case 215:
                  a[c - 212] = !0;
              }
            }
          });
          return a;
        };
        var c = function(b) {
          for (var a = new e, f = 0, h = b.length;f < h;f++) {
            var c = b[f], p = c.spbacks;
            if (p) {
              for (var c = c.succs, r = 0, m = c.length;r < m;r++) {
                var g = c[r];
                p.get(g.bid) && a.set(g.dominator.bid);
              }
            }
          }
          return a.members();
        }(this.blocks);
        if (0 >= c.length) {
          return this.markedLoops = !0;
        }
        for (var c = c.sort(function(b, a) {
          return b.level - a.level;
        }), p = 0, m = c.length - 1;0 <= m;m--) {
          var g = c[m], q = a(g);
          if (0 !== q.length) {
            for (var t = 0, l = q.length;t < l;t++) {
              for (var d = q[t], k = new f(d, p++), v = 0, u = d.length;v < u;v++) {
                var K = d[v];
                if (K.level === g.level + 1 && !K.loop) {
                  K.loop = k;
                  k.head.set(K.bid);
                  for (var H = K.preds, A = 0, z = H.length;A < z;A++) {
                    k.body.get(H[A].bid) && K.npreds--;
                  }
                  k.npreds += K.npreds;
                }
              }
              v = 0;
              for (u = d.length;v < u;v++) {
                K = d[v], K.level === g.level + 1 && (K.npreds = k.npreds);
              }
              k.head.recount();
            }
          }
        }
        return this.markedLoops = !0;
      };
      return c;
    }();
    k.Analysis = t;
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
var Bytecode = Shumway.AVM2.Bytecode, Analysis = Shumway.AVM2.Analysis;
(function(d) {
  (function(k) {
    var a = d.Options.Option, n = d.Options.OptionSet, w = d.Settings.shumwayOptions.register(new n("AVM2"));
    (function(d) {
      var k = w.register(new n("Runtime"));
      d.traceExecution = k.register(new a("tx", "traceExecution", "number", 0, "trace script execution", {choices:{off:0, normal:2, verbose:3}}));
      d.traceCallExecution = k.register(new a("txc", "traceCallExecution", "number", 0, "trace call execution", {choices:{off:0, normal:1, verbose:2}}));
      d.traceFunctions = k.register(new a("t", "traceFunctions", "number", 0, "trace functions", {choices:{off:0, compiled:1, "compiled & abc":2}}));
      d.traceClasses = k.register(new a("tc", "traceClasses", "boolean", !1, "trace class creation"));
      d.traceDomain = k.register(new a("td", "traceDomain", "boolean", !1, "trace domain property access"));
      d.debuggerMode = k.register(new a("db", "debuggerMode", "boolean", !0, "enable debugger mode"));
      d.globalMultinameAnalysis = k.register(new a("ga", "globalMultinameAnalysis", "boolean", !1, "Global multiname analysis."));
      d.codeCaching = k.register(new a("cc", "codeCaching", "boolean", !1, "Enable code caching."));
      d.compilerEnableExceptions = k.register(new a("cex", "exceptions", "boolean", !1, "Compile functions with catch blocks."));
      d.compilerMaximumMethodSize = k.register(new a("cmms", "maximumMethodSize", "number", 4096, "Compiler maximum method size."));
      d = d.ExecutionMode || (d.ExecutionMode = {});
      d[d.INTERPRET = 1] = "INTERPRET";
      d[d.COMPILE = 2] = "COMPILE";
    })(k.Runtime || (k.Runtime = {}));
    (function(d) {
      d.options = w.register(new n("Compiler"));
      d.traceLevel = d.options.register(new a("tc4", "tc4", "number", 0, "Compiler Trace Level"));
      d.breakFilter = d.options.register(new a("", "break", "string", "", "Set a break point at methods whose qualified name matches this string pattern."));
      d.compileFilter = d.options.register(new a("", "compile", "string", "", "Only compile methods whose qualified name matches this string pattern."));
      d.enableDirtyLocals = d.options.register(new a("dl", "dirtyLocals", "boolean", !0, "Perform dirty local analysis to minimise PHI nodes."));
      d.useBaseline = d.options.register(new a("bl", "useBaseline", "boolean", !1, "Use baseline instead of optimizing compiler."));
      d.baselineDebugLevel = d.options.register(new a("bl-dbg", "baselineDebugLevel", "number", 0, "Level of trace and code debug output in baseline compiler.", {choices:{off:0, normal:1, verbose:2}}));
    })(k.Compiler || (k.Compiler = {}));
    (function(d) {
      d.options = w.register(new n("Verifier"));
      d.enabled = d.options.register(new a("verifier", "verifier", "boolean", !0, "Enable verifier."));
      d.traceLevel = d.options.register(new a("tv", "tv", "number", 0, "Verifier Trace Level"));
    })(k.Verifier || (k.Verifier = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
var Namespace = Shumway.AVM2.ABC.Namespace;
(function(d) {
  (function(k) {
    (function(a) {
      function n(b) {
        var e = this.resolutionMap[b.runtimeId];
        if (e) {
          return e;
        }
        var e = this.resolutionMap[b.runtimeId] = d.ObjectUtilities.createMap(), f = this.bindings, h;
        for (h in f.map) {
          var c = h, p = f.map[h].trait;
          if (p.isGetter() || p.isSetter()) {
            c = c.substring(a.Binding.KEY_PREFIX_LENGTH);
          }
          c = Q.fromQualifiedName(c);
          c.getNamespace().inNamespaceSet(b) && (e[c.getName()] = Q.getQualifiedName(p.name));
        }
        return e;
      }
      function w(b, a, e) {
        ua(a) ? a = String(N(a)) : "object" === typeof a && (a = String(a));
        return d.isNumeric(a) ? d.toNumber(a) : b ? 1 < b.length ? (b = this.getNamespaceResolutionMap(b)[a]) ? b : Q.getPublicQualifiedName(a) : Q.qualifyName(b[0], a) : Q.getPublicQualifiedName(a);
      }
      function v(b) {
        return this.asGetProperty(void 0, b, 0);
      }
      function u(b, a, e) {
        b = this.resolveMultinameProperty(b, a, e);
        return this.asGetNumericProperty && Q.isNumeric(b) ? this.asGetNumericProperty(b) : this[b];
      }
      function l(b) {
        return this[b];
      }
      function c(b, a, e) {
        a = a ? null : this;
        var f = this.asOpenMethods;
        return a && f && f[b] ? f[b].apply(a, e) : this[b].asApply(a, e);
      }
      function g(b, a) {
        return this.asSetProperty(void 0, b, 0, a);
      }
      function q(b, a, e, f) {
        "object" === typeof a && (a = String(a));
        b = this.resolveMultinameProperty(b, a, e);
        if (this.asSetNumericProperty && Q.isNumeric(b)) {
          return this.asSetNumericProperty(b, f);
        }
        (a = this.asSlots.byQN[b]) && (a = a.type) && a.coerce && (f = a.coerce(f));
        this[b] = f;
      }
      function t(b, a) {
        return this.asDefineProperty(void 0, b, 0, a);
      }
      function m(b, a, e, f) {
        "object" === typeof a && (a = String(a));
        b = this.resolveMultinameProperty(b, a, e);
        Object.defineProperty(this, b, f);
      }
      function h(b, a, e) {
        "object" === typeof a && (a = String(a));
        b = this.resolveMultinameProperty(b, a, e);
        return Object.getOwnPropertyDescriptor(this, b);
      }
      function f(b, a) {
        return this.asCallProperty(void 0, b, 0, !1, a);
      }
      function b(b, a, e, f, h) {
        f = f ? null : this;
        b = this.resolveMultinameProperty(b, a, e);
        this.asGetNumericProperty && Q.isNumeric(b) ? (b = this.asGetNumericProperty(b), h = b.asApply(f, h)) : (a = this.asOpenMethods, h = f && a && a[b] ? a[b].apply(f, h) : this[b].asApply(f, h));
        return h;
      }
      function e(b, a, e, f, h) {
        b = b.object.baseClass;
        a = b.traitsPrototype.resolveMultinameProperty(a, e, f);
        return b.traitsPrototype.asOpenMethods[a].apply(this, h);
      }
      function r(b, e, f, h, c) {
        b = b.object.baseClass;
        var p = b.traitsPrototype.resolveMultinameProperty(e, f, h);
        this.asSlots.byQN[p] ? this.asSetProperty(e, f, h, c) : b.traitsPrototype[a.VM_OPEN_SET_METHOD_PREFIX + p].call(this, c);
      }
      function p(b, e, f, h) {
        b = b.object.baseClass;
        var c = b.traitsPrototype.resolveMultinameProperty(e, f, h);
        e = this.asSlots.byQN[c] ? this.asGetProperty(e, f, h) : (e = b.traitsPrototype[a.VM_OPEN_GET_METHOD_PREFIX + c]) ? e.call(this) : b.traitsPrototype[a.VM_OPEN_METHOD_PREFIX + c];
        return e;
      }
      function C(b, a) {
        if (b.classInfo) {
          var e = Q.getQualifiedName(b.classInfo.instanceInfo.name);
          if (e === Q.String) {
            return String.apply(null, a);
          }
          if (e === Q.Boolean) {
            return Boolean.apply(null, a);
          }
          if (e === Q.Number) {
            return Number.apply(null, a);
          }
        }
        e = b.instanceConstructor;
        switch(a.length) {
          case 0:
            return new e;
          case 1:
            return new e(a[0]);
          case 2:
            return new e(a[0], a[1]);
          case 3:
            return new e(a[0], a[1], a[2]);
          case 4:
            return new e(a[0], a[1], a[2], a[3]);
          case 5:
            return new e(a[0], a[1], a[2], a[3], a[4]);
          case 6:
            return new e(a[0], a[1], a[2], a[3], a[4], a[5]);
          case 7:
            return new e(a[0], a[1], a[2], a[3], a[4], a[5], a[6]);
          case 8:
            return new e(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7]);
          case 9:
            return new e(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]);
          case 10:
            return new e(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9]);
        }
        for (var f = [], h = 0;h < a.length;h++) {
          f[h + 1] = a[h];
        }
        return new (Function.bind.apply(e, f));
      }
      function I(b, e, f, h) {
        b = this.asGetProperty(b, e, f);
        a.traceCallExecution.value && a.callWriter.enter("construct " + e + "(" + (h ? Da(h) : "") + ") #" + fa.count(e));
        e = C(b, h);
        0 < a.traceCallExecution.value && a.callWriter.leave("return " + Ja(e));
        return e;
      }
      function B(b, a, e) {
        return this.resolveMultinameProperty(b, a, e) in this;
      }
      function D(b, a, e) {
        b = this.resolveMultinameProperty(b, a, e);
        return this.asBindings[b] || pa(this, b);
      }
      function M(b, a, e) {
        b = this.resolveMultinameProperty(b, a, e);
        return Ea(this, b);
      }
      function E(b, a, e) {
        return this.asHasTraitProperty(b, a, e) ? !1 : delete this[this.resolveMultinameProperty(b, a, e)];
      }
      function J(b, a, e) {
        b = this.resolveMultinameProperty(b, a, e);
        return this.asBindings[b];
      }
      function P(b) {
        return this[b];
      }
      function y(b, a) {
        this[b] = a;
      }
      function K(b) {
        0 === b && ha(this, "asEnumerableKeys", this.asGetEnumerableKeys());
        for (var a = this.asEnumerableKeys;b < a.length;) {
          if (this.asHasProperty(void 0, a[b], 0)) {
            return b + 1;
          }
          b++;
        }
        return 0;
      }
      function H(b) {
        return this.asEnumerableKeys[b - 1];
      }
      function A(b) {
        return this.asGetPublicProperty(this.asNextName(b));
      }
      function z(b) {
        if (ua(b.object)) {
          b.index = 0, b.object = null;
        } else {
          var a = ya(b.object), e = a.asNextNameIndex(b.index);
          if (0 < e) {
            b.index = e, b.object = a;
          } else {
            for (;;) {
              a = Object.getPrototypeOf(a);
              if (!a) {
                b.index = 0;
                b.object = null;
                break;
              }
              e = a.asNextNameIndex(0);
              if (0 < e) {
                b.index = e;
                b.object = a;
                break;
              }
            }
          }
        }
      }
      function G() {
        if (this instanceof String || this instanceof Number) {
          return [];
        }
        for (var b = Object.keys(this), a = [], e = 0;e < b.length;e++) {
          var f = b[e];
          d.isNumeric(f) ? a.push(f) : (f = Q.stripPublicQualifier(f), void 0 !== f && a.push(f));
        }
        return a;
      }
      function L(b, a) {
        b || F("TypeError", k.Errors.NullPointerError, a);
      }
      function F(b, e, f, h, c, p) {
        e.fqn && (b = e.fqn);
        var r = d.AVM2.formatErrorMessage.apply(null, Array.prototype.slice.call(arguments, 1)), m = a.AVM2.currentDomain(), g = e.code;
        throw new (m.getClass(b).instanceConstructor)(r, g);
      }
      function S(b) {
        return b instanceof k.AS.ASXML || b instanceof k.AS.ASXMLList || b instanceof k.AS.ASQName || b instanceof k.AS.ASNamespace;
      }
      function U(b, a) {
        return b.coerce(a);
      }
      function N(b) {
        return "string" === typeof b ? b : void 0 == b ? null : b.toString();
      }
      function R(b) {
        return b instanceof Boolean ? b.valueOf() : void 0 == b ? null : "string" === typeof b || "number" === typeof b ? b : Object(b);
      }
      function T(b, a) {
        return String(b).localeCompare(String(a));
      }
      function X(b) {
        return b instanceof k.AS.ASXML || b instanceof k.AS.ASXMLList;
      }
      function da(d) {
        "Object Number Boolean String Array Date RegExp".split(" ").forEach(function(b) {
          Fa(d[b].prototype, a.VM_NATIVE_PROTOTYPE_FLAG, !0);
        });
        ha(d.Object.prototype, "getNamespaceResolutionMap", n);
        ha(d.Object.prototype, "resolveMultinameProperty", w);
        ha(d.Object.prototype, "asGetProperty", u);
        ha(d.Object.prototype, "asGetPublicProperty", v);
        ha(d.Object.prototype, "asGetResolvedStringProperty", l);
        ha(d.Object.prototype, "asSetProperty", q);
        ha(d.Object.prototype, "asSetPublicProperty", g);
        ha(d.Object.prototype, "asDefineProperty", m);
        ha(d.Object.prototype, "asDefinePublicProperty", t);
        ha(d.Object.prototype, "asGetPropertyDescriptor", h);
        ha(d.Object.prototype, "asCallProperty", b);
        ha(d.Object.prototype, "asCallSuper", e);
        ha(d.Object.prototype, "asGetSuper", p);
        ha(d.Object.prototype, "asSetSuper", r);
        ha(d.Object.prototype, "asCallPublicProperty", f);
        ha(d.Object.prototype, "asCallResolvedStringProperty", c);
        ha(d.Object.prototype, "asConstructProperty", I);
        ha(d.Object.prototype, "asHasProperty", B);
        ha(d.Object.prototype, "asHasPropertyInternal", B);
        ha(d.Object.prototype, "asHasOwnProperty", D);
        ha(d.Object.prototype, "asPropertyIsEnumerable", M);
        ha(d.Object.prototype, "asHasTraitProperty", J);
        ha(d.Object.prototype, "asDeleteProperty", E);
        ha(d.Object.prototype, "asHasNext2", z);
        ha(d.Object.prototype, "asNextName", H);
        ha(d.Object.prototype, "asNextValue", A);
        ha(d.Object.prototype, "asNextNameIndex", K);
        ha(d.Object.prototype, "asGetEnumerableKeys", G);
        ha(d.Function.prototype, "asCall", d.Function.prototype.call);
        ha(d.Function.prototype, "asApply", d.Function.prototype.apply);
        "Array Object Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array".split(" ").forEach(function(b) {
          b in d ? (ha(d[b].prototype, "asGetNumericProperty", P), ha(d[b].prototype, "asSetNumericProperty", y)) : console.warn(b + " was not found in globals");
        });
        d.Array.prototype.asGetProperty = function(b, a, e) {
          return "number" === typeof a ? this[a] : u.call(this, b, a, e);
        };
        d.Array.prototype.asSetProperty = function(b, a, e, f) {
          if ("number" === typeof a) {
            this[a] = f;
          } else {
            return q.call(this, b, a, e, f);
          }
        };
      }
      function x(b, e) {
        e && (new a.CatchBindings(new a.Scope(null, this), e)).applyTo(b, this);
      }
      function Y(b, a, e) {
        void 0 === a && (a = 0);
        void 0 === e && (e = void 0);
        b = Array.prototype.slice.call(b, a);
        e && b.asDefinePublicProperty("callee", {value:e, configurable:!0});
        return b;
      }
      function V(b) {
        return !b.hasBody || b.hasExceptions() && !a.compilerEnableExceptions.value || b.hasSetsDxns() || b.code.length > a.compilerMaximumMethodSize.value ? !1 : !0;
      }
      function ba(b) {
        return !V(b) || b.isClassInitializer || b.isScriptInitializer ? !1 : !0;
      }
      function Z(b) {
        if (b.hasExceptions()) {
          return !1;
        }
        b = b.holder;
        b instanceof W && (b = b.instanceInfo);
        if (b instanceof la) {
          switch(b.name.namespaces[0].uri) {
            case "flash.geom":
            ;
            case "flash.events":
              return !0;
          }
          switch(b.name.getOriginalName()) {
            case "com.google.youtube.model.VideoData":
              return !0;
          }
        }
        return !1;
      }
      function O(b) {
        if (a.codeCaching.value) {
          var e = a.CODE_CACHE[b.abc.hash];
          if (e) {
            e.isInitialized || (e.isInitialized = !0);
            if (e = e.methods[b.index]) {
              return console.log("Linking CC: " + b), k.countTimeline("Code Cache Hit"), e;
            }
            b.isInstanceInitializer || b.isClassInitializer ? k.countTimeline("Code Cache Query On Initializer") : (k.countTimeline("Code Cache MISS ON OTHER"), console.warn("Shouldn't MISS: " + b + " " + b.debugName));
            k.countTimeline("Code Cache Miss");
          } else {
            console.warn("Cannot Find Code Cache For ABC, name: " + b.abc.name + ", hash: " + b.abc.hash), k.countTimeline("Code Cache ABC Miss");
          }
        }
      }
      function aa(b) {
        var a = b.name ? Q.getFullQualifiedName(b.name) : "fn" + za;
        if (b.holder) {
          var e = "";
          b.holder instanceof W ? e = "static$" + b.holder.instanceInfo.name.getName() : b.holder instanceof la ? e = b.holder.name.getName() : b.holder instanceof na && (e = "script");
          a = e + a;
        }
        a = d.StringUtilities.escapeString(a);
        b.isGetter ? a += "_get" : b.isSetter && (a += "_set");
        return a += "_" + (b.abc.hash >>> 0);
      }
      function ea(b, a, e) {
        var f = !1, h = b.parameters.map(function(b) {
          void 0 !== b.value && (f = !0);
          return b.value;
        });
        e = e ? function(a) {
          var e = this === jsGlobal ? a.global.object : this, c = Y(arguments, 1, arguments.callee);
          f && c.length < h.length && (c = c.concat(h.slice(c.length - h.length)));
          return d.AVM2.Interpreter.interpretMethod(e, b, a, c);
        } : function() {
          var e = this === jsGlobal ? a.global.object : this, c = Y(arguments, 0, arguments.callee);
          f && c.length < h.length && (c = c.concat(h.slice(arguments.length - h.length)));
          return d.AVM2.Interpreter.interpretMethod(e, b, a, c);
        };
        b.hasSetsDxns() && (e = function(b) {
          return function() {
            var a = d.AVM2.AS.ASXML.defaultNamespace;
            try {
              var e = b.apply(this, arguments);
              d.AVM2.AS.ASXML.defaultNamespace = a;
              return e;
            } catch (f) {
              throw d.AVM2.AS.ASXML.defaultNamespace = a, f;
            }
          };
        }(e));
        e.instanceConstructor = e;
        var c = aa(b);
        e.displayName = e.debugName = c;
        e.methodInfo = b;
        return jsGlobal[c] = e;
      }
      function ia(b, a, e, f, h) {
        var c;
        h = aa(b);
        var p = "mi_" + h;
        jsGlobal[p] = b;
        var r = O(b);
        r || (k.Compiler.useBaseline.value ? (k.enterTimeline("Baseline compile"), c = k.Compiler.baselineCompileMethod(b, a, e, p), c.body = "{\n" + c.body + "\n}", k.leaveTimeline()) : c = k.Compiler.compileMethod(b, a, e));
        f || (a = d.AVM2.Compiler.breakFilter.value) && 0 <= h.search(a) && (f = !0);
        a = c.body;
        f && (a = "{ debugger; \n" + a + "}");
        if (!r) {
          var m = "jsGlobal." + h + " = function " + h + " (" + c.parameters.join(", ") + ") " + a, m = m + ("//# sourceURL=fun-" + h + ".as")
        }
        (new Function("return " + (r || m)))();
        f = jsGlobal[h];
        f.debugName = h;
        f.methodInfo = b;
        return f;
      }
      function ja(b, e, f, h, c) {
        void 0 === c && (c = !1);
        if (b.freeMethod) {
          return f ? a.bindFreeMethodScope(b, e) : b.freeMethod;
        }
        var p;
        if ((p = a.checkMethodOverrides(b)) || (p = a.checkCommonMethodPatterns(b))) {
          return p;
        }
        ga(b);
        1 !== b.abc.applicationDomain.mode && ba(b) || Z(b) || (c = !0);
        (p = d.AVM2.Compiler.compileFilter.value) && b.name && 0 > Q.getQualifiedName(b.name).search(p) && (c = !0);
        c ? b.freeMethod = ea(b, e, f) : (za++, b.freeMethod = ia(b, e, f, h, b.isInstanceInitializer));
        b.freeMethod.methodInfo = b;
        return f ? a.bindFreeMethodScope(b, e) : b.freeMethod;
      }
      function ga(b) {
        if (!b.analysis) {
          b.analysis = new k.Analysis(b);
          b.needsActivation() && (b.activationPrototype = new Aa(b), (new a.ActivationBindings(b)).applyTo(b.abc.applicationDomain, b.activationPrototype));
          for (var e = b.exceptions, f = 0, h = e.length;f < h;f++) {
            var c = e[f];
            if (c.varName) {
              var p = Object.create(oa.prototype);
              p.kind = 0;
              p.name = c.varName;
              p.typeName = c.typeName;
              p.holder = b;
              c.scopeObject = new x(b.abc.applicationDomain, p);
            } else {
              c.scopeObject = new x(void 0, void 0);
            }
          }
        }
      }
      function ca(b, a, e) {
        var f = b.methodInfo, h;
        if (f.isNative()) {
          if ((a = b.metadata) && a.native ? h = d.AVM2.AS.getNative(a.native.value[0].value) : e && (h = d.AVM2.AS.getMethodOrAccessorNative(b, e)), !h) {
            return function(a) {
              return function() {
                d.Debug.warning("Calling undefined native method: " + b.kindName() + " " + a.holder.name + "::" + Q.getQualifiedName(a.name));
              };
            }(f);
          }
        } else {
          h = ja(f, a, !1, !1);
        }
        return h;
      }
      a.sealConstTraits = !1;
      a.useAsAdd = !0;
      var fa = new d.Metrics.Counter(!0), Q = d.AVM2.ABC.Multiname, ma = d.AVM2.ABC.Namespace, W = d.AVM2.ABC.ClassInfo, la = d.AVM2.ABC.InstanceInfo, na = d.AVM2.ABC.ScriptInfo, oa = d.AVM2.ABC.Trait, ta = d.IndentingWriter, pa = d.ObjectUtilities.hasOwnProperty, Ea = d.ObjectUtilities.propertyIsEnumerable, ua = d.isNullOrUndefined, ya = d.ObjectUtilities.boxValue, va = d.ObjectUtilities.defineNonEnumerableGetterOrSetter, ha = d.ObjectUtilities.defineNonEnumerableProperty, Fa = d.ObjectUtilities.defineReadOnlyProperty, 
      Ga = d.ObjectUtilities.defineNonEnumerableGetter, Ja = d.StringUtilities.toSafeString, Da = d.StringUtilities.toSafeArrayString;
      a.VM_SLOTS = "asSlots";
      a.VM_LENGTH = "asLength";
      a.VM_BINDINGS = "asBindings";
      a.VM_NATIVE_PROTOTYPE_FLAG = "asIsNative";
      a.VM_OPEN_METHODS = "asOpenMethods";
      a.VM_OPEN_METHOD_PREFIX = "m";
      a.VM_MEMOIZER_PREFIX = "z";
      a.VM_OPEN_SET_METHOD_PREFIX = "s";
      a.VM_OPEN_GET_METHOD_PREFIX = "g";
      a.SAVED_SCOPE_NAME = "$SS";
      a.VM_METHOD_OVERRIDES = Object.create(null);
      var za = 0;
      a.isNativePrototype = function(b) {
        return Object.prototype.hasOwnProperty.call(b, a.VM_NATIVE_PROTOTYPE_FLAG);
      };
      a.traitsWriter = null;
      a.callWriter = null;
      lazyInitializer(d.AVM2.Runtime, function() {
        return new ta;
      });
      a.patch = function(b, e) {
        for (var f = 0;f < b.length;f++) {
          var h = b[f];
          if (3 <= a.traceExecution.value) {
            var c = "Patching: ";
            h.name ? c += h.name : h.get ? c += "get " + h.get : h.set && (c += "set " + h.set);
            a.traitsWriter && a.traitsWriter.redLn(c);
          }
          h.get ? va(h.object, h.get, e, !0) : h.set ? va(h.object, h.set, e, !1) : ha(h.object, h.name, e);
        }
      };
      a.applyMethodTrait = function(b, e, f, h) {
        var c = f.trait, p = c.isMethod(), r = c.isGetter(), m = p ? a.VM_OPEN_METHOD_PREFIX : r ? a.VM_OPEN_GET_METHOD_PREFIX : a.VM_OPEN_SET_METHOD_PREFIX, g = c.methodInfo.cachedMethodOrTrampoline, q;
        g ? g.isTrampoline && (q = g.patchTargets) : (c.methodInfo.isNative() ? g = ca(c, f.scope, f.natives) : (q = [], g = a.makeTrampoline(c, f.scope, f.natives, q, p ? c.methodInfo.parameters.length : 0, String(c.name))), c.methodInfo.cachedMethodOrTrampoline = g);
        q && (q.push({object:e, name:m + b}), p ? q.push({object:e.asOpenMethods, name:b}) : (f = {object:e}, r ? f.get = b : f.set = b, q.push(f)));
        ha(e, m + b, g);
        p ? (e.asOpenMethods[b] = g, h ? (h = c.methodInfo.cachedMemoizer, h || (g = {value:g}, q && q.push({object:g, name:"value"}), h = a.makeMemoizer(b, g), c.methodInfo.cachedMemoizer = h), Ga(e, b, h)) : ha(e, b, g)) : va(e, b, g, r);
      };
      a.getNamespaceResolutionMap = n;
      a.resolveMultinameProperty = w;
      a.asGetPublicProperty = v;
      a.asGetProperty = u;
      a.asGetResolvedStringProperty = l;
      a.asCallResolvedStringProperty = c;
      a.asSetPublicProperty = g;
      a.asToString = function() {
        var b = ya(this);
        return b instanceof k.AS.ASClass ? d.StringUtilities.concat3("[class ", b.classInfo.instanceInfo.name.name, "]") : d.StringUtilities.concat3("[object ", b.class.classInfo.instanceInfo.name.name, "]");
      };
      a.asSetProperty = q;
      a.asDefinePublicProperty = t;
      a.asDefineProperty = m;
      a.asGetPropertyDescriptor = h;
      a.asCallPublicProperty = f;
      a.asCallProperty = b;
      a.asCallSuper = e;
      a.asSetSuper = r;
      a.asGetSuper = p;
      a.construct = C;
      a.asConstructProperty = I;
      a.asHasProperty = B;
      a.asHasOwnProperty = D;
      a.asPropertyIsEnumerable = M;
      a.asDeleteProperty = E;
      a.asHasTraitProperty = J;
      a.asGetNumericProperty = P;
      a.asSetNumericProperty = y;
      a.asGetDescendants = function(b, a, e) {
        d.Debug.notImplemented("asGetDescendants");
      };
      a.asNextNameIndex = K;
      a.asNextName = H;
      a.asNextValue = A;
      a.asHasNext2 = z;
      a.asGetEnumerableKeys = G;
      a.asTypeOf = function(b) {
        if (b) {
          if (b.constructor === String) {
            return "string";
          }
          if (b.constructor === Number) {
            return "number";
          }
          if (b.constructor === Boolean) {
            return "boolean";
          }
          if (b instanceof d.AVM2.AS.ASXML || b instanceof d.AVM2.AS.ASXMLList) {
            return "xml";
          }
          if (d.AVM2.AS.ASClass.isType(b)) {
            return "object";
          }
        }
        return typeof b;
      };
      a.publicizeProperties = function(b) {
        for (var a = Object.keys(b), e = 0;e < a.length;e++) {
          var f = a[e];
          if (!Q.isPublicQualifiedName(f)) {
            var h = b[f];
            b[Q.getPublicQualifiedName(f)] = h;
            delete b[f];
          }
        }
      };
      a.asGetSlot = function(b, a) {
        return b[b.asSlots.byID[a].name];
      };
      a.asSetSlot = function(b, a, e) {
        a = b.asSlots.byID[a];
        if (!a.const) {
          var f = a.type;
          b[a.name] = f && f.coerce ? f.coerce(e) : e;
        }
      };
      a.asCheckVectorSetNumericProperty = function(b, a, e) {
        (0 > b || b > a || b === a && e || !d.isNumeric(b)) && F("RangeError", k.Errors.OutOfRangeError, b, a);
      };
      a.asCheckVectorGetNumericProperty = function(b, a) {
        (0 > b || b >= a || !d.isNumeric(b)) && F("RangeError", k.Errors.OutOfRangeError, b, a);
      };
      a.checkNullParameter = L;
      a.checkParameterType = function(b, a, e) {
        L(b, a);
        e.isType(b) || F("TypeError", k.Errors.CheckTypeFailedError, b, e.classInfo.instanceInfo.name.getOriginalName());
      };
      a.throwError = F;
      a.translateError = function(b, a) {
        if (a instanceof Error) {
          var e = b.getClass(a.name);
          if (e) {
            return new e.instanceConstructor(d.AVM2.translateErrorMessage(a));
          }
          d.Debug.unexpected("Can't translate error: " + a);
        }
        return a;
      };
      a.asIsInstanceOf = function(b, a) {
        return b.isInstanceOf(a);
      };
      a.asIsType = function(b, a) {
        return b.isType(a);
      };
      a.asAsType = function(b, a) {
        return b.isType(a) ? a : null;
      };
      a.escapeXMLAttribute = function(b) {
        return k.AS.escapeAttributeValue(b);
      };
      a.escapeXMLElement = function(b) {
        return k.AS.escapeElementValue(b);
      };
      a.asEquals = function(b, a) {
        return S(b) ? b.equals(a) : S(a) ? a.equals(b) : b == a;
      };
      a.asCoerceByMultiname = function(b, a, e) {
        switch(Q.getQualifiedName(a)) {
          case Q.Int:
            return e | 0;
          case Q.Uint:
            return e >>> 0;
          case Q.String:
            return N(e);
          case Q.Number:
            return +e;
          case Q.Boolean:
            return !!e;
          case Q.Object:
            return R(e);
        }
        return U(b.abc.applicationDomain.getType(a), e);
      };
      a.asCoerce = U;
      a.asCoerceString = N;
      a.asCoerceInt = function(b) {
        return b | 0;
      };
      a.asCoerceUint = function(b) {
        return b >>> 0;
      };
      a.asCoerceNumber = function(b) {
        return +b;
      };
      a.asCoerceBoolean = function(b) {
        return !!b;
      };
      a.asCoerceObject = R;
      a.asDefaultCompareFunction = T;
      a.asCompare = function(b, a, e, f) {
        var h = 0;
        f || (f = T);
        e & 1 && (b = String(b).toLowerCase(), a = String(a).toLowerCase());
        e & 16 ? (b = d.toNumber(b), a = d.toNumber(a), h = b < a ? -1 : b > a ? 1 : 0) : h = f(b, a);
        e & 2 && (h *= -1);
        return h;
      };
      a.asAdd = function(b, a) {
        return "string" === typeof b || "string" === typeof a ? String(b) + String(a) : X(b) && X(a) ? d.AVM2.AS.ASXMLList.addXML(b, a) : b + a;
      };
      a.getDescendants = function(b, a) {
        if (!X(b)) {
          throw "Not XML object in getDescendants";
        }
        return b.descendants(a);
      };
      a.checkFilter = function(b) {
        if (!b.class || !X(b)) {
          throw "TypeError operand of childFilter not of XML type";
        }
        return b;
      };
      a.initializeGlobalObject = da;
      da(jsGlobal);
      a.nameInTraits = function(b, e) {
        if (b.hasOwnProperty(a.VM_BINDINGS) && b.hasOwnProperty(e)) {
          return !0;
        }
        var f = Object.getPrototypeOf(b);
        return f.hasOwnProperty(a.VM_BINDINGS) && f.hasOwnProperty(e);
      };
      a.CatchScopeObject = x;
      var ra = function() {
        function b(e) {
          this.scriptInfo = e;
          e.global = this;
          this.scriptBindings = new a.ScriptBindings(e, new a.Scope(null, this, !1));
          this.scriptBindings.applyTo(e.abc.applicationDomain, this);
          e.loaded = !0;
        }
        b.prototype.toString = function() {
          return "[object global]";
        };
        b.prototype.isExecuted = function() {
          return this.scriptInfo.executed;
        };
        b.prototype.isExecuting = function() {
          return this.scriptInfo.executing;
        };
        b.prototype.ensureExecuted = function() {
          d.AVM2.Runtime.ensureScriptIsExecuted(this.scriptInfo, "external");
        };
        return b;
      }();
      a.Global = ra;
      ha(ra.prototype, Q.getPublicQualifiedName("toString"), function() {
        return this.toString();
      });
      ra = function() {
        function b(a) {
          this._isLazyInitializer = !0;
          this._target = a;
          this._resolved = null;
        }
        b.create = function(a) {
          return a.asLazyInitializer ? a.asLazyInitializer : a.asLazyInitializer = new b(a);
        };
        b.prototype.resolve = function() {
          if (this._resolved) {
            return this._resolved;
          }
          if (this._target instanceof na) {
            var b = this._target;
            a.ensureScriptIsExecuted(b, "Lazy Initializer");
            return this._resolved = b.global;
          }
          if (this._target instanceof W) {
            return b = this._target, b.classObject ? this._resolved = b.classObject : this._resolved = b.abc.applicationDomain.getProperty(b.instanceInfo.name, !1, !1);
          }
          d.Debug.notImplemented(String(this._target));
        };
        return b;
      }();
      a.LazyInitializer = ra;
      a.forEachPublicProperty = function(b, a, e) {
        if (!b.asBindings) {
          for (var f in b) {
            a.call(e, f, b[f]);
          }
        } else {
          for (f in b) {
            if (d.isNumeric(f)) {
              a.call(e, f, b[f]);
            } else {
              if (!b.asBindings[f] && Q.isPublicQualifiedName(f)) {
                var h = Q.stripPublicQualifier(f);
                a.call(e, h, b[f]);
              }
            }
          }
        }
      };
      a.wrapJSObject = function(b) {
        var a = Object.create(b), e;
        for (e in b) {
          Object.defineProperty(a, Q.getPublicQualifiedName(e), function(b, a) {
            return {get:function() {
              return b[a];
            }, set:function(e) {
              b[a] = e;
            }, enumerable:!0};
          }(b, e));
        }
        return a;
      };
      a.asCreateActivation = function(b) {
        return Object.create(b.activationPrototype);
      };
      ra = function() {
        function b() {
        }
        b.updateTraits = function(a) {
          for (var e = 0;e < a.length;e++) {
            var f = a[e], h = f.name.name, f = f.name.getNamespace();
            f.isDynamic() || (b.hasNonDynamicNamespaces[h] = !0, b.wasResolved[h] && d.Debug.notImplemented("We have to the undo the optimization, " + h + " can now bind to " + f));
          }
        };
        b.loadAbc = function(e) {
          if (a.globalMultinameAnalysis.value) {
            var f = e.scripts, h = e.classes;
            e = e.methods;
            for (var c = 0;c < f.length;c++) {
              b.updateTraits(f[c].traits);
            }
            for (c = 0;c < h.length;c++) {
              b.updateTraits(h[c].traits), b.updateTraits(h[c].instanceInfo.traits);
            }
            for (c = 0;c < e.length;c++) {
              e[c].traits && b.updateTraits(e[c].traits);
            }
          }
        };
        b.resolveMultiname = function(a) {
          var e = a.name;
          if (!b.hasNonDynamicNamespaces[e]) {
            return b.wasResolved[e] = !0, new Q([ma.PUBLIC], a.name, 0);
          }
        };
        b.hasNonDynamicNamespaces = Object.create(null);
        b.wasResolved = Object.create(null);
        return b;
      }();
      a.GlobalMultinameResolver = ra;
      var Aa = function() {
        return function(b) {
          this.methodInfo = b;
        };
      }();
      a.ActivationInfo = Aa;
      a.HasNext2Info = function() {
        return function(b, a) {
          this.object = b;
          this.index = a;
        };
      }();
      a.sliceArguments = Y;
      a.canCompile = V;
      a.shouldCompile = ba;
      a.forceCompile = Z;
      a.CODE_CACHE = Object.create(null);
      a.searchCodeCache = O;
      a.createInterpretedFunction = ea;
      a.debugName = function(b) {
        return d.isFunction(b) ? b.name : b;
      };
      a.createCompiledFunction = ia;
      a.createFunction = ja;
      a.ensureFunctionIsInitialized = ga;
      a.getTraitFunction = ca;
      a.createClass = function(b, e, f) {
        var h = b.instanceInfo, c = b.abc.applicationDomain, p = Q.getName(h.name);
        k.enterTimeline("createClass", {className:p, classInfo:b});
        e = h.isInterface() ? d.AVM2.AS.createInterface(b) : d.AVM2.AS.createClass(b, e, f);
        a.traceClasses.value && (c.loadedClasses.push(e), c.traceLoadedClasses());
        if (h.isInterface()) {
          return k.leaveTimeline(), e;
        }
        c.onMessage.notify1("classCreated", e);
        b.classObject = e;
        k.enterTimeline("staticInitializer");
        ja(b.init, f, !1, !1, !0).call(e);
        k.leaveTimeline();
        a.sealConstTraits && this.sealConstantTraits(e, b.traits);
        k.leaveTimeline();
        return e;
      };
      a.sealConstantTraits = function(b, a) {
        for (var e = 0, f = a.length;e < f;e++) {
          var h = a[e];
          h.isConst() && (h = Q.getQualifiedName(h.name), function(a, e) {
            Object.defineProperty(b, a, {configurable:!1, enumerable:!1, get:function() {
              return e;
            }, set:function() {
              F("ReferenceError", k.Errors.ConstWriteError, a);
            }});
          }(h, b[h]));
        }
      };
      a.applyType = function(b, a, e) {
        a = a.classInfo.instanceInfo.name.name;
        if ("Vector" === a) {
          e = e[0];
          if (!ua(e)) {
            switch(a = e.classInfo.instanceInfo.name.name.toLowerCase(), a) {
              case "number":
                a = "double";
              case "int":
              ;
              case "uint":
              ;
              case "double":
                return b.abc.applicationDomain.getClass("packageInternal __AS3__.vec.Vector$" + a);
            }
          }
          return b.abc.applicationDomain.getClass("packageInternal __AS3__.vec.Vector$object").applyType(e);
        }
        d.Debug.notImplemented(a);
      };
      a.createName = function(b, a, e) {
        void 0 === a && (a = "*");
        return new Q(b, a, e);
      };
    })(k.Runtime || (k.Runtime = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
throwError = Shumway.AVM2.Runtime.throwError;
var CC = Shumway.AVM2.Runtime.CODE_CACHE, HasNext2Info = Shumway.AVM2.Runtime.HasNext2Info, asCreateActivation = Shumway.AVM2.Runtime.asCreateActivation, asIsInstanceOf = Shumway.AVM2.Runtime.asIsInstanceOf, asIsType = Shumway.AVM2.Runtime.asIsType, asAsType = Shumway.AVM2.Runtime.asAsType, asEquals = Shumway.AVM2.Runtime.asEquals, asTypeOf = Shumway.AVM2.Runtime.asTypeOf, asCoerceByMultiname = Shumway.AVM2.Runtime.asCoerceByMultiname, asCoerce = Shumway.AVM2.Runtime.asCoerce, asCoerceString = Shumway.AVM2.Runtime.asCoerceString, 
asCoerceInt = Shumway.AVM2.Runtime.asCoerceInt, asCoerceUint = Shumway.AVM2.Runtime.asCoerceUint, asCoerceNumber = Shumway.AVM2.Runtime.asCoerceNumber, asCoerceBoolean = Shumway.AVM2.Runtime.asCoerceBoolean, asCoerceObject = Shumway.AVM2.Runtime.asCoerceObject, asCompare = Shumway.AVM2.Runtime.asCompare, asAdd = Shumway.AVM2.Runtime.asAdd, applyType = Shumway.AVM2.Runtime.applyType, escapeXMLAttribute = Shumway.AVM2.Runtime.escapeXMLAttribute, escapeXMLElement = Shumway.AVM2.Runtime.escapeXMLElement, 
asGetSlot = Shumway.AVM2.Runtime.asGetSlot, asSetSlot = Shumway.AVM2.Runtime.asSetSlot, asHasNext2 = Shumway.AVM2.Runtime.asHasNext2, getDescendants = Shumway.AVM2.Runtime.getDescendants, checkFilter = Shumway.AVM2.Runtime.checkFilter, sliceArguments = Shumway.AVM2.Runtime.sliceArguments, createClass = Shumway.AVM2.Runtime.createClass, createFunction = Shumway.AVM2.Runtime.createFunction, createName = Shumway.AVM2.Runtime.createName;
(function(d) {
  (function(k) {
    (function(a) {
      var n = d.AVM2.ABC.Multiname, w = d.ObjectUtilities.boxValue, v = function() {
        function a(d, c, g) {
          void 0 === g && (g = !1);
          this.parent = d;
          this.object = w(c);
          this.global = d ? d.global : this;
          this.isWith = g;
          this.cache = Object.create(null);
        }
        a.prototype.findDepth = function(a) {
          for (var c = this, g = 0;c;) {
            if (c.object === a) {
              return g;
            }
            g++;
            c = c.parent;
          }
          return -1;
        };
        a.prototype.getScopeObjects = function() {
          for (var a = [], c = this;c;) {
            a.unshift(c.object), c = c.parent;
          }
          return a;
        };
        a.prototype.findScopeProperty = function(a, c, g, q, t, m) {
          k.countTimeline("findScopeProperty");
          var h, f;
          f = a ? 1 < a.length ? a.runtimeId + "$" + c : a[0].qualifiedName + "$" + c : c;
          if (!m && (h = this.cache[f])) {
            return h;
          }
          if (this.object.asHasPropertyInternal(a, c, g)) {
            return this.isWith ? this.object : this.cache[f] = this.object;
          }
          if (this.parent) {
            return this.cache[f] = this.parent.findScopeProperty(a, c, g, q, t, m);
          }
          if (m) {
            return null;
          }
          if (h = q.abc.applicationDomain.findDomainProperty(new n(a, c, g), t, !0)) {
            return h;
          }
          t && d.Debug.unexpected("Cannot find property " + c);
          return this.global.object;
        };
        return a;
      }();
      a.Scope = v;
      a.bindFreeMethodScope = function(a, d) {
        var c = a.freeMethod;
        if (a.lastBoundMethod && a.lastBoundMethod.scope === d) {
          return a.lastBoundMethod.boundMethod;
        }
        var g, q = d.global.object;
        if (!a.hasOptional() && !a.needsArguments() && !a.needsRest()) {
          switch(a.parameters.length) {
            case 0:
              g = function() {
                return c.call(this === jsGlobal ? q : this, d);
              };
              break;
            case 1:
              g = function(a) {
                return c.call(this === jsGlobal ? q : this, d, a);
              };
              break;
            case 2:
              g = function(a, g) {
                return c.call(this === jsGlobal ? q : this, d, a, g);
              };
              break;
            case 3:
              g = function(a, g, h) {
                return c.call(this === jsGlobal ? q : this, d, a, g, h);
              };
          }
        }
        g || (g = function() {
          for (var a = [d], g = 0;g < arguments.length;g++) {
            a.push(arguments[g]);
          }
          return c.apply(this === jsGlobal ? d.global.object : this, a);
        });
        g.methodInfo = a;
        g.instanceConstructor = g;
        a.lastBoundMethod = {scope:d, boundMethod:g};
        return g;
      };
    })(k.Runtime || (k.Runtime = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
var Scope = Shumway.AVM2.Runtime.Scope;
(function(d) {
  (function(k) {
    (function(a) {
      var n = d.AVM2.ABC.Multiname, k = d.ObjectUtilities.createMap, v = d.ObjectUtilities.cloneObject, u = d.ObjectUtilities.copyProperties, l = d.ObjectUtilities.defineNonEnumerableProperty, c = d.ObjectUtilities.defineNonEnumerableGetter, g = d.FunctionUtilities.makeForwardingGetter, q = function() {
        function b(a) {
          this.trait = a;
        }
        b.getKey = function(a, e) {
          var f = a;
          e.isGetter() ? f = b.GET_PREFIX + a : e.isSetter() && (f = b.SET_PREFIX + a);
          return f;
        };
        b.prototype.toString = function() {
          return String(this.trait);
        };
        b.SET_PREFIX = "set ";
        b.GET_PREFIX = "get ";
        b.KEY_PREFIX_LENGTH = 4;
        return b;
      }();
      a.Binding = q;
      var t = function() {
        return function(b, a, e, f) {
          this.name = b;
          this.isConst = a;
          this.type = e;
          this.trait = f;
        };
      }();
      a.SlotInfo = t;
      var m = function() {
        return function() {
          this.byID = k();
          this.byQN = k();
        };
      }();
      a.SlotInfoMap = m;
      var h = function() {
        function f() {
          this.map = k();
          this.slots = [];
          this.nextSlotId = 1;
        }
        f.prototype.assignNextSlot = function(b) {
          b.slotId ? this.nextSlotId = b.slotId + 1 : b.slotId = this.nextSlotId++;
          this.slots[b.slotId] = b;
        };
        f.prototype.trace = function(b) {
          b.enter("Bindings");
          for (var a in this.map) {
            var e = this.map[a];
            b.writeLn(e.trait.kindName() + ": " + a + " -> " + e);
          }
          b.leaveAndEnter("Slots");
          b.writeArray(this.slots);
          b.outdent();
        };
        f.prototype.applyTo = function(f, h, r) {
          void 0 === r && (r = !1);
          r || (l(h, a.VM_SLOTS, new m), l(h, a.VM_BINDINGS, Object.create(null)), l(h, a.VM_OPEN_METHODS, k()), l(h, "bindings", this), l(h, "resolutionMap", []));
          e && e.greenLn("Applying Traits" + (r ? " (Append)" : ""));
          for (var d in this.map) {
            var v = this.map[d];
            r = v.trait;
            var u = n.getQualifiedName(r.name);
            if (r.isSlot() || r.isConst() || r.isClass()) {
              v = void 0;
              if (r.isSlot() || r.isConst()) {
                if (r.hasDefaultValue) {
                  v = r.value;
                } else {
                  if (r.typeName) {
                    var E = f.findClassInfo(r.typeName);
                    E && (v = E.defaultValue);
                  }
                }
              }
              d !== u ? (e && e.yellowLn("Binding Trait: " + d + " -> " + u), c(h, d, g(u))) : (e && e.greenLn("Applying Trait " + r.kindName() + ": " + r), l(h, u, v), v = new t(u, r.isConst(), r.typeName ? f.getProperty(r.typeName, !1, !1) : null, r), h.asSlots.byID[r.slotId] = v, h.asSlots.byQN[u] = v);
            } else {
              if (r.isMethod() || r.isGetter() || r.isSetter()) {
                if (r.isGetter() || r.isSetter()) {
                  d = d.substring(q.KEY_PREFIX_LENGTH);
                }
                d !== u ? e && e.yellowLn("Binding Trait: " + d + " -> " + u) : e && e.greenLn("Applying Trait " + r.kindName() + ": " + r);
                a.applyMethodTrait(d, h, v, !(this instanceof b));
              }
            }
            h.asBindings[d] = !0;
          }
        };
        return f;
      }();
      a.Bindings = h;
      var f = function(b) {
        function a(e) {
          b.call(this);
          this.methodInfo = e;
          e = e.traits;
          for (var f = 0;f < e.length;f++) {
            var h = e[f], c = n.getQualifiedName(h.name);
            this.map[c] = new q(h);
            this.assignNextSlot(h);
          }
        }
        __extends(a, b);
        return a;
      }(h);
      a.ActivationBindings = f;
      f = function(b) {
        function a(e, f) {
          b.call(this);
          var h = n.getQualifiedName(f.name);
          this.map[h] = new q(f);
          this.assignNextSlot(f);
        }
        __extends(a, b);
        return a;
      }(h);
      a.CatchBindings = f;
      var b = function(b) {
        function a(e, f) {
          b.call(this);
          this.scope = f;
          this.scriptInfo = e;
          for (var h = e.traits, c = 0;c < h.length;c++) {
            var p = h[c], g = n.getQualifiedName(p.name), g = q.getKey(g, p), g = this.map[g] = new q(p);
            (p.isSlot() || p.isConst() || p.isClass()) && this.assignNextSlot(p);
            p.isClass() && p.metadata && p.metadata.native && (p.classInfo.native = p.metadata.native);
            if (p.isMethod() || p.isGetter() || p.isSetter()) {
              g.scope = this.scope;
            }
          }
        }
        __extends(a, b);
        return a;
      }(h);
      a.ScriptBindings = b;
      f = function(b) {
        function a(e, f, h) {
          b.call(this);
          this.scope = f;
          this.natives = h;
          this.classInfo = e;
          e = e.traits;
          for (f = 0;f < e.length;f++) {
            h = e[f];
            var c = n.getQualifiedName(h.name), c = q.getKey(c, h), c = this.map[c] = new q(h);
            (h.isSlot() || h.isConst()) && this.assignNextSlot(h);
            if (h.isMethod() || h.isGetter() || h.isSetter()) {
              c.scope = this.scope, c.natives = this.natives;
            }
          }
        }
        __extends(a, b);
        return a;
      }(h);
      a.ClassBindings = f;
      h = function(b) {
        function a(e, f, h, c) {
          b.call(this);
          this.scope = h;
          this.natives = c;
          this.parent = e;
          this.instanceInfo = f;
          this.implementedInterfaces = e ? v(e.implementedInterfaces) : Object.create(null);
          e && (this.slots = e.slots.slice(), this.nextSlotId = e.nextSlotId);
          this.extend(e);
        }
        __extends(a, b);
        a.prototype.extend = function(b) {
          var a = this.instanceInfo, e, f = this.map, h, c, p, r;
          if (b) {
            for (c in b.map) {
              h = b.map[c], p = h.trait, f[c] = h, p.isProtected() && (r = n.getQualifiedName(new n([a.protectedNs], p.name.getName(), 0)), r = q.getKey(r, p), f[r] = h);
            }
          }
          var g = a.traits;
          for (b = 0;b < g.length;b++) {
            p = g[b];
            h = n.getQualifiedName(p.name);
            c = q.getKey(h, p);
            h = new q(p);
            e = f;
            r = h;
            var m = e[c];
            e[c] = r;
            if (p.isProtected()) {
              for (e = this.parent;e && e.instanceInfo.protectedNs;) {
                r = n.getQualifiedName(new n([e.instanceInfo.protectedNs], p.name.getName(), 0)), r = q.getKey(r, p), r in f && (f[r] = h), e = e.parent;
              }
            }
            (p.isSlot() || p.isConst()) && this.assignNextSlot(p);
            if (p.isMethod() || p.isGetter() || p.isSetter()) {
              h.scope = this.scope, h.natives = this.natives;
            }
          }
          p = a.abc.applicationDomain;
          h = a.interfaces;
          for (b = 0;b < h.length;b++) {
            g = p.getProperty(h[b], !0, !0), u(this.implementedInterfaces, g.interfaceBindings.implementedInterfaces), this.implementedInterfaces[n.getQualifiedName(g.classInfo.instanceInfo.name)] = g;
          }
          for (var t in this.implementedInterfaces) {
            g = this.implementedInterfaces[t];
            e = g.interfaceBindings;
            for (var d in e.map) {
              b = e.map[d], a.isInterface() ? f[d] = b : (h = n.getPublicQualifiedName(b.trait.name.getName()), c = q.getKey(h, b.trait), f[d] = f[c]);
            }
          }
        };
        a.prototype.toString = function() {
          return this.instanceInfo.toString();
        };
        return a;
      }(h);
      a.InstanceBindings = h;
      var e = null;
    })(k.Runtime || (k.Runtime = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
var Binding = Shumway.AVM2.Runtime.Binding, Bindings = Shumway.AVM2.Runtime.Bindings, ActivationBindings = Shumway.AVM2.Runtime.ActivationBindings, CatchBindings = Shumway.AVM2.Runtime.CatchBindings, ScriptBindings = Shumway.AVM2.Runtime.ScriptBindings, ClassBindings = Shumway.AVM2.Runtime.ClassBindings, InstanceBindings = Shumway.AVM2.Runtime.InstanceBindings;
(function(d) {
  (function(d) {
    d.XRegExp = function() {
      function a(b, a, e) {
        var f;
        if (e) {
          if (b.__proto__) {
            b.__proto__ = h.prototype;
          } else {
            for (f in h.prototype) {
              b[f] = h.prototype[f];
            }
          }
        }
        b.xregexp = {captureNames:a};
        return b;
      }
      function d(a) {
        return b.replace.call(a, /([\s\S])(?=[\s\S]*\1)/g, "");
      }
      function k(e, f) {
        if (!h.isRegExp(e)) {
          throw new TypeError("Type RegExp expected");
        }
        var c = b.exec.call(/\/([a-z]*)$/i, String(e))[1];
        f = f || {};
        f.add && (c = d(c + f.add));
        f.remove && (c = b.replace.call(c, new RegExp("[" + f.remove + "]+", "g"), ""));
        return e = a(new RegExp(e.source, c), e.xregexp && e.xregexp.captureNames ? e.xregexp.captureNames.slice(0) : null, f.addProto);
      }
      function v(b, a) {
        if (Array.prototype.indexOf) {
          return b.indexOf(a);
        }
        var e = b.length, f;
        for (f = 0;f < e;++f) {
          if (b[f] === a) {
            return f;
          }
        }
        return -1;
      }
      function u(b, a) {
        return J.call(b) === "[object " + a + "]";
      }
      function l(a, e, f) {
        return b.test.call(-1 < f.indexOf("x") ? /^(?:\s+|#.*|\(\?#[^)]*\))*(?:[?*+]|{\d+(?:,\d*)?})/ : /^(?:\(\?#[^)]*\))*(?:[?*+]|{\d+(?:,\d*)?})/, a.slice(e));
      }
      function c(a, e) {
        var f;
        if (d(e) !== e) {
          throw new SyntaxError("Invalid duplicate regex flag " + e);
        }
        a = b.replace.call(a, /^\(\?([\w$]+)\)/, function(a, f) {
          if (b.test.call(/[gy]/, f)) {
            throw new SyntaxError("Cannot use flag g or y in mode modifier " + a);
          }
          e = d(e + f);
          return "";
        });
        for (f = 0;f < e.length;++f) {
          if (!E[e.charAt(f)]) {
            throw new SyntaxError("Unknown regex flag " + e.charAt(f));
          }
        }
        return {pattern:a, flags:e};
      }
      function g(b) {
        b = b || {};
        u(b, "String") && (b = h.forEach(b, /[^\s,]+/, function(b) {
          this[b] = !0;
        }, {}));
        return b;
      }
      function q(b) {
        if (!/^[\w$]$/.test(b)) {
          throw Error("Flag must be a single character A-Za-z0-9_$");
        }
        E[b] = !0;
      }
      function t(a) {
        RegExp.prototype.exec = (a ? e : b).exec;
        RegExp.prototype.test = (a ? e : b).test;
        String.prototype.match = (a ? e : b).match;
        String.prototype.replace = (a ? e : b).replace;
        String.prototype.split = (a ? e : b).split;
        f.natives = a;
      }
      function m(b) {
        if (null == b) {
          throw new TypeError("Cannot convert null or undefined to object");
        }
        return b;
      }
      var h, f = {astral:!1, natives:!1}, b = {exec:RegExp.prototype.exec, test:RegExp.prototype.test, match:String.prototype.match, replace:String.prototype.replace, split:String.prototype.split}, e = {}, r = {}, p = {}, C = [], I = {"default":/\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\d*|x[\dA-Fa-f]{2}|u[\dA-Fa-f]{4}|c[A-Za-z]|[\s\S])|\(\?[:=!]|[?*+]\?|{\d+(?:,\d*)?}\??|[\s\S]/, "class":/\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\dA-Fa-f]{2}|u[\dA-Fa-f]{4}|c[A-Za-z]|[\s\S])|[\s\S]/}, B = /\$(?:{([\w$]+)}|([\d$&`']))/g, 
      D = void 0 === b.exec.call(/()??/, "")[1], M = void 0 !== RegExp.prototype.sticky, E = {g:!0, i:!0, m:!0, y:M}, J = {}.toString, P;
      h = function(e, f) {
        var r = {hasNamedCapture:!1, captureNames:[]}, g = "default", m = "", q = 0, t, d;
        if (h.isRegExp(e)) {
          if (void 0 !== f) {
            throw new TypeError("Cannot supply flags when copying a RegExp");
          }
          return k(e, {addProto:!0});
        }
        e = void 0 === e ? "" : String(e);
        f = void 0 === f ? "" : String(f);
        d = e + "***" + f;
        if (!p[d]) {
          t = c(e, f);
          e = t.pattern;
          for (f = t.flags;q < e.length;) {
            do {
              t = e;
              for (var l = f, n = q, B = g, v = r, u = C.length, D = null, M = void 0, E = void 0;u--;) {
                if (E = C[u], (E.scope === B || "all" === E.scope) && (!E.flag || -1 < l.indexOf(E.flag)) && (M = h.exec(t, E.regex, n, "sticky"))) {
                  D = {matchLength:M[0].length, output:E.handler.call(v, M, B, l), reparse:E.reparse};
                  break;
                }
              }
              (t = D) && t.reparse && (e = e.slice(0, q) + t.output + e.slice(q + t.matchLength));
            } while (t && t.reparse);
            t ? (m += t.output, q += t.matchLength || 1) : (t = h.exec(e, I[g], q, "sticky")[0], m += t, q += t.length, "[" === t && "default" === g ? g = "class" : "]" === t && "class" === g && (g = "default"));
          }
          p[d] = {pattern:b.replace.call(m, /\(\?:\)(?=\(\?:\))|^\(\?:\)|\(\?:\)$/g, ""), flags:b.replace.call(f, /[^gimy]+/g, ""), captures:r.hasNamedCapture ? r.captureNames : null};
        }
        d = p[d];
        return a(new RegExp(d.pattern, d.flags), d.captures, !0);
      };
      h.prototype = RegExp();
      h.version = "3.0.0-pre";
      h.addToken = function(a, e, f) {
        f = f || {};
        var c = f.optionalFlags, p;
        f.flag && q(f.flag);
        if (c) {
          for (c = b.split.call(c, ""), p = 0;p < c.length;++p) {
            q(c[p]);
          }
        }
        C.push({regex:k(a, {add:"g" + (M ? "y" : "")}), handler:e, scope:f.scope || "default", flag:f.flag, reparse:f.reparse});
        h.cache.flush("patterns");
      };
      h.cache = function(b, a) {
        var e = b + "***" + (a || "");
        return r[e] || (r[e] = h(b, a));
      };
      h.cache.flush = function(b) {
        "patterns" === b ? p = {} : r = {};
      };
      h.escape = function(a) {
        return b.replace.call(m(a), /[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
      };
      h.exec = function(b, a, f, h) {
        var c = "g";
        M && (h || a.sticky && !1 !== h) && (c += "y");
        a.xregexp = a.xregexp || {captureNames:null};
        c = a.xregexp[c] || (a.xregexp[c] = k(a, {add:c, remove:!1 === h ? "y" : ""}));
        c.lastIndex = f = f || 0;
        b = e.exec.call(c, b);
        h && b && b.index !== f && (b = null);
        a.global && (a.lastIndex = b ? c.lastIndex : 0);
        return b;
      };
      h.forEach = function(b, a, e, f) {
        for (var c = 0, p = -1;c = h.exec(b, a, c);) {
          e.call(f, c, ++p, b, a), c = c.index + (c[0].length || 1);
        }
        return f;
      };
      h.globalize = function(b) {
        return k(b, {add:"g", addProto:!0});
      };
      h.install = function() {
        var b = {natives:!0}, b = g(b);
        !f.astral && b.astral && (h.cache.flush("patterns"), f.astral = !0);
        !f.natives && b.natives && t(!0);
      };
      h.isInstalled = function(b) {
        return !!f[b];
      };
      h.isRegExp = function(b) {
        return "[object RegExp]" === J.call(b);
      };
      h.match = function(a, e, f) {
        var h = e.global && "one" !== f || "all" === f, c = (h ? "g" : "") + (e.sticky ? "y" : "");
        e.xregexp = e.xregexp || {captureNames:null};
        c = e.xregexp[c || "noGY"] || (e.xregexp[c || "noGY"] = k(e, {add:c, remove:"one" === f ? "g" : ""}));
        a = b.match.call(m(a), c);
        e.global && (e.lastIndex = "one" === f && a ? a.index + a[0].length : 0);
        return h ? a || [] : a && a[0];
      };
      h.matchChain = function(b, a) {
        return function A(b, e) {
          function f(b) {
            if (c.backref) {
              if (!(b.hasOwnProperty(c.backref) || +c.backref < b.length)) {
                throw new ReferenceError("Backreference to undefined group: " + c.backref);
              }
              p.push(b[c.backref] || "");
            } else {
              p.push(b[0]);
            }
          }
          var c = a[e].regex ? a[e] : {regex:a[e]}, p = [], r;
          for (r = 0;r < b.length;++r) {
            h.forEach(b[r], c.regex, f);
          }
          return e !== a.length - 1 && p.length ? A(p, e + 1) : p;
        }([b], 0);
      };
      h.replace = function(b, a, f, c) {
        var p = h.isRegExp(a), r = a.global && "one" !== c || "all" === c, g = (r ? "g" : "") + (a.sticky ? "y" : ""), q = a;
        p ? (a.xregexp = a.xregexp || {captureNames:null}, q = a.xregexp[g || "noGY"] || (a.xregexp[g || "noGY"] = k(a, {add:g, remove:"one" === c ? "g" : ""}))) : r && (q = new RegExp(h.escape(String(a)), "g"));
        b = e.replace.call(m(b), q, f);
        p && a.global && (a.lastIndex = 0);
        return b;
      };
      h.replaceEach = function(b, a) {
        var e, f;
        for (e = 0;e < a.length;++e) {
          f = a[e], b = h.replace(b, f[0], f[1], f[2]);
        }
        return b;
      };
      h.split = function(b, a, f) {
        return e.split.call(m(b), a, f);
      };
      h.test = function(b, a, e, f) {
        return !!h.exec(b, a, e, f);
      };
      h.uninstall = function(b) {
        b = g(b);
        f.astral && b.astral && (h.cache.flush("patterns"), f.astral = !1);
        f.natives && b.natives && t(!1);
      };
      h.union = function(a, e) {
        function f(b, a, e) {
          var h = m[r - g];
          if (a) {
            if (++r, h) {
              return "(?<" + h + ">";
            }
          } else {
            if (e) {
              return "\\" + (+e + g);
            }
          }
          return b;
        }
        var c = /(\()(?!\?)|\\([1-9]\d*)|\\[\s\S]|\[(?:[^\\\]]|\\[\s\S])*]/g, p = [], r = 0, g, m, q, t;
        if (!u(a, "Array") || !a.length) {
          throw new TypeError("Must provide a nonempty array of patterns to merge");
        }
        for (t = 0;t < a.length;++t) {
          q = a[t], h.isRegExp(q) ? (g = r, m = q.xregexp && q.xregexp.captureNames || [], p.push(b.replace.call(h(q.source).source, c, f))) : p.push(h.escape(q));
        }
        return h(p.join("|"), e);
      };
      e.exec = function(a) {
        var e = this.lastIndex, f = b.exec.apply(this, arguments), h, c;
        if (f) {
          !D && 1 < f.length && -1 < v(f, "") && (h = k(this, {remove:"g"}), b.replace.call(String(a).slice(f.index), h, function() {
            var b = arguments.length, a;
            for (a = 1;a < b - 2;++a) {
              void 0 === arguments[a] && (f[a] = void 0);
            }
          }));
          if (this.xregexp && this.xregexp.captureNames) {
            for (c = 1;c < f.length;++c) {
              (h = this.xregexp.captureNames[c - 1]) && (f[h] = f[c]);
            }
          }
          this.global && !f[0].length && this.lastIndex > f.index && (this.lastIndex = f.index);
        }
        this.global || (this.lastIndex = e);
        return f;
      };
      e.test = function(b) {
        return !!e.exec.call(this, b);
      };
      e.match = function(a) {
        var f;
        if (!h.isRegExp(a)) {
          a = new RegExp(a);
        } else {
          if (a.global) {
            return f = b.match.apply(this, arguments), a.lastIndex = 0, f;
          }
        }
        return e.exec.call(a, m(this));
      };
      e.replace = function(a, e) {
        var f = h.isRegExp(a), c, p, r;
        f ? (a.xregexp && (p = a.xregexp.captureNames), c = a.lastIndex) : a += "";
        r = u(e, "Function") ? b.replace.call(String(this), a, function() {
          var b = arguments, h;
          if (p) {
            for (b[0] = new String(b[0]), h = 0;h < p.length;++h) {
              p[h] && (b[0][p[h]] = b[h + 1]);
            }
          }
          f && a.global && (a.lastIndex = b[b.length - 2] + b[0].length);
          return e.apply(void 0, b);
        }) : b.replace.call(null == this ? this : String(this), a, function() {
          var a = arguments;
          return b.replace.call(String(e), B, function(b, e, f) {
            if (e) {
              f = +e;
              if (f <= a.length - 3) {
                return a[f] || "";
              }
              f = p ? v(p, e) : -1;
              if (0 > f) {
                throw new SyntaxError("Backreference to undefined group " + b);
              }
              return a[f + 1] || "";
            }
            if ("$" === f) {
              return "$";
            }
            if ("&" === f || 0 === +f) {
              return a[0];
            }
            if ("`" === f) {
              return a[a.length - 1].slice(0, a[a.length - 2]);
            }
            if ("'" === f) {
              return a[a.length - 1].slice(a[a.length - 2] + a[0].length);
            }
            f = +f;
            if (!isNaN(f)) {
              if (f > a.length - 3) {
                throw new SyntaxError("Backreference to undefined group " + b);
              }
              return a[f] || "";
            }
            throw new SyntaxError("Invalid token " + b);
          });
        });
        f && (a.lastIndex = a.global ? 0 : c);
        return r;
      };
      e.split = function(a, e) {
        if (!h.isRegExp(a)) {
          return b.split.apply(this, arguments);
        }
        var f = String(this), c = [], p = a.lastIndex, r = 0, g;
        e = (void 0 === e ? -1 : e) >>> 0;
        h.forEach(f, a, function(b) {
          b.index + b[0].length > r && (c.push(f.slice(r, b.index)), 1 < b.length && b.index < f.length && Array.prototype.push.apply(c, b.slice(1)), g = b[0].length, r = b.index + g);
        });
        r === f.length ? b.test.call(a, "") && !g || c.push("") : c.push(f.slice(r));
        a.lastIndex = p;
        return c.length > e ? c.slice(0, e) : c;
      };
      P = h.addToken;
      P(/\\([ABCE-RTUVXYZaeg-mopqyz]|c(?![A-Za-z])|u(?![\dA-Fa-f]{4})|x(?![\dA-Fa-f]{2}))/, function(b, a) {
        if ("B" === b[1] && "default" === a) {
          return b[0];
        }
        throw new SyntaxError("Invalid escape " + b[0]);
      }, {scope:"all"});
      P(/\[(\^?)]/, function(b) {
        return b[1] ? "[\\s\\S]" : "\\b\\B";
      });
      P(/\(\?#[^)]*\)/, function(b, a, e) {
        return l(b.input, b.index + b[0].length, e) ? "" : "(?:)";
      });
      P(/\s+|#.*/, function(b, a, e) {
        return l(b.input, b.index + b[0].length, e) ? "" : "(?:)";
      }, {flag:"x"});
      P(/\./, function() {
        return "[\\s\\S]";
      }, {flag:"s"});
      P(/\\k<([\w$]+)>/, function(b) {
        var a = isNaN(b[1]) ? v(this.captureNames, b[1]) + 1 : +b[1], e = b.index + b[0].length;
        if (!a || a > this.captureNames.length) {
          throw new SyntaxError("Backreference to undefined group " + b[0]);
        }
        return "\\" + a + (e === b.input.length || isNaN(b.input.charAt(e)) ? "" : "(?:)");
      });
      P(/\\(\d+)/, function(b, a) {
        if (!("default" === a && /^[1-9]/.test(b[1]) && +b[1] <= this.captureNames.length) && "0" !== b[1]) {
          throw new SyntaxError("Cannot use octal escape or backreference to undefined group " + b[0]);
        }
        return b[0];
      }, {scope:"all"});
      P(/\(\?P?<([\w$]+)>/, function(b) {
        if (!isNaN(b[1])) {
          throw new SyntaxError("Cannot use integer as capture name " + b[0]);
        }
        if ("length" === b[1] || "__proto__" === b[1]) {
          throw new SyntaxError("Cannot use reserved word as capture name " + b[0]);
        }
        if (-1 < v(this.captureNames, b[1])) {
          throw new SyntaxError("Cannot use same name for multiple groups " + b[0]);
        }
        this.captureNames.push(b[1]);
        this.hasNamedCapture = !0;
        return "(";
      });
      P(/\((?!\?)/, function(b, a, e) {
        if (-1 < e.indexOf("n")) {
          return "(?:";
        }
        this.captureNames.push(null);
        return "(";
      }, {optionalFlags:"n"});
      return h;
    }();
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
Shumway.AVM2.XRegExp.install();
(function(d) {
  (function(k) {
    (function(a) {
      function n(a, e, f) {
        var h = a[e];
        if (Array.isArray(h)) {
          for (var c = 0, p = h.length;c < p;c++) {
            var r = n(h, b(c), f);
            void 0 === r ? delete h[c] : h[c] = r;
          }
        } else {
          if (null !== h && "boolean" !== typeof h && "number" !== typeof h && "string" !== typeof h) {
            for (c in h) {
              if (!h.hasOwnProperty(c) || !v.isPublicQualifiedName(c)) {
                break;
              }
              r = n(h, c, f);
              void 0 === r ? delete h[c] : h[c] = r;
            }
          }
        }
        return f.call(a, e, h);
      }
      function w(b) {
        switch(b) {
          case "prototype":
            return "native_prototype";
          case "hasOwnProperty":
            return "native_hasOwnProperty";
          case "isPrototypeOf":
            return "native_isPrototypeOf";
          case "propertyIsEnumerable":
            return "native_propertyIsEnumerable";
          default:
            return b;
        }
      }
      var v = d.AVM2.ABC.Multiname, u = d.AVM2.Runtime.Scope, l = d.ObjectUtilities.hasOwnProperty, c = d.ObjectUtilities.defineReadOnlyProperty, g = d.ObjectUtilities.defineNonEnumerableProperty, q = d.isNumber, t = d.isNullOrUndefined, m = d.ObjectUtilities.isPrototypeWriteable, h = d.ObjectUtilities.getOwnPropertyDescriptor, f = d.Debug.notImplemented, b = d.AVM2.Runtime.asCoerceString, e = d.AVM2.Runtime.createFunction, r = d.AVM2.Runtime, p = d.ObjectUtilities.boxValue, C = d.AVM2.Runtime.ClassBindings, 
      I = d.AVM2.Runtime.InstanceBindings, B = d.AVM2.Runtime.asCompare, D = function() {
        function b() {
        }
        b.init = function() {
        };
        b.morphIntoASClass = function(b) {
          this.classInfo = b;
          this.__proto__ = E.prototype;
        };
        b.create = function(b, a, e) {
          b.baseClass = a;
          E.create(b, a, this.instanceConstructor);
        };
        b.initializeFrom = function(b) {
          return J.initializeFrom.call(this, b);
        };
        b.asCall = function(b) {
          for (var a = [], e = 1;e < arguments.length;e++) {
            a[e - 1] = arguments[e];
          }
          return this.callableConstructor.apply(b, a);
        };
        b.asApply = function(b, a) {
          return this.callableConstructor.apply(b, a);
        };
        b.verify = function() {
          J.verify.call(this);
        };
        b.trace = function(b) {
          J.trace.call(this, b);
        };
        b.getQualifiedClassName = function() {
          return J.getQualifiedClassName.call(this);
        };
        b._setPropertyIsEnumerable = function(b, a, e) {
          void 0 === e && (e = !0);
          a = v.getPublicQualifiedName(a);
          var f = h(b, a);
          f.enumerable = !!e;
          Object.defineProperty(b, a, f);
        };
        b._init = function() {
          c(b, "$Bglength", 1);
          c(Object, "$Bglength", 1);
          var a = this.dynamicPrototype;
          g(a, "$BghasOwnProperty", b.prototype.native_hasOwnProperty);
          g(a, "$BgpropertyIsEnumerable", b.prototype.native_propertyIsEnumerable);
          g(a, "$BgsetPropertyIsEnumerable", b.prototype.setPropertyIsEnumerable);
          g(a, "$BgisPrototypeOf", b.prototype.native_isPrototypeOf);
          g(a, "$BgtoString", r.asToString);
          g(a, "toString", b.prototype.toString);
          g(a, "$BgvalueOf", Object.prototype.valueOf);
          g(a, "valueOf", b.prototype.valueOf);
        };
        b.prototype.toString = function() {
          return this.$BgtoString();
        };
        b.prototype.valueOf = function() {
          return this.$BgvalueOf();
        };
        b.prototype.native_isPrototypeOf = function(b) {
          f("isPrototypeOf");
          return !1;
        };
        b.prototype.native_hasOwnProperty = function(b) {
          return this.asHasOwnProperty(null, b, 0);
        };
        b.prototype.native_propertyIsEnumerable = function(b) {
          return this.asPropertyIsEnumerable(null, b, 0);
        };
        b.prototype.setPropertyIsEnumerable = function(a, e) {
          b._setPropertyIsEnumerable(this, a, e);
        };
        b.baseClass = null;
        b.instanceConstructor = Object;
        b.instanceConstructorNoInitialize = null;
        b.initializer = null;
        b.initializers = null;
        b.classInitializer = null;
        b.callableConstructor = b.instanceConstructor;
        b.defaultValue = null;
        b.call = Function.prototype.call;
        b.apply = Function.prototype.apply;
        b.coerce = r.asCoerceObject;
        b.defineProperty = Object.defineProperty;
        return b;
      }();
      a.ASObject = D;
      var M = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        a.baseClass = null;
        a.classInfo = null;
        a.instanceConstructor = null;
        a.callableConstructor = null;
        a.classBindings = null;
        a.instanceBindings = null;
        a.staticNatives = null;
        a.instanceNatives = null;
        a.traitsPrototype = null;
        a.dynamicPrototype = null;
        a.defaultValue = null;
        return a;
      }(D);
      a.ASNative = M;
      var E = function(b) {
        function a(b) {
          this.classInfo = b;
          this.defaultValue = this.instanceNatives = this.staticNatives = null;
        }
        __extends(a, b);
        a.configureBuiltinPrototype = function(b, a) {
          b.dynamicPrototype = b.traitsPrototype = b.instanceConstructor.prototype;
        };
        a.configurePrototype = function(b, a) {
          b.dynamicPrototype = Object.create(a.dynamicPrototype);
          b.traitsPrototype = Object.create(b.dynamicPrototype);
          for (var e = b.traitsPrototype, f = [];b;) {
            f.push(b), b = b.baseClass;
          }
          for (var h = 0;h < f.length;h++) {
            var c = [f[h].typeScriptPrototype];
            f[h].instanceNatives && d.ArrayUtilities.pushMany(c, f[h].instanceNatives);
            for (var p = 0;p < c.length;p++) {
              var r = c[p], g;
              for (g in r) {
                if (!(0 < h && "toString" === g) && l(r, g) && !l(e, g)) {
                  var m = Object.getOwnPropertyDescriptor(r, g);
                  try {
                    Object.defineProperty(e, g, m);
                  } catch (q) {
                  }
                }
              }
            }
          }
        };
        a.create = function(b, e, f) {
          b.typeScriptPrototype = b.prototype;
          b.instanceConstructor && !m(b.instanceConstructor) ? a.configureBuiltinPrototype(b, e) : a.configurePrototype(b, e);
          b.instanceConstructor || (b.instanceConstructor = f, b !== f && (b.instanceConstructor.__proto__ = b));
          b.callableConstructor || (b.callableConstructor = b.coerce.bind(b));
          b.instanceConstructorNoInitialize = b.instanceConstructor;
          b.instanceConstructor.prototype = b.traitsPrototype;
          g(b.instanceConstructor.prototype, "class", b);
          g(b.dynamicPrototype, v.getPublicQualifiedName("constructor"), b);
          b.protocol && d.ObjectUtilities.copyOwnPropertyDescriptors(b.traitsPrototype, b.protocol);
        };
        a.prototype.initializeFrom = function(b) {
          var e = Object.create(this.traitsPrototype);
          a.runInitializers(e, b);
          return e;
        };
        a.runInitializers = function(b, a) {
          a = a || b.class.defaultInitializerArgument;
          var e = b.class.initializers;
          if (e) {
            for (var f = 0;f < e.length;f++) {
              e[f].call(b, a);
            }
          }
        };
        a.configureInitializers = function(b) {
          b.baseClass && b.baseClass.initializers && (b.initializers = b.baseClass.initializers.slice(0));
          b.initializer && (b.initializers || (b.initializers = []), b.initializers.push(b.initializer));
          b.initializers && (b.instanceConstructor = function() {
            a.runInitializers(this, void 0);
            return b.instanceConstructorNoInitialize.apply(this, arguments);
          }, b.instanceConstructor.prototype = b.traitsPrototype, g(b.instanceConstructor.prototype, "class", b), b.instanceConstructor.classInfo = b.classInfo, b.instanceConstructor.__proto__ = b);
        };
        a.runClassInitializer = function(b) {
          b.classInitializer && b.classInitializer();
        };
        a.linkSymbols = function(b) {
          function a(b, e, h) {
            for (var c = 0;c < e.length;c++) {
              var p = e[c], r;
              a: {
                r = b;
                for (var g = p.name.name, m = 0;m < r.length;m++) {
                  var q = r[m];
                  if (0 <= q.indexOf(g)) {
                    var t = "!" === q[q.length - 1];
                    t && (q = q.slice(0, q.length - 1));
                    if (g === q) {
                      r = t;
                      break a;
                    }
                  }
                }
                r = !1;
              }
              if (r) {
                if (p.isConst()) {
                  f("Don't link against const traits.");
                  break;
                }
                r = p.name.name;
                g = v.getQualifiedName(p.name);
                p.isSlot() ? Object.defineProperty(h, r, {get:new Function("", "return this." + g + "//# sourceURL=get-" + g + ".as"), set:new Function("v", "this." + g + " = v;//# sourceURL=set-" + g + ".as")}) : p.isMethod() ? h[r] = h.asOpenMethods[g] : p.isGetter() ? Object.defineProperty(h, r, {get:new Function("", "return this." + g + "//# sourceURL=get-" + g + ".as")}) : f(p);
              }
            }
          }
          b.classSymbols && a(b.classSymbols, b.classInfo.traits, b);
          b.instanceSymbols && a(b.instanceSymbols, b.classInfo.instanceInfo.traits, b.traitsPrototype);
        };
        a.prototype.morphIntoASClass = function(b) {
        };
        Object.defineProperty(a.prototype, "native_prototype", {get:function() {
          return this.dynamicPrototype;
        }, enumerable:!0, configurable:!0});
        a.prototype.asCall = function(b, a) {
          return this.coerce(a);
        };
        a.prototype.asApply = function(b, a) {
          return this.coerce(a[0]);
        };
        a.prototype.applyType = function(b) {
          debugger;
          return null;
        };
        a.prototype.isInstanceOf = function(b) {
          return this.isInterface() ? !1 : this.isType(b);
        };
        a.prototype.isType = function(b) {
          if (d.isNullOrUndefined(b)) {
            return !1;
          }
          b = p(b);
          if (this.isInterface()) {
            if (null === b || "object" !== typeof b) {
              return !1;
            }
            var a = v.getQualifiedName(this.classInfo.instanceInfo.name);
            return void 0 !== b.class.implementedInterfaces[a];
          }
          return this.dynamicPrototype.isPrototypeOf(b);
        };
        a.prototype.isSubtypeOf = function(b) {
          for (var a = this;a;) {
            if (a.traitsPrototype === b.traitsPrototype) {
              return !0;
            }
            a = a.baseClass;
          }
          return !1;
        };
        a.prototype.coerce = function(b) {
          return b;
        };
        a.prototype.isInterface = function() {
          return this.classInfo.instanceInfo.isInterface();
        };
        a.prototype.getQualifiedClassName = function() {
          var b = this.classInfo.instanceInfo.name, a = b.namespaces[0].uri;
          return a ? a + "::" + b.name : b.name;
        };
        a.prototype.verify = function() {
          function b(a, e, f) {
            for (var h = 0;h < a.length;h++) {
              if (e(a[h], f)) {
                return !0;
              }
            }
            return !1;
          }
          if (!this.isInterface()) {
            var a = [this.classInfo.traits, this.classInfo.instanceInfo.traits], e = [this];
            this.staticNatives && d.ArrayUtilities.pushMany(e, this.staticNatives);
            var f = [this.prototype];
            this.instanceNatives && d.ArrayUtilities.pushMany(f, this.instanceNatives);
            for (var h = 0;h < a.length;h++) {
              for (var c = 0 === h, p = 0;p < a[h].length;p++) {
                var r = a[h][p], g = w(r.name.name);
                if (r.isMethodOrAccessor() && r.methodInfo.isNative()) {
                  var m = c ? e : f;
                  r.isMethod() ? b(m, d.ObjectUtilities.hasOwnProperty, g) : r.isGetter() ? b(m, d.ObjectUtilities.hasOwnGetter, g) : r.isSetter() && b(m, d.ObjectUtilities.hasOwnSetter, g);
                }
              }
            }
            d.Debug.assert(this.instanceConstructor, "Must have a constructor function.");
          }
        };
        a.labelObject = function(b) {
          if (!b) {
            return b;
          }
          l(b, "labelId") || (b.labelId = a.labelCounter++);
          return b instanceof Function ? "Function [#" + b.labelId + "]" : "Object [#" + b.labelId + "]";
        };
        a.prototype.trace = function(b) {
          if (this.isInterface()) {
            b.enter("Interface: " + this.classInfo), this.interfaceBindings.trace(b);
          } else {
            b.enter("Class: " + this.classInfo);
            b.writeLn("baseClass: " + (this.baseClass ? this.baseClass.classInfo.instanceInfo.name : null));
            this.classBindings.trace(b);
            this.instanceBindings.trace(b);
            b.enter("Interfaces");
            for (var a in this.implementedInterfaces) {
              b.writeLn(this.implementedInterfaces[a].classInfo.toString());
            }
            b.leave();
          }
          b.leave();
        };
        a.instanceConstructor = a;
        a.staticNatives = null;
        a.instanceNatives = null;
        a.classInitializer = function() {
          g(this, "$Bglength", 1);
        };
        a.labelCounter = 0;
        return a;
      }(D);
      a.ASClass = E;
      var J = E.prototype;
      J.call = Function.prototype.call;
      J.apply = Function.prototype.apply;
      var P = function(b) {
        function a() {
        }
        __extends(a, b);
        Object.defineProperty(a.prototype, "native_prototype", {get:function() {
          return this.prototype;
        }, set:function(b) {
          this.prototype = b;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "native_length", {get:function() {
          return this.hasOwnProperty(r.VM_LENGTH) ? this.asLength : this.length;
        }, enumerable:!0, configurable:!0});
        a.prototype.toString = function() {
          return "function Function() {}";
        };
        a.baseClass = null;
        a.instanceConstructor = Function;
        a.staticNatives = [Function];
        a.instanceNatives = [Function.prototype];
        a.classInitializer = function() {
          g(this, "$Bglength", 1);
          var b = a.dynamicPrototype, e = a.prototype;
          g(b, "$BgtoString", e.toString);
          g(b, "toString", e.toString);
          g(b, "$BgtoLocaleString", e.toString);
          g(b, "$Bgcall", b.call);
          g(b, "$Bgapply", b.apply);
        };
        return a;
      }(D);
      a.ASFunction = P;
      var y = function(b) {
        function a(b) {
        }
        __extends(a, b);
        a.instanceConstructor = Boolean;
        a.callableConstructor = a.instanceConstructor;
        a.staticNatives = null;
        a.instanceNatives = null;
        a.coerce = r.asCoerceBoolean;
        a.classInitializer = function() {
          g(this, "$Bglength", 1);
          var b = Boolean.prototype;
          g(b, "$BgtoString", b.toString);
          g(b, "$BgvalueOf", b.valueOf);
        };
        return a;
      }(D);
      a.ASBoolean = y;
      y.prototype.toString = Boolean.prototype.toString;
      y.prototype.valueOf = Boolean.prototype.valueOf;
      var K = function(b) {
        function a(b, e) {
          var f = d.FunctionUtilities.bindSafely(e, b);
          g(this, "call", f.call.bind(f));
          g(this, "apply", f.apply.bind(f));
        }
        __extends(a, b);
        Object.defineProperty(a.prototype, "native_prototype", {get:function() {
          return null;
        }, set:function(b) {
          throwError("ReferenceError", k.Errors.ConstWriteError, "prototype", "MethodClosure");
        }, enumerable:!0, configurable:!0});
        a.prototype.toString = function() {
          return "function Function() {}";
        };
        a.staticNatives = null;
        a.instanceNatives = null;
        return a.instanceConstructor = a;
      }(P);
      a.ASMethodClosure = K;
      var H = function(b) {
        function a(b) {
        }
        __extends(a, b);
        a.initializeDynamicMethods = function() {
          var b = this.dynamicPrototype, a = Number.prototype;
          g(b, "toString", a.toString);
          g(b, "$BgtoString", a.toString);
          g(b, "$BgtoLocaleString", a.toString);
          g(b, "valueOf", a.valueOf);
          g(b, "$BgvalueOf", a.valueOf);
          g(b, "$BgtoExponential", a.toExponential);
          g(b, "$BgtoPrecision", a.toPrecision);
          g(b, "$BgtoFixed", a.toFixed);
        };
        a.instanceConstructor = Number;
        a.callableConstructor = a.instanceConstructor;
        a.staticNatives = [Math];
        a.instanceNatives = [Number.prototype];
        a.defaultValue = Number(0);
        a.coerce = r.asCoerceNumber;
        a.classInitializer = function() {
          g(this, "$Bglength", 1);
          g(this, "$BgNaN", Number.NaN);
          g(this, "$BgNEGATIVE_INFINITY", Number.NEGATIVE_INFINITY);
          g(this, "$BgPOSITIVE_INFINITY", Number.POSITIVE_INFINITY);
          g(this, "$BgMIN_VALUE", Number.MIN_VALUE);
          g(this, "$BgMAX_VALUE", Number.MAX_VALUE);
          g(this, "$BgE", Math.E);
          g(this, "$BgLN10", Math.LN10);
          g(this, "$BgLN2", Math.LN2);
          g(this, "$BgLOG10E", Math.LOG10E);
          g(this, "$BgLOG2E", Math.LOG2E);
          g(this, "$BgPI", Math.PI);
          g(this, "$BgSQRT1_2", Math.SQRT2);
          g(this, "$BgSQRT2", Math.SQRT2);
          a.initializeDynamicMethods.call(this);
        };
        return a;
      }(D);
      a.ASNumber = H;
      var A = function(b) {
        function a(b) {
          return Object(Number(b | 0));
        }
        __extends(a, b);
        a.asCall = function(b, a) {
          return a | 0;
        };
        a.asApply = function(b, a) {
          return a[0] | 0;
        };
        a.isInstanceOf = function(b) {
          return !1;
        };
        a.isType = function(b) {
          return q(b) || b instanceof Number ? (b = +b, (b | 0) === b) : !1;
        };
        a.instanceConstructor = a;
        a.callableConstructor = a.instanceConstructor;
        a.staticNatives = [Math];
        a.instanceNatives = [Number.prototype];
        a.defaultValue = 0;
        a.coerce = r.asCoerceInt;
        a.classInitializer = function() {
          g(this, "$Bglength", 1);
          g(this, "$BgMIN_VALUE", -2147483648);
          g(this, "$BgMAX_VALUE", 2147483647);
          H.initializeDynamicMethods.call(this);
        };
        return a;
      }(D);
      a.ASInt = A;
      var z = function(b) {
        function a(b) {
          return Object(Number(b >>> 0));
        }
        __extends(a, b);
        a.asCall = function(b, a) {
          return a >>> 0;
        };
        a.asApply = function(b, a) {
          return a[0] >>> 0;
        };
        a.isInstanceOf = function(b) {
          return !1;
        };
        a.isType = function(b) {
          return q(b) || b instanceof Number ? (b = +b, b >>> 0 === b) : !1;
        };
        a.instanceConstructor = a;
        a.callableConstructor = a.instanceConstructor;
        a.staticNatives = [Math];
        a.instanceNatives = [Number.prototype];
        a.defaultValue = 0;
        a.coerce = r.asCoerceUint;
        a.classInitializer = function() {
          g(this, "$Bglength", 1);
          g(this, "$BgMIN_VALUE", 0);
          g(this, "$BgMAX_VALUE", 4294967295);
          H.initializeDynamicMethods.call(this);
        };
        return a;
      }(D);
      a.ASUint = z;
      var G = function(a) {
        function e(b) {
        }
        __extends(e, a);
        Object.defineProperty(e.prototype, "native_length", {get:function() {
          return this.length;
        }, enumerable:!0, configurable:!0});
        e.prototype.match = function(b) {
          if (void 0 === b || null === b) {
            return null;
          }
          if (b instanceof k.XRegExp && b.global) {
            for (var a = [], e;e = b.exec(this);) {
              a.push(e[0]);
            }
            return a;
          }
          b instanceof k.XRegExp || "string" === typeof b || (b = String(b));
          return this.match(b);
        };
        e.prototype.search = function(a) {
          return a instanceof k.XRegExp ? this.search(a) : this.indexOf(b(a));
        };
        e.prototype.toUpperCase = function() {
          var b = String.prototype.toUpperCase.apply(this);
          return b = b.replace(/\u039C/g, String.fromCharCode(181));
        };
        e.prototype.toLocaleUpperCase = function() {
          var b = String.prototype.toLocaleUpperCase.apply(this);
          return b = b.replace(/\u039C/g, String.fromCharCode(181));
        };
        e.instanceConstructor = String;
        e.callableConstructor = e.instanceConstructor;
        e.staticNatives = [String];
        e.instanceNatives = [String.prototype];
        e.coerce = r.asCoerceString;
        e.classInitializer = function() {
          g(this, "$Bglength", 1);
          g(String, "$Bglength", 1);
          g(String, "$BgfromCharCode", String.fromCharCode);
          var b = String.prototype;
          g(b, "$BgindexOf", b.indexOf);
          g(b, "$BglastIndexOf", b.lastIndexOf);
          g(b, "$BgcharAt", b.charAt);
          g(b, "$BgcharCodeAt", b.charCodeAt);
          g(b, "$Bgconcat", b.concat);
          g(b, "$BglocaleCompare", b.localeCompare);
          g(b, "$Bgmatch", b.match);
          g(b, "$Bgreplace", b.replace);
          g(b, "$Bgsearch", b.search);
          g(b, "$Bgslice", b.slice);
          g(b, "$Bgsplit", b.split);
          g(b, "$Bgsubstring", b.substring);
          g(b, "$Bgsubstr", b.substr);
          g(b, "$BgtoLowerCase", b.toLowerCase);
          g(b, "$BgtoLocaleLowerCase", b.toLowerCase);
          g(b, "$BgtoUpperCase", b.toUpperCase);
          g(b, "$BgtoLocaleUpperCase", b.toUpperCase);
          g(b, "$BgtoString", b.toString);
          g(b, "$BgvalueOf", b.valueOf);
        };
        return e;
      }(D);
      a.ASString = G;
      a.arraySort = function(b, a) {
        if (0 === a.length) {
          return b.sort();
        }
        var e, f = 0;
        a[0] instanceof Function ? e = a[0] : q(a[0]) && (f = a[0]);
        q(a[1]) && (f = a[1]);
        b.sort(function(b, a) {
          return B(b, a, f, e);
        });
        return b;
      };
      var L = function(b) {
        function a(b) {
        }
        __extends(a, b);
        a.prototype.toLocaleString = function() {
          for (var b = a.coerce(this), e = "", f = 0, h = b.length;f < h;f++) {
            var c = b[f];
            null !== c && void 0 !== c && (e += c.toLocaleString());
            f + 1 < h && (e += ",");
          }
          return e;
        };
        a.prototype.splice = function() {
          return 0 === arguments.length ? void 0 : this.splice.apply(this, arguments);
        };
        a.prototype.every = function(b, a) {
          for (var e = 0;e < this.length && !0 === b.call(a, this[e], e, this);e++) {
          }
          return !1;
        };
        a.prototype.filter = function(b, a) {
          for (var e = [], f = 0;f < this.length;f++) {
            !0 === b.call(a, this[f], f, this) && e.push(this[f]);
          }
          return e;
        };
        a.prototype.sort = function() {
          if (0 === arguments.length) {
            return this.sort();
          }
          var b, a = 0;
          arguments[0] instanceof Function ? b = arguments[0] : q(arguments[0]) && (a = arguments[0]);
          q(arguments[1]) && (a = arguments[1]);
          this.sort(function(e, f) {
            return r.asCompare(e, f, a, b);
          });
          return this;
        };
        a.prototype.sortOn = function(b, e) {
          d.isString(b) && (b = [b]);
          t(e) ? e = [] : q(e) && (e = [e]);
          for (var f = b.length - 1;0 <= f;f--) {
            var h = v.getPublicQualifiedName(b[f]);
            if (a.CACHE_NUMERIC_COMPARATORS && e[f] & 16) {
              var c = "var x = +(a." + h + "), y = +(b." + h + ");", c = e[f] & 2 ? c + "return x < y ? 1 : (x > y ? -1 : 0);" : c + "return x < y ? -1 : (x > y ? 1 : 0);", p = a.numericComparatorCache[c];
              p || (p = a.numericComparatorCache[c] = new Function("a", "b", c));
              this.sort(p);
            } else {
              this.sort(function(b, a) {
                return r.asCompare(b[h], a[h], e[f] | 0);
              });
            }
          }
          return this;
        };
        Object.defineProperty(a.prototype, "native_length", {get:function() {
          return this.length;
        }, set:function(b) {
          this.length = b >>> 0;
        }, enumerable:!0, configurable:!0});
        a.instanceConstructor = Array;
        a.staticNatives = [Array];
        a.instanceNatives = [Array.prototype];
        a.classInitializer = function() {
          g(this, "$Bglength", 1);
          g(this, "$BgCASEINSENSITIVE", 1);
          g(this, "$BgDESCENDING", 2);
          g(this, "$BgUNIQUESORT", 4);
          g(this, "$BgRETURNINDEXEDARRAY", 8);
          g(this, "$BgNUMERIC", 16);
          var b = Array.prototype, e = a.prototype;
          g(b, "$Bgjoin", b.join);
          g(b, "$BgtoString", b.join);
          g(b, "$BgtoLocaleString", e.toLocaleString);
          g(b, "$Bgpop", b.pop);
          g(b, "$Bgpush", b.push);
          g(b, "$Bgreverse", b.reverse);
          g(b, "$Bgconcat", b.concat);
          g(b, "$Bgsplice", e.splice);
          g(b, "$Bgslice", b.slice);
          g(b, "$Bgshift", b.shift);
          g(b, "$Bgunshift", b.unshift);
          g(b, "$BgindexOf", b.indexOf);
          g(b, "$BglastIndexOf", b.lastIndexOf);
          g(b, "$BgforEach", b.forEach);
          g(b, "$Bgmap", b.map);
          g(b, "$Bgfilter", b.filter);
          g(b, "$Bgsome", b.some);
          g(b, "$Bgevery", e.every);
          g(b, "$Bgsort", e.sort);
          g(b, "$BgsortOn", e.sortOn);
        };
        a.CACHE_NUMERIC_COMPARATORS = !0;
        a.numericComparatorCache = Object.create(null);
        return a;
      }(D);
      a.ASArray = L;
      var F = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        a.prototype.newThisType = function() {
          return new this.class.instanceConstructor;
        };
        a.staticNatives = null;
        a.instanceNatives = null;
        a.instanceConstructor = a;
        a.callableConstructor = null;
        return a;
      }(M);
      a.ASVector = F;
      var S = function(a) {
        function e() {
          a.apply(this, arguments);
        }
        __extends(e, a);
        e.parse = function(a, e) {
          a = b(a);
          null === a && throwError("SyntaxError", k.Errors.JSONInvalidParseInput);
          var f = this.transformJSValueToAS(JSON.parse(a), !0);
          return null === e || 2 > arguments.length ? f : n({"":f}, "", e);
        };
        e.stringify = function(b, a, e) {
          void 0 === a && (a = null);
          void 0 === e && (e = null);
          null === a || a instanceof Function || Array.isArray(a) || throwError("TypeError", k.Errors.JSONInvalidReplacer);
          e = "string" === typeof e ? 10 < e.length ? e.substring(0, 10) : e : "number" === typeof e ? "          ".substring(0, Math.min(10, e | 0)) : "";
          return null === a ? this.stringifySpecializedToString(b, null, null, e) : Array.isArray(a) ? this.stringifySpecializedToString(b, this.computePropertyList(a), null, e) : this.stringifySpecializedToString(b, null, a, e);
        };
        e.computePropertyList = function(a) {
          for (var e = [], f = Object.create(null), h = 0, c = a.length;h < c;h++) {
            if (a.hasOwnProperty(h)) {
              var p = a[h], r = null;
              "string" === typeof p ? r = p : "number" === typeof p && (r = b(p));
              null === r || f[r] || (f[r] = !0, e.push(r));
            }
          }
          return e;
        };
        e.transformJSValueToAS = function(b, a) {
          if ("object" !== typeof b || t(b)) {
            return b;
          }
          for (var f = Object.keys(b), h = Array.isArray(b) ? [] : {}, c = 0;c < f.length;c++) {
            var p = b[f[c]];
            a && (p = e.transformJSValueToAS(p, !0));
            h.asSetPublicProperty(f[c], p);
          }
          return h;
        };
        e.transformASValueToJS = function(b, a) {
          if ("object" !== typeof b || t(b)) {
            return b;
          }
          for (var f = Object.keys(b), h = Array.isArray(b) ? [] : {}, c = 0;c < f.length;c++) {
            var p = f[c], r = p;
            d.isNumeric(p) || (r = v.getNameFromPublicQualifiedName(p));
            p = b[p];
            a && (p = e.transformASValueToJS(p, !0));
            h[r] = p;
          }
          return h;
        };
        e.stringifySpecializedToString = function(b, a, f, h) {
          return JSON.stringify(e.transformASValueToJS(b, !0), f, h);
        };
        e.instanceConstructor = e;
        e.staticNatives = null;
        e.instanceNatives = null;
        return e;
      }(D);
      a.ASJSON = S;
      var U = function(a) {
        function e(a, f) {
          this.message = b(a);
          this._errorID = f | 0;
          this.name = this.constructor.dynamicPrototype.$Bgname;
        }
        __extends(e, a);
        e.throwError = function(b, a) {
          for (var e = [k.getErrorInfo(a)], f = 2;f < arguments.length;f++) {
            e.push(arguments[f]);
          }
          e = k.formatErrorMessage.apply(null, e);
          throw new b(e, a);
        };
        e.prototype.toString = function() {
          return "" !== this.message ? this.name + ": " + this.message : this.name;
        };
        Object.defineProperty(e.prototype, "errorID", {get:function() {
          return this._errorID;
        }, enumerable:!0, configurable:!0});
        e.prototype.getStackTrace = function() {
          return null;
        };
        e.instanceConstructor = null;
        e.staticNatives = null;
        e.instanceNatives = null;
        e.getErrorMessage = d.AVM2.getErrorMessage;
        e.classInitializer = function() {
          g(this, "$Bglength", 1);
          g(this.dynamicPrototype, "$Bgname", "Error");
          g(this.dynamicPrototype, "$Bgmessage", "Error");
          g(this.dynamicPrototype, "$BgtoString", this.prototype.toString);
        };
        return e;
      }(M);
      a.ASError = U;
      var N = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        a.classInitializer = function() {
          g(this, "$Bglength", 1);
          g(this.dynamicPrototype, "$Bgname", this.name.substr(2));
        };
        return a;
      }(U);
      a.ASDefinitionError = N;
      var R = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        a.classInitializer = N.classInitializer;
        return a;
      }(U);
      a.ASEvalError = R;
      var T = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        a.classInitializer = N.classInitializer;
        return a;
      }(U);
      a.ASRangeError = T;
      var X = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        a.classInitializer = N.classInitializer;
        return a;
      }(U);
      a.ASReferenceError = X;
      var da = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        a.classInitializer = N.classInitializer;
        return a;
      }(U);
      a.ASSecurityError = da;
      var x = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        a.classInitializer = N.classInitializer;
        return a;
      }(U);
      a.ASSyntaxError = x;
      var Y = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        a.classInitializer = N.classInitializer;
        return a;
      }(U);
      a.ASTypeError = Y;
      var V = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        a.classInitializer = N.classInitializer;
        return a;
      }(U);
      a.ASURIError = V;
      var ba = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        a.classInitializer = N.classInitializer;
        return a;
      }(U);
      a.ASVerifyError = ba;
      var Z = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        a.classInitializer = N.classInitializer;
        return a;
      }(U);
      a.ASUninitializedError = Z;
      var O = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        a.classInitializer = N.classInitializer;
        return a;
      }(U);
      a.ASArgumentError = O;
      var aa = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        a.classInitializer = N.classInitializer;
        return a;
      }(U);
      a.ASIOError = aa;
      var ea = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        a.classInitializer = N.classInitializer;
        return a;
      }(U);
      a.ASEOFError = ea;
      var ia = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        a.classInitializer = N.classInitializer;
        return a;
      }(U);
      a.ASMemoryError = ia;
      var ja = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        a.classInitializer = N.classInitializer;
        return a;
      }(U);
      a.ASIllegalOperationError = ja;
      var ga = function(b) {
        function a(b) {
        }
        __extends(a, b);
        a.prototype.ecmaToString = function() {
          var b = "/" + this.source + "/";
          this.global && (b += "g");
          this.ignoreCase && (b += "i");
          this.multiline && (b += "m");
          this.dotall && (b += "s");
          this.extended && (b += "x");
          return b;
        };
        Object.defineProperty(a.prototype, "source", {get:function() {
          var b = h(RegExp.prototype, "source");
          if (b && "get" in b) {
            return b.get.call(this);
          }
          if ((b = h(this, "source")) && "value" in b) {
            return b.value;
          }
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "global", {get:function() {
          var b = h(RegExp.prototype, "global");
          if (b && "get" in b) {
            return b.get.call(this);
          }
          if ((b = h(this, "global")) && "value" in b) {
            return b.value;
          }
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "ignoreCase", {get:function() {
          var b = h(RegExp.prototype, "ignoreCase");
          if (b && "get" in b) {
            return b.get.call(this);
          }
          if ((b = h(this, "ignoreCase")) && "value" in b) {
            return b.value;
          }
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "multiline", {get:function() {
          var b = h(RegExp.prototype, "multiline");
          if (b && "get" in b) {
            return b.get.call(this);
          }
          if ((b = h(this, "multiline")) && "value" in b) {
            return b.value;
          }
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "native_source", {get:function() {
          return this.source;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "native_global", {get:function() {
          return this.global;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "native_ignoreCase", {get:function() {
          return this.ignoreCase;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "native_multiline", {get:function() {
          return this.multiline;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "native_lastIndex", {get:function() {
          return this.lastIndex;
        }, set:function(b) {
          this.lastIndex = b | 0;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "native_dotall", {get:function() {
          return this.dotall;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "native_extended", {get:function() {
          return this.extended;
        }, enumerable:!0, configurable:!0});
        a.prototype.exec = function(b) {
          void 0 === b && (b = "");
          var a = RegExp.prototype.exec.apply(this, arguments);
          if (!a) {
            return a;
          }
          for (var e = Object.keys(a), f = 0;f < e.length;f++) {
            var h = e[f];
            d.isNumeric(h) || void 0 === a[h] && (a[h] = "");
          }
          d.AVM2.Runtime.publicizeProperties(a);
          return a;
        };
        a.prototype.test = function(b) {
          void 0 === b && (b = "");
          return null !== this.exec(b);
        };
        a.instanceConstructor = k.XRegExp;
        a.staticNatives = [k.XRegExp];
        a.instanceNatives = [k.XRegExp.prototype];
        a.classInitializer = function() {
          g(this, "$Bglength", 1);
          var b = k.XRegExp.prototype;
          g(b, "$BgtoString", a.prototype.ecmaToString);
          g(b, "$Bgexec", b.exec);
          g(b, "$Bgtest", b.test);
        };
        return a;
      }(D);
      a.ASRegExp = ga;
      var ca = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        a.staticNatives = [Math];
        a.classInitializer = function() {
          g(this, "$BgE", Math.E);
          g(this, "$BgLN10", Math.LN10);
          g(this, "$BgLN2", Math.LN2);
          g(this, "$BgLOG10E", Math.LOG10E);
          g(this, "$BgLOG2E", Math.LOG2E);
          g(this, "$BgPI", Math.PI);
          g(this, "$BgSQRT1_2", Math.SQRT2);
          g(this, "$BgSQRT2", Math.SQRT2);
        };
        return a;
      }(M);
      a.ASMath = ca;
      var fa = function(b) {
        function a(b) {
        }
        __extends(a, b);
        Object.defineProperty(a.prototype, "fullYear", {get:function() {
          return this.getFullYear();
        }, set:function(b) {
          this.setFullYear(b);
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "month", {get:function() {
          return this.getMonth();
        }, set:function(b) {
          this.setMonth(b);
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "date", {get:function() {
          return this.getDate();
        }, set:function(b) {
          this.setDate(b);
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "hours", {get:function() {
          return this.getHours();
        }, set:function(b) {
          this.setHours(b);
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "minutes", {get:function() {
          return this.getMinutes();
        }, set:function(b) {
          this.setMinutes(b);
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "seconds", {get:function() {
          return this.getSeconds();
        }, set:function(b) {
          this.setSeconds(b);
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "milliseconds", {get:function() {
          return this.getMilliseconds();
        }, set:function(b) {
          this.setMilliseconds(b);
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "fullYearUTC", {get:function() {
          return this.getUTCFullYear();
        }, set:function(b) {
          this.setUTCFullYear(b);
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "monthUTC", {get:function() {
          return this.getUTCMonth();
        }, set:function(b) {
          this.setUTCMonth(b);
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "dateUTC", {get:function() {
          return this.getUTCDate();
        }, set:function(b) {
          this.setUTCDate(b);
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "hoursUTC", {get:function() {
          return this.getUTCHours();
        }, set:function(b) {
          this.setUTCHours(b);
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "minutesUTC", {get:function() {
          return this.getUTCMinutes();
        }, set:function(b) {
          this.setUTCMinutes(b);
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "secondsUTC", {get:function() {
          return this.getUTCSeconds();
        }, set:function(b) {
          this.setUTCSeconds(b);
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "millisecondsUTC", {get:function() {
          return this.getUTCMilliseconds();
        }, set:function(b) {
          this.setUTCMilliseconds(b);
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "time", {get:function() {
          return this.getTime();
        }, set:function(b) {
          this.setTime(b);
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "timezoneOffset", {get:function() {
          return this.getTimezoneOffset();
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "day", {get:function() {
          return this.getDay();
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "dayUTC", {get:function() {
          return this.getUTCDay();
        }, enumerable:!0, configurable:!0});
        a.staticNatives = [Date];
        a.instanceNatives = [Date.prototype];
        a.instanceConstructor = Date;
        a.classInitializer = function() {
          c(a, "$Bglength", 7);
          c(Date, "$Bglength", 7);
          var b = Date.prototype;
          g(b, "$BgtoString", b.toString);
          g(b, "$BgvalueOf", b.valueOf);
          g(b, "$BgtoDateString", b.toDateString);
          g(b, "$BgtoTimeString", b.toTimeString);
          g(b, "$BgtoLocaleString", b.toLocaleString);
          g(b, "$BgtoLocaleDateString", b.toLocaleDateString);
          g(b, "$BgtoLocaleTimeString", b.toLocaleTimeString);
          g(b, "$BgtoUTCString", b.toUTCString);
          g(b, "$BgtoJSON", b.toJSON);
          g(b, "$BggetUTCFullYear", b.getUTCFullYear);
          g(b, "$BggetUTCMonth", b.getUTCMonth);
          g(b, "$BggetUTCDate", b.getUTCDate);
          g(b, "$BggetUTCDay", b.getUTCDay);
          g(b, "$BggetUTCHours", b.getUTCHours);
          g(b, "$BggetUTCMinutes", b.getUTCMinutes);
          g(b, "$BggetUTCSeconds", b.getUTCSeconds);
          g(b, "$BggetUTCMilliseconds", b.getUTCMilliseconds);
          g(b, "$BggetFullYear", b.getFullYear);
          g(b, "$BggetMonth", b.getMonth);
          g(b, "$BggetDate", b.getDate);
          g(b, "$BggetDay", b.getDay);
          g(b, "$BggetHours", b.getHours);
          g(b, "$BggetMinutes", b.getMinutes);
          g(b, "$BggetSeconds", b.getSeconds);
          g(b, "$BggetMilliseconds", b.getMilliseconds);
          g(b, "$BggetTimezoneOffset", b.getTimezoneOffset);
          g(b, "$BggetTime", b.getTime);
          g(b, "$BgsetFullYear", b.setFullYear);
          g(b, "$BgsetMonth", b.setMonth);
          g(b, "$BgsetDate", b.setDate);
          g(b, "$BgsetHours", b.setHours);
          g(b, "$BgsetMinutes", b.setMinutes);
          g(b, "$BgsetSeconds", b.setSeconds);
          g(b, "$BgsetMilliseconds", b.setMilliseconds);
          g(b, "$BgsetUTCFullYear", b.setUTCFullYear);
          g(b, "$BgsetUTCMonth", b.setUTCMonth);
          g(b, "$BgsetUTCDate", b.setUTCDate);
          g(b, "$BgsetUTCHours", b.setUTCHours);
          g(b, "$BgsetUTCMinutes", b.setUTCMinutes);
          g(b, "$BgsetUTCSeconds", b.setUTCSeconds);
          g(b, "$BgsetUTCMilliseconds", b.setUTCMilliseconds);
        };
        return a;
      }(M);
      a.ASDate = fa;
      var Q = d.ObjectUtilities.createMap(), ma = !1;
      a.initialize = function(b) {
        ma || (Q.ObjectClass = D, Q.Class = E, Q.FunctionClass = P, Q.BooleanClass = y, Q.MethodClosureClass = K, Q.NamespaceClass = a.ASNamespace, Q.NumberClass = H, Q.IntClass = A, Q.UIntClass = z, Q.StringClass = G, Q.ArrayClass = L, Q.VectorClass = F, Q.ObjectVectorClass = a.GenericVector, Q.IntVectorClass = a.Int32Vector, Q.UIntVectorClass = a.Uint32Vector, Q.DoubleVectorClass = a.Float64Vector, Q.JSONClass = S, Q.XMLClass = a.ASXML, Q.XMLListClass = a.ASXMLList, Q.QNameClass = a.ASQName, Q.ErrorClass = 
        U, Q.DefinitionErrorClass = N, Q.EvalErrorClass = R, Q.RangeErrorClass = T, Q.ReferenceErrorClass = X, Q.SecurityErrorClass = da, Q.SyntaxErrorClass = x, Q.TypeErrorClass = Y, Q.URIErrorClass = V, Q.VerifyErrorClass = ba, Q.UninitializedErrorClass = Z, Q.ArgumentErrorClass = O, Q.IOErrorClass = aa, Q.EOFErrorClass = ea, Q.MemoryErrorClass = ia, Q.IllegalOperationErrorClass = ja, Q.DateClass = fa, Q.MathClass = ca, Q.RegExpClass = ga, Q.ProxyClass = a.flash.utils.OriginalProxy, Q.DictionaryClass = 
        a.flash.utils.OriginalDictionary, Q.ByteArrayClass = a.flash.utils.OriginalByteArray, Q.CompressionAlgorithmClass = a.flash.utils.CompressionAlgorithm, Q.SystemClass = a.flash.system.OriginalSystem, ma = !0);
      };
      var W = d.ObjectUtilities.createMap(), la = d.ObjectUtilities.createMap();
      a.registerNativeClass = function(b, a) {
        W[b] = a;
      };
      a.registerNativeFunction = function(b, a) {
        la[b] = a;
      };
      a.createInterface = function(b) {
        var a = b.instanceInfo;
        b = new E(b);
        b.interfaceBindings = new I(null, a, null, null);
        b.verify();
        return b;
      };
      var na = [];
      a.createClass = function(b, a, f) {
        var h = b.instanceInfo, c = b.abc.applicationDomain, p = b.native, r;
        p ? ((r = Q[b.native.cls]) || (r = W[b.native.cls]), r || d.Debug.unexpected("No native class for " + b.native.cls), r.morphIntoASClass(b), na && na.push(r)) : r = new E(b);
        r.baseClass = a;
        f = new u(f, null);
        f.object = r;
        var g = null, g = h.init.isNative() ? r : e(h.init, f, !1, !1), m = null, q = null;
        p && (m = [r], r.staticNatives && d.ArrayUtilities.pushMany(m, r.staticNatives), q = [r.prototype], r.instanceNatives && d.ArrayUtilities.pushMany(q, r.instanceNatives));
        E.create(r, a, g);
        if ("Class" === b.instanceInfo.name.name) {
          for (p = 0;p < na.length;p++) {
            na[p].__proto__ = E.prototype;
          }
          na = null;
        }
        k.enterTimeline("InstanceBindings");
        r.instanceBindings = new I(a ? a.instanceBindings : null, h, f, q);
        r.instanceConstructor && (k.enterTimeline("applyTo"), r.instanceBindings.applyTo(c, r.traitsPrototype), k.leaveTimeline());
        k.leaveTimeline();
        k.enterTimeline("ClassBindings");
        r.classBindings = new C(b, f, m);
        k.enterTimeline("applyTo");
        r.classBindings.applyTo(c, r);
        r === E ? r.instanceBindings.applyTo(c, D, !0) : E.instanceBindings && E.instanceBindings.applyTo(c, r, !0);
        k.leaveTimeline();
        k.leaveTimeline();
        r.implementedInterfaces = r.instanceBindings.implementedInterfaces;
        k.enterTimeline("Configure");
        E.configureInitializers(r);
        E.linkSymbols(r);
        E.runClassInitializer(r);
        k.leaveTimeline();
        return r;
      };
      a.getMethodOrAccessorNative = function(b, a) {
        for (var e = w(v.getName(b.name)), f = 0;f < a.length;f++) {
          var c = a[f], p = e;
          l(c, "original_" + e) && (p = "original_" + e);
          !l(c, e) && l(c, "native_" + e) && (p = "native_" + e);
          if (l(c, p)) {
            return b.isAccessor() ? (e = h(c, p), e = b.isGetter() ? e.get : e.set) : e = c[p], e;
          }
        }
        d.Debug.warning("No native method for: " + b.kindName() + " " + b.methodInfo.holder + "::" + v.getQualifiedName(b.name) + ", make sure you've got the static keyword for static methods.");
        return null;
      };
      a.escapeNativeName = w;
      var oa;
      (function(b) {
        b.String = jsGlobal.String;
        b.Function = jsGlobal.Function;
        b.Boolean = jsGlobal.Boolean;
        b.Number = jsGlobal.Number;
        b.Date = jsGlobal.Date;
        b.ASObject = d.AVM2.AS.ASObject;
        b.ASFunction = d.AVM2.AS.ASFunction;
        b.print = function(b, a, e, f, h) {
          jsGlobal.print.apply(null, arguments);
        };
        b.debugBreak = function(b) {
          debugger;
        };
        b.bugzilla = function(b) {
          switch(b) {
            case 574600:
              return !0;
          }
          return !1;
        };
        b.decodeURI = jsGlobal.decodeURI;
        b.decodeURIComponent = jsGlobal.decodeURIComponent;
        b.encodeURI = jsGlobal.encodeURI;
        b.encodeURIComponent = jsGlobal.encodeURIComponent;
        b.isNaN = jsGlobal.isNaN;
        b.isFinite = jsGlobal.isFinite;
        b.parseInt = jsGlobal.parseInt;
        b.parseFloat = jsGlobal.parseFloat;
        b.escape = jsGlobal.escape;
        b.unescape = jsGlobal.unescape;
        b.isXMLName;
        b.notImplemented = d.Debug.notImplemented;
        b.getQualifiedClassName = function(b) {
          if (null === b) {
            return "null";
          }
          if (void 0 === b) {
            return "void";
          }
          if (A.isType(b)) {
            return "int";
          }
          b = p(b);
          return E.isType(b) ? b.getQualifiedClassName() : b.class.getQualifiedClassName();
        };
        b.getQualifiedSuperclassName = function(b) {
          if (t(b)) {
            return "null";
          }
          b = p(b);
          b = E.isType(b) ? b : b.class;
          return b.baseClass ? b.baseClass.getQualifiedClassName() : "null";
        };
        b.getDefinitionByName = function(a) {
          a = b.String(a).replace("::", ".");
          return d.AVM2.Runtime.AVM2.currentDomain().getClass(a, !1) || null;
        };
        b.describeType = function(b, a) {
          return d.AVM2.AS.describeType(b, a);
        };
        b.describeTypeJSON = function(b, a) {
          return d.AVM2.AS.describeTypeJSON(b, a);
        };
      })(oa = a.Natives || (a.Natives = {}));
      a.getNative = function(b) {
        for (var a = b.split("."), e = oa, f = 0, h = a.length;f < h;f++) {
          e = e && e[a[f]];
        }
        e || (e = la[b]);
        return e;
      };
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var n = d.AVM2.Runtime.asCoerceString, w = d.ObjectUtilities.defineNonEnumerableProperty, v = d.AVM2.Runtime.throwError, u = d.AVM2.Runtime.asCheckVectorGetNumericProperty, l = d.AVM2.Runtime.asCheckVectorSetNumericProperty, c = function(c) {
        function q(c, g, h) {
          void 0 === c && (c = 0);
          void 0 === g && (g = !1);
          void 0 === h && (h = a.ASObject);
          c >>>= 0;
          this._fixed = !!g;
          this._buffer = Array(c);
          this._defaultValue = (this._type = h) ? h.defaultValue : null;
          this._fill(c, this._defaultValue);
        }
        __extends(q, c);
        q.prototype.newThisType = function() {
          return new q;
        };
        q.defaultCompareFunction = function(a, c) {
          return String(a).localeCompare(String(c));
        };
        q.compare = function(a, c, h, f) {
          var b = 0;
          f || (f = q.defaultCompareFunction);
          h & q.NUMERIC ? (a = d.toNumber(a), c = d.toNumber(c), b = a < c ? -1 : a > c ? 1 : 0) : b = f(a, c);
          h & q.DESCENDING && (b *= -1);
          return b;
        };
        q.applyType = function(c) {
          function g(a, f) {
            Function.prototype.call.call(q.instanceConstructor, this, a, f, c);
          }
          g.prototype = q.prototype;
          g.instanceConstructor = g;
          g.callableConstructor = function(h) {
            if (h instanceof a.Int32Vector) {
              return h;
            }
            var f = h.asGetProperty(void 0, "length");
            if (void 0 !== f) {
              for (var b = new g(f, !1), e = 0;e < f;e++) {
                b.asSetNumericProperty(e, h.asGetPublicProperty(e));
              }
              return b;
            }
            d.Debug.unexpected();
          };
          g.__proto__ = q;
          return g;
        };
        q.prototype._fill = function(a, c) {
          for (var h = 0;h < a;h++) {
            this._buffer[0 + h] = c;
          }
        };
        q.prototype.toString = function() {
          for (var a = "", c = 0;c < this._buffer.length;c++) {
            a += this._buffer[c], c < this._buffer.length - 1 && (a += ",");
          }
          return a;
        };
        q.prototype.toLocaleString = function() {
          for (var a = "", c = 0;c < this._buffer.length;c++) {
            a += this._buffer[c].asCallPublicProperty("toLocaleString"), c < this._buffer.length - 1 && (a += ",");
          }
          return a;
        };
        q.prototype.sort = function(a) {
          if (0 === arguments.length) {
            return this._buffer.sort();
          }
          if (a instanceof Function) {
            return this._buffer.sort(a);
          }
          var c = a | 0;
          return c && q.NUMERIC ? c & q.DESCENDING ? this._buffer.sort(function(a, f) {
            return asCoerceNumber(f) - asCoerceNumber(a);
          }) : this._buffer.sort(function(a, f) {
            return asCoerceNumber(a) - asCoerceNumber(f);
          }) : c && q.CASEINSENSITIVE ? c & q.DESCENDING ? this._buffer.sort(function(a, f) {
            return n(f).toLowerCase() - n(a).toLowerCase();
          }) : this._buffer.sort(function(a, f) {
            return n(a).toLowerCase() - n(f).toLowerCase();
          }) : c & q.DESCENDING ? this._buffer.sort(function(a, f) {
            return f - a;
          }) : this._buffer.sort();
        };
        q.prototype.every = function(a, c) {
          for (var h = 0;h < this._buffer.length;h++) {
            if (!a.call(c, this.asGetNumericProperty(h), h, this)) {
              return !1;
            }
          }
          return !0;
        };
        q.prototype.filter = function(a, c) {
          for (var h = new q(0, !1, this._type), f = 0;f < this._buffer.length;f++) {
            a.call(c, this.asGetNumericProperty(f), f, this) && h.push(this.asGetNumericProperty(f));
          }
          return h;
        };
        q.prototype.some = function(a, c) {
          2 !== arguments.length ? v("ArgumentError", k.Errors.WrongArgumentCountError) : d.isFunction(a) || v("ArgumentError", k.Errors.CheckTypeFailedError);
          for (var h = 0;h < this._buffer.length;h++) {
            if (a.call(c, this.asGetNumericProperty(h), h, this)) {
              return !0;
            }
          }
          return !1;
        };
        q.prototype.forEach = function(a, c) {
          d.isFunction(a) || v("ArgumentError", k.Errors.CheckTypeFailedError);
          for (var h = 0;h < this._buffer.length;h++) {
            a.call(c, this.asGetNumericProperty(h), h, this);
          }
        };
        q.prototype.join = function(a) {
          void 0 === a && (a = ",");
          for (var c = this._buffer, h = this._buffer.length, f = "", b = 0;b < h - 1;b++) {
            f += c[b] + a;
          }
          0 < h && (f += c[h - 1]);
          return f;
        };
        q.prototype.indexOf = function(a, c) {
          void 0 === c && (c = 0);
          return this._buffer.indexOf(a, c);
        };
        q.prototype.lastIndexOf = function(a, c) {
          void 0 === c && (c = 2147483647);
          return this._buffer.lastIndexOf(a, c);
        };
        q.prototype.map = function(a, c) {
          d.isFunction(a) || v("ArgumentError", k.Errors.CheckTypeFailedError);
          for (var h = new q(0, !1, this._type), f = 0;f < this._buffer.length;f++) {
            h.push(a.call(c, this.asGetNumericProperty(f), f, this));
          }
          return h;
        };
        q.prototype.push = function(a, c, h, f, b, e, r, p) {
          this._checkFixed();
          for (var g = 0;g < arguments.length;g++) {
            this._buffer.push(this._coerce(arguments[g]));
          }
        };
        q.prototype.pop = function() {
          this._checkFixed();
          return 0 === this._buffer.length ? void 0 : this._buffer.pop();
        };
        q.prototype.concat = function() {
          for (var a = [], c = 0;c < arguments.length;c++) {
            a.push(this._coerce(arguments[c])._buffer);
          }
          return this._buffer.concat.apply(this._buffer, a);
        };
        q.prototype.reverse = function() {
          this._buffer.reverse();
          return this;
        };
        q.prototype._coerce = function(a) {
          return this._type ? this._type.coerce(a) : void 0 === a ? null : a;
        };
        q.prototype.shift = function() {
          this._checkFixed();
          return 0 === this._buffer.length ? void 0 : this._buffer.shift();
        };
        q.prototype.unshift = function() {
          if (arguments.length) {
            this._checkFixed();
            for (var a = 0;a < arguments.length;a++) {
              this._buffer.unshift(this._coerce(arguments[a]));
            }
          }
        };
        q.prototype.slice = function(a, c) {
          void 0 === a && (a = 0);
          void 0 === c && (c = 2147483647);
          var h = this._buffer, f = h.length, b = Math.min(Math.max(a, 0), f), f = Math.min(Math.max(c, b), f), e = new q(f - b, this.fixed, this._type);
          e._buffer = h.slice(b, f);
          return e;
        };
        q.prototype.splice = function(a, c) {
          var h = this._buffer, f = h.length, b = Math.min(Math.max(a, 0), f), f = Math.min(Math.max(c, 0), f - b), e = arguments.length - 2;
          f !== e && this._checkFixed();
          for (var b = [b, f], r = 2;r < e + 2;r++) {
            b[r] = this._coerce(arguments[r]);
          }
          f = new q(f, this.fixed, this._type);
          f._buffer = h.splice.apply(h, b);
          return f;
        };
        Object.defineProperty(q.prototype, "length", {get:function() {
          return this._buffer.length;
        }, set:function(a) {
          a >>>= 0;
          if (a > this._buffer.length) {
            for (var c = this._buffer.length;c < a;c++) {
              this._buffer[c] = this._defaultValue;
            }
          } else {
            this._buffer.length = a;
          }
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(q.prototype, "fixed", {get:function() {
          return this._fixed;
        }, set:function(a) {
          this._fixed = !!a;
        }, enumerable:!0, configurable:!0});
        q.prototype._checkFixed = function() {
          this._fixed && v("RangeError", k.Errors.VectorFixedError);
        };
        q.prototype.asNextName = function(a) {
          return a - 1;
        };
        q.prototype.asNextValue = function(a) {
          return this._buffer[a - 1];
        };
        q.prototype.asNextNameIndex = function(a) {
          a += 1;
          return a <= this._buffer.length ? a : 0;
        };
        q.prototype.asHasProperty = function(a, c, h) {
          if (q.prototype === this || !d.isNumeric(c)) {
            return Object.prototype.asHasProperty.call(this, a, c, h);
          }
          a = d.toNumber(c);
          return 0 <= a && a < this._buffer.length;
        };
        q.prototype.asGetNumericProperty = function(a) {
          u(a, this._buffer.length);
          return this._buffer[a];
        };
        q.prototype.asSetNumericProperty = function(a, c) {
          l(a, this._buffer.length, this._fixed);
          this._buffer[a] = this._coerce(c);
        };
        q.prototype.asHasNext2 = function(a) {
          a.index = this.asNextNameIndex(a.index);
        };
        q.CASEINSENSITIVE = 1;
        q.DESCENDING = 2;
        q.UNIQUESORT = 4;
        q.RETURNINDEXEDARRAY = 8;
        q.NUMERIC = 16;
        q.instanceConstructor = q;
        q.staticNatives = [q];
        q.instanceNatives = [q.prototype];
        q.classInitializer = function() {
          var a = q.prototype;
          w(a, "$Bgjoin", a.join);
          w(a, "$BgtoString", a.join);
          w(a, "$BgtoLocaleString", a.toLocaleString);
          w(a, "$Bgpop", a.pop);
          w(a, "$Bgpush", a.push);
          w(a, "$Bgreverse", a.reverse);
          w(a, "$Bgconcat", a.concat);
          w(a, "$Bgsplice", a.splice);
          w(a, "$Bgslice", a.slice);
          w(a, "$Bgshift", a.shift);
          w(a, "$Bgunshift", a.unshift);
          w(a, "$BgindexOf", a.indexOf);
          w(a, "$BglastIndexOf", a.lastIndexOf);
          w(a, "$BgforEach", a.forEach);
          w(a, "$Bgmap", a.map);
          w(a, "$Bgfilter", a.filter);
          w(a, "$Bgsome", a.some);
          w(a, "$Bgevery", a.every);
          w(a, "$Bgsort", a.sort);
        };
        return q;
      }(a.ASVector);
      a.GenericVector = c;
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var n = d.ObjectUtilities.defineNonEnumerableProperty, w = d.AVM2.Runtime.throwError, v = d.AVM2.Runtime.asCheckVectorGetNumericProperty, u = d.AVM2.Runtime.asCheckVectorSetNumericProperty, l = function(a) {
        function g(a, c) {
          void 0 === a && (a = 0);
          void 0 === c && (c = !1);
          a >>>= 0;
          this._fixed = !!c;
          this._buffer = new Int32Array(Math.max(g.INITIAL_CAPACITY, a + g.EXTRA_CAPACITY));
          this._offset = 0;
          this._length = a;
        }
        __extends(g, a);
        g.prototype.newThisType = function() {
          return new g;
        };
        g.callable = function(a) {
          if (a instanceof g) {
            return a;
          }
          var c = a.asGetProperty(void 0, "length");
          if (void 0 !== c) {
            for (var m = new g(c, !1), h = 0;h < c;h++) {
              m.asSetNumericProperty(h, a.asGetPublicProperty(h));
            }
            return m;
          }
          d.Debug.unexpected();
        };
        g.prototype.internalToString = function() {
          for (var a = "", c = this._offset, g = c + this._length, h = 0;h < this._buffer.length;h++) {
            h === c && (a += "["), h === g && (a += "]"), a += this._buffer[h], h < this._buffer.length - 1 && (a += ",");
          }
          this._offset + this._length === this._buffer.length && (a += "]");
          return a + ": offset: " + this._offset + ", length: " + this._length + ", capacity: " + this._buffer.length;
        };
        g.prototype.toString = function() {
          for (var a = "", c = 0;c < this._length;c++) {
            a += this._buffer[this._offset + c], c < this._length - 1 && (a += ",");
          }
          return a;
        };
        g.prototype.toLocaleString = function() {
          for (var a = "", c = 0;c < this._length;c++) {
            a += this._buffer[this._offset + c], c < this._length - 1 && (a += ",");
          }
          return a;
        };
        g.prototype._view = function() {
          return this._buffer.subarray(this._offset, this._offset + this._length);
        };
        g.prototype._ensureCapacity = function(a) {
          var c = this._offset + a;
          c < this._buffer.length || (a <= this._buffer.length ? (c = this._buffer.length - a >> 2, this._buffer.set(this._view(), c), this._offset = c) : (a = (3 * this._buffer.length >> 1) + 1, a < c && (a = c), c = new Int32Array(a), c.set(this._buffer, 0), this._buffer = c));
        };
        g.prototype.concat = function() {
          for (var a = this._length, c = 0;c < arguments.length;c++) {
            var m = arguments[c];
            m._buffer instanceof Int32Array || w("TypeError", k.Errors.CheckTypeFailedError, m.constructor.name, "__AS3__.vec.Vector.<int>");
            a += m._length;
          }
          var a = new g(a), h = a._buffer;
          h.set(this._buffer);
          for (var f = this._length, c = 0;c < arguments.length;c++) {
            m = arguments[c], f + m._buffer.length < m._buffer.length ? h.set(m._buffer, f) : h.set(m._buffer.subarray(0, m._length), f), f += m._length;
          }
          return a;
        };
        g.prototype.every = function(a, c) {
          for (var g = 0;g < this._length;g++) {
            if (!a.call(c, this._buffer[this._offset + g], g, this)) {
              return !1;
            }
          }
          return !0;
        };
        g.prototype.filter = function(a, c) {
          for (var m = new g, h = 0;h < this._length;h++) {
            a.call(c, this._buffer[this._offset + h], h, this) && m.push(this._buffer[this._offset + h]);
          }
          return m;
        };
        g.prototype.some = function(a, c) {
          2 !== arguments.length ? w("ArgumentError", k.Errors.WrongArgumentCountError) : d.isFunction(a) || w("ArgumentError", k.Errors.CheckTypeFailedError);
          for (var g = 0;g < this._length;g++) {
            if (a.call(c, this._buffer[this._offset + g], g, this)) {
              return !0;
            }
          }
          return !1;
        };
        g.prototype.forEach = function(a, c) {
          for (var g = 0;g < this._length;g++) {
            a.call(c, this._buffer[this._offset + g], g, this);
          }
        };
        g.prototype.join = function(a) {
          void 0 === a && (a = ",");
          for (var c = this.length, g = this._buffer, h = this._offset, f = "", b = 0;b < c - 1;b++) {
            f += g[h + b] + a;
          }
          0 < c && (f += g[h + c - 1]);
          return f;
        };
        g.prototype.indexOf = function(a, c) {
          void 0 === c && (c = 0);
          var g = this._length, h = c | 0;
          if (0 > h) {
            h += g, 0 > h && (h = 0);
          } else {
            if (h >= g) {
              return -1;
            }
          }
          for (var f = this._buffer, g = this._length, b = this._offset, g = b + g, h = h + b;h < g;h++) {
            if (f[h] === a) {
              return h - b;
            }
          }
          return -1;
        };
        g.prototype.lastIndexOf = function(a, c) {
          void 0 === c && (c = 2147483647);
          var g = this._length, h = c | 0;
          if (0 > h) {
            if (h += g, 0 > h) {
              return -1;
            }
          } else {
            h >= g && (h = g);
          }
          for (var g = this._buffer, f = this._offset, h = h + f;h-- > f;) {
            if (g[h] === a) {
              return h - f;
            }
          }
          return -1;
        };
        g.prototype.map = function(a, c) {
          d.isFunction(a) || w("ArgumentError", k.Errors.CheckTypeFailedError);
          for (var m = new g, h = 0;h < this._length;h++) {
            m.push(a.call(c, this._buffer[this._offset + h], h, this));
          }
          return m;
        };
        g.prototype.push = function(a, c, g, h, f, b, e, r) {
          this._checkFixed();
          this._ensureCapacity(this._length + arguments.length);
          for (var p = 0;p < arguments.length;p++) {
            this._buffer[this._offset + this._length++] = arguments[p];
          }
        };
        g.prototype.pop = function() {
          this._checkFixed();
          if (0 === this._length) {
            return g.DEFAULT_VALUE;
          }
          this._length--;
          return this._buffer[this._offset + this._length];
        };
        g.prototype.reverse = function() {
          for (var a = this._offset, c = this._offset + this._length - 1, g = this._buffer;a < c;) {
            var h = g[a];
            g[a] = g[c];
            g[c] = h;
            a++;
            c--;
          }
          return this;
        };
        g.prototype.sort = function(a) {
          return 0 === arguments.length ? Array.prototype.sort.call(this._view()) : a instanceof Function ? Array.prototype.sort.call(this._view(), a) : (a | 0) & g.DESCENDING ? Array.prototype.sort.call(this._view(), function(a, c) {
            return c - a;
          }) : Array.prototype.sort.call(this._view(), function(a, c) {
            return a - c;
          });
        };
        g.prototype.shift = function() {
          this._checkFixed();
          if (0 === this._length) {
            return 0;
          }
          this._length--;
          return this._buffer[this._offset++];
        };
        g.prototype.unshift = function() {
          this._checkFixed();
          if (arguments.length) {
            this._ensureCapacity(this._length + arguments.length);
            this._slide(arguments.length);
            this._offset -= arguments.length;
            this._length += arguments.length;
            for (var a = 0;a < arguments.length;a++) {
              this._buffer[this._offset + a] = arguments[a];
            }
          }
        };
        g.prototype.slice = function(a, c) {
          void 0 === a && (a = 0);
          void 0 === c && (c = 2147483647);
          var m = this._buffer, h = this._length, f = Math.min(Math.max(a, 0), h), h = Math.min(Math.max(c, f), h), b = new g(h - f, this.fixed);
          b._buffer.set(m.subarray(this._offset + f, this._offset + h), b._offset);
          return b;
        };
        g.prototype.splice = function(a, c) {
          var m = this._buffer, h = this._length, f = Math.min(Math.max(a, 0), h), b = this._offset + f, e = Math.min(Math.max(c, 0), h - f), f = arguments.length - 2, r, p = new g(e, this.fixed);
          0 < e && (r = m.subarray(b, b + e), p._buffer.set(r, p._offset));
          this._ensureCapacity(h - e + f);
          m.set(m.subarray(b + e, h), b + f);
          this._length += f - e;
          for (h = 0;h < f;h++) {
            m[b + h] = arguments[h + 2];
          }
          return p;
        };
        g.prototype._slide = function(a) {
          this._buffer.set(this._view(), this._offset + a);
          this._offset += a;
        };
        Object.defineProperty(g.prototype, "length", {get:function() {
          return this._length;
        }, set:function(a) {
          a >>>= 0;
          if (a > this._length) {
            this._ensureCapacity(a);
            for (var c = this._offset + this._length, m = this._offset + a;c < m;c++) {
              this._buffer[c] = g.DEFAULT_VALUE;
            }
          }
          this._length = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(g.prototype, "fixed", {get:function() {
          return this._fixed;
        }, set:function(a) {
          this._fixed = !!a;
        }, enumerable:!0, configurable:!0});
        g.prototype._checkFixed = function() {
          this._fixed && w("RangeError", k.Errors.VectorFixedError);
        };
        g.prototype.asGetNumericProperty = function(a) {
          v(a, this._length);
          return this._buffer[this._offset + a];
        };
        g.prototype.asSetNumericProperty = function(a, c) {
          u(a, this._length, this._fixed);
          a === this._length && (this._ensureCapacity(this._length + 1), this._length++);
          this._buffer[this._offset + a] = c;
        };
        g.prototype.asHasProperty = function(a, c, m) {
          if (g.prototype === this || !d.isNumeric(c)) {
            return Object.prototype.asHasProperty.call(this, a, c, m);
          }
          a = d.toNumber(c);
          return 0 <= a && a < this._length;
        };
        g.prototype.asNextName = function(a) {
          return a - 1;
        };
        g.prototype.asNextValue = function(a) {
          return this._buffer[this._offset + a - 1];
        };
        g.prototype.asNextNameIndex = function(a) {
          a += 1;
          return a <= this._length ? a : 0;
        };
        g.prototype.asHasNext2 = function(a) {
          a.index = this.asNextNameIndex(a.index);
        };
        g.EXTRA_CAPACITY = 4;
        g.INITIAL_CAPACITY = 10;
        g.DEFAULT_VALUE = 0;
        g.DESCENDING = 2;
        g.UNIQUESORT = 4;
        g.RETURNINDEXEDARRAY = 8;
        g.instanceConstructor = g;
        g.staticNatives = [g];
        g.instanceNatives = [g.prototype];
        g.callableConstructor = g.callable;
        g.classInitializer = function() {
          var a = g.prototype;
          n(a, "$Bgjoin", a.join);
          n(a, "$BgtoString", a.join);
          n(a, "$BgtoLocaleString", a.toLocaleString);
          n(a, "$Bgpop", a.pop);
          n(a, "$Bgpush", a.push);
          n(a, "$Bgreverse", a.reverse);
          n(a, "$Bgconcat", a.concat);
          n(a, "$Bgsplice", a.splice);
          n(a, "$Bgslice", a.slice);
          n(a, "$Bgshift", a.shift);
          n(a, "$Bgunshift", a.unshift);
          n(a, "$BgindexOf", a.indexOf);
          n(a, "$BglastIndexOf", a.lastIndexOf);
          n(a, "$BgforEach", a.forEach);
          n(a, "$Bgmap", a.map);
          n(a, "$Bgfilter", a.filter);
          n(a, "$Bgsome", a.some);
          n(a, "$Bgevery", a.every);
          n(a, "$Bgsort", a.sort);
        };
        return g;
      }(a.ASVector);
      a.Int32Vector = l;
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var n = d.ObjectUtilities.defineNonEnumerableProperty, w = d.AVM2.Runtime.throwError, v = d.AVM2.Runtime.asCheckVectorGetNumericProperty, u = d.AVM2.Runtime.asCheckVectorSetNumericProperty, l = function(a) {
        function g(a, c) {
          void 0 === a && (a = 0);
          void 0 === c && (c = !1);
          a >>>= 0;
          this._fixed = !!c;
          this._buffer = new Uint32Array(Math.max(g.INITIAL_CAPACITY, a + g.EXTRA_CAPACITY));
          this._offset = 0;
          this._length = a;
        }
        __extends(g, a);
        g.prototype.newThisType = function() {
          return new g;
        };
        g.callable = function(a) {
          if (a instanceof g) {
            return a;
          }
          var c = a.asGetProperty(void 0, "length");
          if (void 0 !== c) {
            for (var m = new g(c, !1), h = 0;h < c;h++) {
              m.asSetNumericProperty(h, a.asGetPublicProperty(h));
            }
            return m;
          }
          d.Debug.unexpected();
        };
        g.prototype.internalToString = function() {
          for (var a = "", c = this._offset, g = c + this._length, h = 0;h < this._buffer.length;h++) {
            h === c && (a += "["), h === g && (a += "]"), a += this._buffer[h], h < this._buffer.length - 1 && (a += ",");
          }
          this._offset + this._length === this._buffer.length && (a += "]");
          return a + ": offset: " + this._offset + ", length: " + this._length + ", capacity: " + this._buffer.length;
        };
        g.prototype.toString = function() {
          for (var a = "", c = 0;c < this._length;c++) {
            a += this._buffer[this._offset + c], c < this._length - 1 && (a += ",");
          }
          return a;
        };
        g.prototype.toLocaleString = function() {
          for (var a = "", c = 0;c < this._length;c++) {
            a += this._buffer[this._offset + c], c < this._length - 1 && (a += ",");
          }
          return a;
        };
        g.prototype._view = function() {
          return this._buffer.subarray(this._offset, this._offset + this._length);
        };
        g.prototype._ensureCapacity = function(a) {
          var c = this._offset + a;
          c < this._buffer.length || (a <= this._buffer.length ? (c = this._buffer.length - a >> 2, this._buffer.set(this._view(), c), this._offset = c) : (a = (3 * this._buffer.length >> 1) + 1, a < c && (a = c), c = new Uint32Array(a), c.set(this._buffer, 0), this._buffer = c));
        };
        g.prototype.concat = function() {
          for (var a = this._length, c = 0;c < arguments.length;c++) {
            var m = arguments[c];
            m._buffer instanceof Uint32Array || w("TypeError", k.Errors.CheckTypeFailedError, m.constructor.name, "__AS3__.vec.Vector.<uint>");
            a += m._length;
          }
          var a = new g(a), h = a._buffer;
          h.set(this._buffer);
          for (var f = this._length, c = 0;c < arguments.length;c++) {
            m = arguments[c], f + m._buffer.length < m._buffer.length ? h.set(m._buffer, f) : h.set(m._buffer.subarray(0, m._length), f), f += m._length;
          }
          return a;
        };
        g.prototype.every = function(a, c) {
          for (var g = 0;g < this._length;g++) {
            if (!a.call(c, this._buffer[this._offset + g], g, this)) {
              return !1;
            }
          }
          return !0;
        };
        g.prototype.filter = function(a, c) {
          for (var m = new g, h = 0;h < this._length;h++) {
            a.call(c, this._buffer[this._offset + h], h, this) && m.push(this._buffer[this._offset + h]);
          }
          return m;
        };
        g.prototype.some = function(a, c) {
          2 !== arguments.length ? w("ArgumentError", k.Errors.WrongArgumentCountError) : d.isFunction(a) || w("ArgumentError", k.Errors.CheckTypeFailedError);
          for (var g = 0;g < this._length;g++) {
            if (a.call(c, this._buffer[this._offset + g], g, this)) {
              return !0;
            }
          }
          return !1;
        };
        g.prototype.forEach = function(a, c) {
          for (var g = 0;g < this._length;g++) {
            a.call(c, this._buffer[this._offset + g], g, this);
          }
        };
        g.prototype.join = function(a) {
          void 0 === a && (a = ",");
          for (var c = this.length, g = this._buffer, h = this._offset, f = "", b = 0;b < c - 1;b++) {
            f += g[h + b] + a;
          }
          0 < c && (f += g[h + c - 1]);
          return f;
        };
        g.prototype.indexOf = function(a, c) {
          void 0 === c && (c = 0);
          var g = this._length, h = c | 0;
          if (0 > h) {
            h += g, 0 > h && (h = 0);
          } else {
            if (h >= g) {
              return -1;
            }
          }
          for (var f = this._buffer, g = this._length, b = this._offset, g = b + g, h = h + b;h < g;h++) {
            if (f[h] === a) {
              return h - b;
            }
          }
          return -1;
        };
        g.prototype.lastIndexOf = function(a, c) {
          void 0 === c && (c = 2147483647);
          var g = this._length, h = c | 0;
          if (0 > h) {
            if (h += g, 0 > h) {
              return -1;
            }
          } else {
            h >= g && (h = g);
          }
          for (var g = this._buffer, f = this._offset, h = h + f;h-- > f;) {
            if (g[h] === a) {
              return h - f;
            }
          }
          return -1;
        };
        g.prototype.map = function(a, c) {
          d.isFunction(a) || w("ArgumentError", k.Errors.CheckTypeFailedError);
          for (var m = new g, h = 0;h < this._length;h++) {
            m.push(a.call(c, this._buffer[this._offset + h], h, this));
          }
          return m;
        };
        g.prototype.push = function(a, c, g, h, f, b, e, r) {
          this._checkFixed();
          this._ensureCapacity(this._length + arguments.length);
          for (var p = 0;p < arguments.length;p++) {
            this._buffer[this._offset + this._length++] = arguments[p];
          }
        };
        g.prototype.pop = function() {
          this._checkFixed();
          if (0 === this._length) {
            return g.DEFAULT_VALUE;
          }
          this._length--;
          return this._buffer[this._offset + this._length];
        };
        g.prototype.reverse = function() {
          for (var a = this._offset, c = this._offset + this._length - 1, g = this._buffer;a < c;) {
            var h = g[a];
            g[a] = g[c];
            g[c] = h;
            a++;
            c--;
          }
          return this;
        };
        g.prototype.sort = function(a) {
          return 0 === arguments.length ? Array.prototype.sort.call(this._view()) : a instanceof Function ? Array.prototype.sort.call(this._view(), a) : (a | 0) & g.DESCENDING ? Array.prototype.sort.call(this._view(), function(a, c) {
            return c - a;
          }) : Array.prototype.sort.call(this._view(), function(a, c) {
            return a - c;
          });
        };
        g.prototype.shift = function() {
          this._checkFixed();
          if (0 === this._length) {
            return 0;
          }
          this._length--;
          return this._buffer[this._offset++];
        };
        g.prototype.unshift = function() {
          this._checkFixed();
          if (arguments.length) {
            this._ensureCapacity(this._length + arguments.length);
            this._slide(arguments.length);
            this._offset -= arguments.length;
            this._length += arguments.length;
            for (var a = 0;a < arguments.length;a++) {
              this._buffer[this._offset + a] = arguments[a];
            }
          }
        };
        g.prototype.slice = function(a, c) {
          void 0 === a && (a = 0);
          void 0 === c && (c = 2147483647);
          var m = this._buffer, h = this._length, f = Math.min(Math.max(a, 0), h), h = Math.min(Math.max(c, f), h), b = new g(h - f, this.fixed);
          b._buffer.set(m.subarray(this._offset + f, this._offset + h), b._offset);
          return b;
        };
        g.prototype.splice = function(a, c) {
          var m = this._buffer, h = this._length, f = Math.min(Math.max(a, 0), h), b = this._offset + f, e = Math.min(Math.max(c, 0), h - f), f = arguments.length - 2, r, p = new g(e, this.fixed);
          0 < e && (r = m.subarray(b, b + e), p._buffer.set(r, p._offset));
          this._ensureCapacity(h - e + f);
          m.set(m.subarray(b + e, h), b + f);
          this._length += f - e;
          for (h = 0;h < f;h++) {
            m[b + h] = arguments[h + 2];
          }
          return p;
        };
        g.prototype._slide = function(a) {
          this._buffer.set(this._view(), this._offset + a);
          this._offset += a;
        };
        Object.defineProperty(g.prototype, "length", {get:function() {
          return this._length;
        }, set:function(a) {
          a >>>= 0;
          if (a > this._length) {
            this._ensureCapacity(a);
            for (var c = this._offset + this._length, m = this._offset + a;c < m;c++) {
              this._buffer[c] = g.DEFAULT_VALUE;
            }
          }
          this._length = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(g.prototype, "fixed", {get:function() {
          return this._fixed;
        }, set:function(a) {
          this._fixed = !!a;
        }, enumerable:!0, configurable:!0});
        g.prototype._checkFixed = function() {
          this._fixed && w("RangeError", k.Errors.VectorFixedError);
        };
        g.prototype.asGetNumericProperty = function(a) {
          v(a, this._length);
          return this._buffer[this._offset + a];
        };
        g.prototype.asSetNumericProperty = function(a, c) {
          u(a, this._length, this._fixed);
          a === this._length && (this._ensureCapacity(this._length + 1), this._length++);
          this._buffer[this._offset + a] = c;
        };
        g.prototype.asHasProperty = function(a, c, m) {
          if (g.prototype === this || !d.isNumeric(c)) {
            return Object.prototype.asHasProperty.call(this, a, c, m);
          }
          a = d.toNumber(c);
          return 0 <= a && a < this._length;
        };
        g.prototype.asNextName = function(a) {
          return a - 1;
        };
        g.prototype.asNextValue = function(a) {
          return this._buffer[this._offset + a - 1];
        };
        g.prototype.asNextNameIndex = function(a) {
          a += 1;
          return a <= this._length ? a : 0;
        };
        g.prototype.asHasNext2 = function(a) {
          a.index = this.asNextNameIndex(a.index);
        };
        g.EXTRA_CAPACITY = 4;
        g.INITIAL_CAPACITY = 10;
        g.DEFAULT_VALUE = 0;
        g.DESCENDING = 2;
        g.UNIQUESORT = 4;
        g.RETURNINDEXEDARRAY = 8;
        g.instanceConstructor = g;
        g.staticNatives = [g];
        g.instanceNatives = [g.prototype];
        g.callableConstructor = g.callable;
        g.classInitializer = function() {
          var a = g.prototype;
          n(a, "$Bgjoin", a.join);
          n(a, "$BgtoString", a.join);
          n(a, "$BgtoLocaleString", a.toLocaleString);
          n(a, "$Bgpop", a.pop);
          n(a, "$Bgpush", a.push);
          n(a, "$Bgreverse", a.reverse);
          n(a, "$Bgconcat", a.concat);
          n(a, "$Bgsplice", a.splice);
          n(a, "$Bgslice", a.slice);
          n(a, "$Bgshift", a.shift);
          n(a, "$Bgunshift", a.unshift);
          n(a, "$BgindexOf", a.indexOf);
          n(a, "$BglastIndexOf", a.lastIndexOf);
          n(a, "$BgforEach", a.forEach);
          n(a, "$Bgmap", a.map);
          n(a, "$Bgfilter", a.filter);
          n(a, "$Bgsome", a.some);
          n(a, "$Bgevery", a.every);
          n(a, "$Bgsort", a.sort);
        };
        return g;
      }(a.ASVector);
      a.Uint32Vector = l;
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var n = d.ObjectUtilities.defineNonEnumerableProperty, w = d.AVM2.Runtime.throwError, v = d.AVM2.Runtime.asCheckVectorGetNumericProperty, u = d.AVM2.Runtime.asCheckVectorSetNumericProperty, l = function(a) {
        function g(a, c) {
          void 0 === a && (a = 0);
          void 0 === c && (c = !1);
          a >>>= 0;
          this._fixed = !!c;
          this._buffer = new Float64Array(Math.max(g.INITIAL_CAPACITY, a + g.EXTRA_CAPACITY));
          this._offset = 0;
          this._length = a;
        }
        __extends(g, a);
        g.prototype.newThisType = function() {
          return new g;
        };
        g.callable = function(a) {
          if (a instanceof g) {
            return a;
          }
          var c = a.asGetProperty(void 0, "length");
          if (void 0 !== c) {
            for (var m = new g(c, !1), h = 0;h < c;h++) {
              m.asSetNumericProperty(h, a.asGetPublicProperty(h));
            }
            return m;
          }
          d.Debug.unexpected();
        };
        g.prototype.internalToString = function() {
          for (var a = "", c = this._offset, g = c + this._length, h = 0;h < this._buffer.length;h++) {
            h === c && (a += "["), h === g && (a += "]"), a += this._buffer[h], h < this._buffer.length - 1 && (a += ",");
          }
          this._offset + this._length === this._buffer.length && (a += "]");
          return a + ": offset: " + this._offset + ", length: " + this._length + ", capacity: " + this._buffer.length;
        };
        g.prototype.toString = function() {
          for (var a = "", c = 0;c < this._length;c++) {
            a += this._buffer[this._offset + c], c < this._length - 1 && (a += ",");
          }
          return a;
        };
        g.prototype.toLocaleString = function() {
          for (var a = "", c = 0;c < this._length;c++) {
            a += this._buffer[this._offset + c], c < this._length - 1 && (a += ",");
          }
          return a;
        };
        g.prototype._view = function() {
          return this._buffer.subarray(this._offset, this._offset + this._length);
        };
        g.prototype._ensureCapacity = function(a) {
          var c = this._offset + a;
          c < this._buffer.length || (a <= this._buffer.length ? (c = this._buffer.length - a >> 2, this._buffer.set(this._view(), c), this._offset = c) : (a = (3 * this._buffer.length >> 1) + 1, a < c && (a = c), c = new Float64Array(a), c.set(this._buffer, 0), this._buffer = c));
        };
        g.prototype.concat = function() {
          for (var a = this._length, c = 0;c < arguments.length;c++) {
            var m = arguments[c];
            m._buffer instanceof Float64Array || w("TypeError", k.Errors.CheckTypeFailedError, m.constructor.name, "__AS3__.vec.Vector.<Number>");
            a += m._length;
          }
          var a = new g(a), h = a._buffer;
          h.set(this._buffer);
          for (var f = this._length, c = 0;c < arguments.length;c++) {
            m = arguments[c], f + m._buffer.length < m._buffer.length ? h.set(m._buffer, f) : h.set(m._buffer.subarray(0, m._length), f), f += m._length;
          }
          return a;
        };
        g.prototype.every = function(a, c) {
          for (var g = 0;g < this._length;g++) {
            if (!a.call(c, this._buffer[this._offset + g], g, this)) {
              return !1;
            }
          }
          return !0;
        };
        g.prototype.filter = function(a, c) {
          for (var m = new g, h = 0;h < this._length;h++) {
            a.call(c, this._buffer[this._offset + h], h, this) && m.push(this._buffer[this._offset + h]);
          }
          return m;
        };
        g.prototype.some = function(a, c) {
          2 !== arguments.length ? w("ArgumentError", k.Errors.WrongArgumentCountError) : d.isFunction(a) || w("ArgumentError", k.Errors.CheckTypeFailedError);
          for (var g = 0;g < this._length;g++) {
            if (a.call(c, this._buffer[this._offset + g], g, this)) {
              return !0;
            }
          }
          return !1;
        };
        g.prototype.forEach = function(a, c) {
          for (var g = 0;g < this._length;g++) {
            a.call(c, this._buffer[this._offset + g], g, this);
          }
        };
        g.prototype.join = function(a) {
          void 0 === a && (a = ",");
          for (var c = this.length, g = this._buffer, h = this._offset, f = "", b = 0;b < c - 1;b++) {
            f += g[h + b] + a;
          }
          0 < c && (f += g[h + c - 1]);
          return f;
        };
        g.prototype.indexOf = function(a, c) {
          void 0 === c && (c = 0);
          var g = this._length, h = c | 0;
          if (0 > h) {
            h += g, 0 > h && (h = 0);
          } else {
            if (h >= g) {
              return -1;
            }
          }
          for (var f = this._buffer, g = this._length, b = this._offset, g = b + g, h = h + b;h < g;h++) {
            if (f[h] === a) {
              return h - b;
            }
          }
          return -1;
        };
        g.prototype.lastIndexOf = function(a, c) {
          void 0 === c && (c = 2147483647);
          var g = this._length, h = c | 0;
          if (0 > h) {
            if (h += g, 0 > h) {
              return -1;
            }
          } else {
            h >= g && (h = g);
          }
          for (var g = this._buffer, f = this._offset, h = h + f;h-- > f;) {
            if (g[h] === a) {
              return h - f;
            }
          }
          return -1;
        };
        g.prototype.map = function(a, c) {
          d.isFunction(a) || w("ArgumentError", k.Errors.CheckTypeFailedError);
          for (var m = new g, h = 0;h < this._length;h++) {
            m.push(a.call(c, this._buffer[this._offset + h], h, this));
          }
          return m;
        };
        g.prototype.push = function(a, c, g, h, f, b, e, r) {
          this._checkFixed();
          this._ensureCapacity(this._length + arguments.length);
          for (var p = 0;p < arguments.length;p++) {
            this._buffer[this._offset + this._length++] = arguments[p];
          }
        };
        g.prototype.pop = function() {
          this._checkFixed();
          if (0 === this._length) {
            return g.DEFAULT_VALUE;
          }
          this._length--;
          return this._buffer[this._offset + this._length];
        };
        g.prototype.reverse = function() {
          for (var a = this._offset, c = this._offset + this._length - 1, g = this._buffer;a < c;) {
            var h = g[a];
            g[a] = g[c];
            g[c] = h;
            a++;
            c--;
          }
          return this;
        };
        g.prototype.sort = function(a) {
          return 0 === arguments.length ? Array.prototype.sort.call(this._view()) : a instanceof Function ? Array.prototype.sort.call(this._view(), a) : (a | 0) & g.DESCENDING ? Array.prototype.sort.call(this._view(), function(a, c) {
            return c - a;
          }) : Array.prototype.sort.call(this._view(), function(a, c) {
            return a - c;
          });
        };
        g.prototype.shift = function() {
          this._checkFixed();
          if (0 === this._length) {
            return 0;
          }
          this._length--;
          return this._buffer[this._offset++];
        };
        g.prototype.unshift = function() {
          this._checkFixed();
          if (arguments.length) {
            this._ensureCapacity(this._length + arguments.length);
            this._slide(arguments.length);
            this._offset -= arguments.length;
            this._length += arguments.length;
            for (var a = 0;a < arguments.length;a++) {
              this._buffer[this._offset + a] = arguments[a];
            }
          }
        };
        g.prototype.slice = function(a, c) {
          void 0 === a && (a = 0);
          void 0 === c && (c = 2147483647);
          var m = this._buffer, h = this._length, f = Math.min(Math.max(a, 0), h), h = Math.min(Math.max(c, f), h), b = new g(h - f, this.fixed);
          b._buffer.set(m.subarray(this._offset + f, this._offset + h), b._offset);
          return b;
        };
        g.prototype.splice = function(a, c) {
          var m = this._buffer, h = this._length, f = Math.min(Math.max(a, 0), h), b = this._offset + f, e = Math.min(Math.max(c, 0), h - f), f = arguments.length - 2, r, p = new g(e, this.fixed);
          0 < e && (r = m.subarray(b, b + e), p._buffer.set(r, p._offset));
          this._ensureCapacity(h - e + f);
          m.set(m.subarray(b + e, h), b + f);
          this._length += f - e;
          for (h = 0;h < f;h++) {
            m[b + h] = arguments[h + 2];
          }
          return p;
        };
        g.prototype._slide = function(a) {
          this._buffer.set(this._view(), this._offset + a);
          this._offset += a;
        };
        Object.defineProperty(g.prototype, "length", {get:function() {
          return this._length;
        }, set:function(a) {
          a >>>= 0;
          if (a > this._length) {
            this._ensureCapacity(a);
            for (var c = this._offset + this._length, m = this._offset + a;c < m;c++) {
              this._buffer[c] = g.DEFAULT_VALUE;
            }
          }
          this._length = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(g.prototype, "fixed", {get:function() {
          return this._fixed;
        }, set:function(a) {
          this._fixed = !!a;
        }, enumerable:!0, configurable:!0});
        g.prototype._checkFixed = function() {
          this._fixed && w("RangeError", k.Errors.VectorFixedError);
        };
        g.prototype.asGetNumericProperty = function(a) {
          v(a, this._length);
          return this._buffer[this._offset + a];
        };
        g.prototype.asSetNumericProperty = function(a, c) {
          u(a, this._length, this._fixed);
          a === this._length && (this._ensureCapacity(this._length + 1), this._length++);
          this._buffer[this._offset + a] = c;
        };
        g.prototype.asHasProperty = function(a, c, m) {
          if (g.prototype === this || !d.isNumeric(c)) {
            return Object.prototype.asHasProperty.call(this, a, c, m);
          }
          a = d.toNumber(c);
          return 0 <= a && a < this._length;
        };
        g.prototype.asNextName = function(a) {
          return a - 1;
        };
        g.prototype.asNextValue = function(a) {
          return this._buffer[this._offset + a - 1];
        };
        g.prototype.asNextNameIndex = function(a) {
          a += 1;
          return a <= this._length ? a : 0;
        };
        g.prototype.asHasNext2 = function(a) {
          a.index = this.asNextNameIndex(a.index);
        };
        g.EXTRA_CAPACITY = 4;
        g.INITIAL_CAPACITY = 10;
        g.DEFAULT_VALUE = 0;
        g.DESCENDING = 2;
        g.UNIQUESORT = 4;
        g.RETURNINDEXEDARRAY = 8;
        g.instanceConstructor = g;
        g.staticNatives = [g];
        g.instanceNatives = [g.prototype];
        g.callableConstructor = g.callable;
        g.classInitializer = function() {
          var a = g.prototype;
          n(a, "$Bgjoin", a.join);
          n(a, "$BgtoString", a.join);
          n(a, "$BgtoLocaleString", a.toLocaleString);
          n(a, "$Bgpop", a.pop);
          n(a, "$Bgpush", a.push);
          n(a, "$Bgreverse", a.reverse);
          n(a, "$Bgconcat", a.concat);
          n(a, "$Bgsplice", a.splice);
          n(a, "$Bgslice", a.slice);
          n(a, "$Bgshift", a.shift);
          n(a, "$Bgunshift", a.unshift);
          n(a, "$BgindexOf", a.indexOf);
          n(a, "$BglastIndexOf", a.lastIndexOf);
          n(a, "$BgforEach", a.forEach);
          n(a, "$Bgmap", a.map);
          n(a, "$Bgfilter", a.filter);
          n(a, "$Bgsome", a.some);
          n(a, "$Bgevery", a.every);
          n(a, "$Bgsort", a.sort);
        };
        return g;
      }(a.ASVector);
      a.Float64Vector = l;
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      function n(b) {
        return b instanceof a.ASXML || b instanceof a.ASXMLList;
      }
      function w(b) {
        if (!(b instanceof a.ASXML)) {
          return String(b);
        }
        switch(b._kind) {
          case 3:
          ;
          case 2:
            return b._value;
          default:
            if (b.hasSimpleContent()) {
              for (var e = "", f = 0;f < b._children.length;f++) {
                var c = b._children[f];
                4 !== c._kind && 5 !== c._kind && (e += w(c));
              }
              return e;
            }
            return t(b);
        }
      }
      function v(b) {
        for (var a = 0, e;a < b.length && "&" !== (e = b[a]) && "<" !== e && ">" !== e;) {
          a++;
        }
        if (a >= b.length) {
          return b;
        }
        for (var f = b.substring(0, a);a < b.length;) {
          switch(e = b[a++], e) {
            case "&":
              f += "&amp;";
              break;
            case "<":
              f += "&lt;";
              break;
            case ">":
              f += "&gt;";
              break;
            default:
              f += e;
          }
        }
        return f;
      }
      function u(b) {
        for (var a = 0, e;a < b.length && "&" !== (e = b[a]) && "<" !== e && '"' !== e && "\n" !== e && "\r" !== e && "\t" !== e;) {
          a++;
        }
        if (a >= b.length) {
          return b;
        }
        for (var f = b.substring(0, a);a < b.length;) {
          switch(e = b[a++], e) {
            case "&":
              f += "&amp;";
              break;
            case "<":
              f += "&lt;";
              break;
            case '"':
              f += "&quot;";
              break;
            case "\n":
              f += "&#xA;";
              break;
            case "\r":
              f += "&#xD;";
              break;
            case "\t":
              f += "&#x9;";
              break;
            default:
              f += e;
          }
        }
        return f;
      }
      function l(b, a) {
        var e = b[a];
        return " " === e || "\n" === e || "\r" === e || "\t" === e;
      }
      function c(b) {
        for (var a = 0;a < b.length && l(b, a);) {
          a++;
        }
        if (a >= b.length) {
          return "";
        }
        for (var e = b.length - 1;l(b, e);) {
          e--;
        }
        return 0 === a && e === b.length - 1 ? b : b.substring(a, e + 1);
      }
      function g(b) {
        if (0 < b) {
          if (void 0 !== G[b]) {
            return G[b];
          }
          for (var a = "", e = 0;e < b;e++) {
            a += " ";
          }
          return G[b] = a;
        }
        return "";
      }
      function q(b) {
        for (var a = 1, e;;) {
          e = "_ns" + a;
          if (!b.some(function(b) {
            return b.prefix == e;
          })) {
            break;
          }
          a++;
        }
        return e;
      }
      function t(b, e, f) {
        if (null === b || void 0 === b) {
          throw new TypeError;
        }
        if (!(b instanceof T)) {
          return b instanceof X ? b._children.map(function(b) {
            return t(b, e);
          }).join(T.prettyPrinting ? "\n" : "") : v(String(b));
        }
        var h = T.prettyPrinting;
        f |= 0;
        var p = h ? g(f) : "";
        switch(b._kind) {
          case 3:
            return h ? p + v(c(b._value)) : v(b._value);
          case 2:
            return p + u(b._value);
          case 4:
            return p + "\x3c!--" + b._value + "--\x3e";
          case 5:
            return p + "<?" + b._name.localName + " " + b._value + "?>";
        }
        e = e || [];
        for (var r = [], m = 0;b._inScopeNamespaces && m < b._inScopeNamespaces.length;m++) {
          var d = b._inScopeNamespaces[m].prefix, l = b._inScopeNamespaces[m].uri;
          if (e.every(function(b) {
            return b.uri != l || b.prefix != d;
          })) {
            var C = new a.ASNamespace(d, l);
            r.push(C);
          }
        }
        var n = e.concat(r), C = b._name.getNamespace(n);
        void 0 === C.prefix && (m = q(n), m = new a.ASNamespace(m, C.uri), r.push(m), n.push(m));
        var k = (C.prefix ? C.prefix + ":" : "") + b._name.localName, p = p + ("<" + k);
        b._attributes && b._attributes.forEach(function(b) {
          b = b._name.getNamespace(n);
          if (void 0 === b.prefix) {
            var e = q(n);
            b = new a.ASNamespace(e, b.uri);
            r.push(b);
            n.push(b);
          }
        });
        for (m = 0;m < r.length;m++) {
          C = r[m], p += " " + (C.prefix ? "xmlns:" + C.prefix : "xmlns") + '="' + u(C.uri) + '"';
        }
        b._attributes && b._attributes.forEach(function(b) {
          var a = b._name, f = a.getNamespace(e);
          p += " " + (f.prefix ? f.prefix + ":" + a.localName : a.localName) + '="' + u(b._value) + '"';
        });
        if (0 === b.length()) {
          return p += "/>";
        }
        var p = p + ">", I = 1 < b._children.length || 1 === b._children.length && 3 !== b._children[0]._kind, B = h && I ? f + T.prettyIndent : 0;
        b._children.forEach(function(b, a) {
          h && I && (p += "\n");
          var e = t(b, n, B);
          p += e;
        });
        h && I && (p += "\n" + g(f));
        return p += "</" + k + ">";
      }
      function m(b) {
        if (null === b) {
          throw new TypeError(k.formatErrorMessage(k.Errors.ConvertNullToObjectError));
        }
        if (void 0 === b) {
          throw new TypeError(k.formatErrorMessage(k.Errors.ConvertUndefinedToObjectError));
        }
        if (b instanceof T) {
          return b;
        }
        if (b instanceof X) {
          return 1 !== b._children.length && k.Runtime.throwError("TypeError", k.Errors.XMLMarkupMustBeWellFormed), b._children[0];
        }
        b = L.parseFromString(D(b));
        var a = b.length();
        if (0 === a) {
          return C(3);
        }
        if (1 === a) {
          return b._children[0]._parent = null, b._children[0];
        }
        k.Runtime.throwError("TypeError", k.Errors.XMLMarkupMustBeWellFormed);
      }
      function h(b, a) {
        null === b && k.Runtime.throwError("TypeError", k.Errors.ConvertNullToObjectError);
        void 0 === b && k.Runtime.throwError("TypeError", k.Errors.ConvertUndefinedToObjectError);
        if (b instanceof T) {
          a.append(b);
        } else {
          var e = m('<parent xmlns="' + u(T.defaultNamespace) + '">' + b + "</parent>")._children;
          if (e) {
            for (var f = 0;f < e.length;f++) {
              var c = e[f];
              c._parent = null;
              a.append(c);
            }
          }
        }
      }
      function f(b) {
        void 0 !== b && null !== b && "boolean" !== typeof b && "number" !== typeof b || k.Runtime.throwError("TypeError", k.Errors.ConvertUndefinedToObjectError);
        if ("object" === typeof b) {
          if (b instanceof U) {
            return new a.ASQName(b.uri, b.localName, !0);
          }
          if (I.isQName(b)) {
            return U.fromMultiname(b);
          }
        }
        b = w(b);
        return new a.ASQName(void 0, b, !0);
      }
      function b(b) {
        if (void 0 === b) {
          return new a.ASQName("*");
        }
        if ("object" === typeof b && null !== b) {
          if (b instanceof U) {
            return b;
          }
          if (I.isQName(b)) {
            return U.fromMultiname(b);
          }
          var e;
          e = b instanceof T || b instanceof X ? w(b) : b instanceof I ? b.name : b.toString();
        } else {
          if ("string" === typeof b) {
            e = b;
          } else {
            throw new TypeError;
          }
        }
        return "@" === e[0] ? f(e.substring(1)) : new a.ASQName(void 0, e, !!(b.flags & 1));
      }
      function e(b) {
        return b instanceof U && !!(b.name.flags & 1);
      }
      function r(b, e, f) {
        return b && 1 === b.length && b[0] instanceof F && ("string" === typeof e || void 0 === e) ? new a.ASQName(b[0], e || "*", f) : e;
      }
      function p(b) {
        try {
          new a.ASQName(b);
        } catch (e) {
          return !1;
        }
        return !0;
      }
      function C(b, e, f, c) {
        var h = new a.ASXML;
        void 0 === b && (b = 3);
        void 0 === e && (e = "");
        void 0 === f && (f = "");
        h.init(b, e, f, c);
        return h;
      }
      var I = d.AVM2.ABC.Multiname, B = d.Debug.notImplemented, D = d.AVM2.Runtime.asCoerceString, M = d.ObjectUtilities.defineNonEnumerableProperty, E = d.ObjectUtilities.createPublicAliases, J = Object.prototype.asGetProperty, P = Object.prototype.asSetProperty, y = Object.prototype.asCallProperty, K = Object.prototype.asHasProperty, H = Object.prototype.asHasOwnProperty, A = Object.prototype.asDeleteProperty, z = Object.prototype.asGetEnumerableKeys;
      a.escapeElementValue = v;
      a.escapeAttributeValue = u;
      var G = [];
      a.isXMLName = p;
      d.AVM2.AS.Natives.isXMLName = p;
      var L = new function() {
        function b(a, e) {
          function f(b) {
            return b.replace(/&([^;]+);/g, function(b, a) {
              if ("#x" === a.substring(0, 2)) {
                return String.fromCharCode(parseInt(a.substring(2), 16));
              }
              if ("#" === a.substring(0, 1)) {
                return String.fromCharCode(parseInt(a.substring(1), 10));
              }
              switch(a) {
                case "lt":
                  return "<";
                case "gt":
                  return ">";
                case "amp":
                  return "&";
                case "quot":
                  return '"';
              }
              return b;
            });
          }
          function h() {
            for (var b = t.length - 1;0 <= b;--b) {
              if ("preserve" === t[b].space) {
                return !0;
              }
            }
            return !1;
          }
          function p() {
            for (var b = t.length - 1;0 <= b;--b) {
              if ("xmlns" in t[b]) {
                return t[b].xmlns;
              }
            }
            return "";
          }
          function g(b) {
            for (var a = t.length - 1;0 <= a;--a) {
              if (b in t[a].lookup) {
                return t[a].lookup[b];
              }
            }
          }
          function r(b, a) {
            var e = b.indexOf(":");
            if (0 <= e) {
              var f = b.substring(0, e), c = g(f);
              if (void 0 === c) {
                throw "Unknown namespace: " + f;
              }
              e = b.substring(e + 1);
              return {name:c + "::" + e, localName:e, prefix:f, namespace:c};
            }
            return a ? {name:b, localName:b, prefix:"", namespace:p()} : {name:b, localName:b, prefix:"", namespace:""};
          }
          function m(b, a) {
            function e() {
              for (;c < b.length && l(b, c);) {
                ++c;
              }
            }
            for (var c = a, h, p = [];c < b.length && !l(b, c) && ">" !== b[c] && "/" !== b[c];) {
              ++c;
            }
            h = b.substring(a, c);
            for (e();c < b.length && ">" !== b[c] && "/" !== b[c] && "?" !== b[c];) {
              e();
              for (var g = "", r = "";c < b.length && !l(b, c) && "=" !== b[c];) {
                g += b[c], ++c;
              }
              e();
              if ("=" !== b[c]) {
                throw "'=' expected";
              }
              ++c;
              e();
              r = b[c];
              if ('"' !== r && "'" !== r) {
                throw "Quote expected";
              }
              var d = b.indexOf(r, ++c);
              if (0 > d) {
                throw "Unexpected EOF[6]";
              }
              r = b.substring(c, d);
              p.push({name:g, value:f(r)});
              c = d + 1;
              e();
            }
            return {name:h, attributes:p, parsed:c - a};
          }
          function d(b, a) {
            for (var e = a, f;e < b.length && !l(b, e) && ">" !== b[e] && "/" !== b[e];) {
              ++e;
            }
            for (f = b.substring(a, e);e < b.length && l(b, e);) {
              ++e;
            }
            for (var c = e;e < b.length && ("?" !== b[e] || ">" != b[e + 1]);) {
              ++e;
            }
            return {name:f, value:b.substring(c, e), parsed:e - a};
          }
          for (var q = 0, t = [{namespaces:[], lookup:{xmlns:"http://www.w3.org/2000/xmlns/", xml:"http://www.w3.org/XML/1998/namespace"}, inScopes:T.defaultNamespace ? [{uri:T.defaultNamespace, prefix:""}] : [], space:"default", xmlns:T.defaultNamespace || ""}];q < a.length;) {
            var C = q;
            if ("<" === a[q]) {
              switch(++C, a[C]) {
                case "/":
                  ++C;
                  q = a.indexOf(">", C);
                  if (0 > q) {
                    throw "Unexpected EOF[1]";
                  }
                  C = r(a.substring(C, q), !0);
                  e.endElement(C);
                  t.pop();
                  C = q + 1;
                  break;
                case "?":
                  ++C;
                  q = d(a, C);
                  if ("?>" != a.substring(C + q.parsed, C + q.parsed + 2)) {
                    throw "Unexpected EOF[2]";
                  }
                  e.pi(q.name, q.value);
                  C += q.parsed + 2;
                  break;
                case "!":
                  if ("--" === a.substring(C + 1, C + 3)) {
                    q = a.indexOf("--\x3e", C + 3);
                    if (0 > q) {
                      throw "Unexpected EOF[3]";
                    }
                    e.comment(a.substring(C + 3, q));
                    C = q + 3;
                  } else {
                    if ("[CDATA[" === a.substring(C + 1, C + 8)) {
                      q = a.indexOf("]]\x3e", C + 8);
                      if (0 > q) {
                        throw "Unexpected EOF[4]";
                      }
                      e.cdata(a.substring(C + 8, q));
                      C = q + 3;
                    } else {
                      if ("DOCTYPE" === a.substring(C + 1, C + 8)) {
                        var n = a.indexOf("[", C + 8), k = !1, q = a.indexOf(">", C + 8);
                        if (0 > q) {
                          throw "Unexpected EOF[5]";
                        }
                        if (0 < n && q > n) {
                          q = a.indexOf("]>", C + 8);
                          if (0 > q) {
                            throw "Unexpected EOF[7]";
                          }
                          k = !0;
                        }
                        e.doctype(a.substring(C + 8, q + (k ? 1 : 0)));
                        C = q + (k ? 2 : 1);
                      } else {
                        throw "Unknown !tag";
                      }
                    }
                  }
                  break;
                default:
                  n = m(a, C);
                  k = !1;
                  if ("/>" === a.substring(C + n.parsed, C + n.parsed + 2)) {
                    k = !0;
                  } else {
                    if (">" !== a.substring(C + n.parsed, C + n.parsed + 1)) {
                      throw "Unexpected EOF[2]";
                    }
                  }
                  for (var I = {namespaces:[], lookup:Object.create(null)}, B = n.attributes, q = 0;q < B.length;++q) {
                    var v = B[q], u = v.name;
                    if ("xmlns:" === u.substring(0, 6)) {
                      u = u.substring(6), v = v.value, g(u) !== v && (I.lookup[u] = c(v), I.namespaces.push({uri:v, prefix:u})), delete B[q];
                    } else {
                      if ("xmlns" === u) {
                        v = v.value, p() !== v && (I.xmlns = c(v), I.namespaces.push({uri:v, prefix:""})), delete B[q];
                      } else {
                        if ("xml:" === u.substring(0, 4)) {
                          var w = u.substring(4);
                          if ("space" !== w && "lang" !== w && "base" !== w && "id" !== w) {
                            throw "Invalid xml attribute: " + u;
                          }
                          I[w] = c(v.value);
                        } else {
                          if ("xml" === u.substring(0, 3)) {
                            throw "Invalid xml attribute";
                          }
                        }
                      }
                    }
                  }
                  var D = [];
                  I.namespaces.forEach(function(b) {
                    b.prefix && I.lookup[b.prefix] !== b.uri || D.push(b);
                  });
                  t[t.length - 1].inScopes.forEach(function(b) {
                    (!b.prefix || b.prefix in I.lookup) && (b.prefix || "xmlns" in I) || D.push(b);
                  });
                  I.inScopes = D;
                  t.push(I);
                  u = [];
                  for (q = 0;q < B.length;++q) {
                    (v = B[q]) && u.push({name:r(v.name, !1), value:v.value});
                  }
                  e.beginElement(r(n.name, !0), u, D, k);
                  C += n.parsed + (k ? 2 : 1);
                  k && t.pop();
              }
            } else {
              for (;C++ < a.length && "<" !== a[C];) {
              }
              e.text(f(a.substring(q, C)), h());
            }
            q = C;
          }
        }
        this.parseFromString = function(e, f) {
          var h = C(1, "", "", ""), p = [];
          b(e, {beginElement:function(b, e, f, c) {
            var g = h;
            p.push(g);
            h = C(1, b.namespace, b.localName, b.prefix);
            for (b = 0;b < e.length;++b) {
              var r = e[b], m = C(2, r.name.namespace, r.name.localName, r.name.prefix);
              m._value = r.value;
              m._parent = h;
              h._attributes.push(m);
            }
            for (b = 0;b < f.length;++b) {
              e = f[b], e = new a.ASNamespace(e.prefix, e.uri), h._inScopeNamespaces.push(e);
            }
            g.insert(g.length(), h);
            c && (h = p.pop());
          }, endElement:function(b) {
            h = p.pop();
          }, text:function(b, a) {
            T.ignoreWhitespace && (b = c(b));
            if (!(0 === b.length || a && T.ignoreWhitespace)) {
              var e = C(3, "", "", void 0);
              e._value = b;
              h.insert(h.length(), e);
            }
          }, cdata:function(b) {
            var a = C(3, "", "", void 0);
            a._value = b;
            h.insert(h.length(), a);
          }, comment:function(b) {
            if (!T.ignoreComments) {
              var a = C(4, "", "", void 0);
              a._value = b;
              h.insert(h.length(), a);
            }
          }, pi:function(b, a) {
            if (!T.ignoreProcessingInstructions) {
              var e = C(5, "", b, void 0);
              e._value = a;
              h.insert(h.length(), e);
            }
          }, doctype:function(b) {
          }});
          return h;
        };
      }, F = function(b) {
        function e(b, a) {
          var f = "", c = "";
          0 !== arguments.length && (1 === arguments.length ? (f = b, d.isObject(f) && f instanceof e ? (c = f.prefix, f = f.uri) : d.isObject(f) && f instanceof U && null !== f.uri ? f = f.uri : (f = w(f), c = "" === f ? "" : void 0)) : (f = a, f = d.isObject(f) && f instanceof U && null !== f.uri ? f.uri : w(f), "" === f ? void 0 === b || "" === w(b) ? c = "" : k.Runtime.throwError("TypeError", k.Errors.XMLNamespaceWithPrefixAndNoURI, b) : c = void 0 === b ? void 0 : !1 === p(b) ? void 0 : w(b)));
          this._ns = Namespace.createNamespace(f, c);
        }
        __extends(e, b);
        e.prototype.equals = function(b) {
          return b instanceof e && b._ns.uri === this._ns.uri || "string" === typeof b && this._ns.uri === b;
        };
        Object.defineProperty(e.prototype, "prefix", {get:function() {
          return this._ns.prefix;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(e.prototype, "uri", {get:function() {
          return this._ns.uri;
        }, enumerable:!0, configurable:!0});
        e.prototype.toString = function() {
          return this === e.prototype ? "" : this._ns.uri;
        };
        e.prototype.valueOf = function() {
          return this === e.prototype ? "" : this._ns.uri;
        };
        e.staticNatives = null;
        e.instanceNatives = null;
        e.instanceConstructor = e;
        e.classInitializer = function() {
          M(this, "$Bglength", 2);
          var b = e.prototype;
          M(b, "$BgtoString", b.toString);
        };
        e.callableConstructor = function(b, f) {
          if (1 === arguments.length && d.isObject(b) && b instanceof e) {
            return b;
          }
          switch(arguments.length) {
            case 0:
              return new a.ASNamespace;
            case 1:
              return new a.ASNamespace(b);
            default:
              return new a.ASNamespace(b, f);
          }
        };
        return e;
      }(a.ASObject);
      a.ASNamespace = F;
      var S;
      (function(b) {
        b[b.ATTR_NAME = 1] = "ATTR_NAME";
        b[b.ELEM_NAME = 2] = "ELEM_NAME";
        b[b.ANY_NAME = 4] = "ANY_NAME";
        b[b.ANY_NAMESPACE = 8] = "ANY_NAMESPACE";
      })(S || (S = {}));
      var U = function(b) {
        function e(b, f, c) {
          var h, p;
          0 === arguments.length ? h = "" : 1 === arguments.length ? h = b : (p = b, h = f);
          if (d.isObject(h) && h instanceof e) {
            if (2 > arguments.length) {
              return h;
            }
            h = h.localName;
          }
          h = void 0 === h || 0 === arguments.length ? "" : w(h);
          if (void 0 === p || 2 > arguments.length) {
            p = "*" === h ? null : new a.ASNamespace("", T.defaultNamespace);
          }
          var g = h;
          null !== p && (p = p instanceof F ? p : new a.ASNamespace(p));
          var r = c ? 1 : 2;
          "*" === h && (r |= 4);
          null === p && (r |= 8);
          this.name = new I([p ? p._ns : null], g, r);
        }
        __extends(e, b);
        e.fromMultiname = function(b) {
          var a = Object.create(e.prototype);
          a.name = b;
          return a;
        };
        e.prototype.equals = function(b) {
          return b instanceof e && b.uri === this.uri && b.name.name === this.name.name || "string" === typeof b && this.toString() === b;
        };
        Object.defineProperty(e.prototype, "localName", {get:function() {
          return this.name.name;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(e.prototype, "uri", {get:function() {
          return this.name.namespaces[0] ? this.name.namespaces[0].uri : null;
        }, enumerable:!0, configurable:!0});
        e.prototype.setUri = function() {
          this.name.namespaces[0] || this.name.namespaces.push(Namespace.createNamespace(""));
          this.name.namespaces[0].uri = "";
        };
        e.prototype.ecmaToString = function() {
          if (this === e.dynamicPrototype) {
            return "";
          }
          this instanceof a.ASQName || throwError("TypeError", k.Errors.InvokeOnIncompatibleObjectError, "QName.prototype.toString");
          return this.toString();
        };
        e.prototype.toString = function() {
          var b = this.uri;
          if ("" === b) {
            return this.name.name;
          }
          if (null === b) {
            return "*::" + this.name.name;
          }
          var a = b.charCodeAt(b.length - 1), e = b;
          57344 <= a && 63743 >= a && (e = b.substr(0, b.length - 1));
          return "" === e ? this.name.name : e + "::" + this.name.name;
        };
        e.prototype.valueOf = function() {
          return this;
        };
        Object.defineProperty(e.prototype, "prefix", {get:function() {
          return this.name.namespaces[0] ? this.name.namespaces[0].prefix : null;
        }, enumerable:!0, configurable:!0});
        e.prototype.getNamespace = function(b) {
          if (null === this.uri) {
            throw "TypeError in QName.prototype.getNamespace()";
          }
          b || (b = []);
          for (var e, f = 0;f < b.length;f++) {
            this.uri === b[f].uri && (e = b[f]);
          }
          e || (e = new a.ASNamespace(this.prefix, this.uri));
          return e;
        };
        Object.defineProperty(e.prototype, "flags", {get:function() {
          return this.name.flags;
        }, enumerable:!0, configurable:!0});
        e.classInitializer = function() {
          M(this, "$Bglength", 2);
          var b = e.prototype;
          M(b, "$BgtoString", b.ecmaToString);
        };
        e.callableConstructor = function(b, f) {
          if (1 === arguments.length && d.isObject(b) && b instanceof e) {
            return b;
          }
          switch(arguments.length) {
            case 0:
              return new a.ASQName;
            case 1:
              return new a.ASQName(b);
            default:
              return new a.ASQName(b, f);
          }
        };
        return e;
      }(a.ASNative);
      a.ASQName = U;
      var N;
      (function(b) {
        b[b.FLAG_IGNORE_COMMENTS = 1] = "FLAG_IGNORE_COMMENTS";
        b[b.FLAG_IGNORE_PROCESSING_INSTRUCTIONS = 2] = "FLAG_IGNORE_PROCESSING_INSTRUCTIONS";
        b[b.FLAG_IGNORE_WHITESPACE = 4] = "FLAG_IGNORE_WHITESPACE";
        b[b.FLAG_PRETTY_PRINTING = 8] = "FLAG_PRETTY_PRINTING";
        b[b.ALL = b.FLAG_IGNORE_COMMENTS | b.FLAG_IGNORE_PROCESSING_INSTRUCTIONS | b.FLAG_IGNORE_WHITESPACE | b.FLAG_PRETTY_PRINTING] = "ALL";
      })(N || (N = {}));
      (function(b) {
        b[b.Unknown = 0] = "Unknown";
        b[b.Element = 1] = "Element";
        b[b.Attribute = 2] = "Attribute";
        b[b.Text = 3] = "Text";
        b[b.Comment = 4] = "Comment";
        b[b.ProcessingInstruction = 5] = "ProcessingInstruction";
      })(a.ASXMLKind || (a.ASXMLKind = {}));
      var R = [null, "element", "attribute", "text", "comment", "processing-instruction"], T = function(f) {
        function c(b) {
          this._parent = null;
          d.isNullOrUndefined(b) && (b = "");
          if ("string" === typeof b && 0 === b.length) {
            this._kind = 3, this._value = "";
          } else {
            var a = m(b);
            n(b) && (a = a._deepCopy());
            return a;
          }
        }
        __extends(c, f);
        c.native_settings = function() {
          return {$BgignoreComments:c.ignoreComments, $BgignoreProcessingInstructions:c.ignoreProcessingInstructions, $BgignoreWhitespace:c.ignoreWhitespace, $BgprettyPrinting:c.prettyPrinting, $BgprettyIndent:c.prettyIndent};
        };
        c.native_setSettings = function(b) {
          d.isNullOrUndefined(b) ? (c.ignoreComments = !0, c.ignoreProcessingInstructions = !0, c.ignoreWhitespace = !0, c.prettyPrinting = !0, c.prettyIndent = 2) : ("boolean" === typeof b.$BgignoreComments && (c.ignoreComments = b.$BgignoreComments), "boolean" === typeof b.$BgignoreProcessingInstructions && (c.ignoreProcessingInstructions = b.$BgignoreProcessingInstructions), "boolean" === typeof b.$BgignoreWhitespace && (c.ignoreWhitespace = b.$BgignoreWhitespace), "boolean" === b.$BgprettyPrinting && 
          (c.prettyPrinting = b.$BgprettyPrinting), "number" === b.$BgprettyIndent && (c.prettyIndent = b.$BgprettyIndent));
        };
        c.native_defaultSettings = function() {
          return {$BgignoreComments:!0, $BgignoreProcessingInstructions:!0, $BgignoreWhitespace:!0, $BgprettyPrinting:!0, $BgprettyIndent:2};
        };
        c.prototype.valueOf = function() {
          return this;
        };
        c.prototype.equals = function(b) {
          return b instanceof X ? b.equals(this) : b instanceof c ? (3 === this._kind || 2 === this._kind) && b.hasSimpleContent() || (3 === b._kind || 2 === b._kind) && this.hasSimpleContent() ? this.toString() === b.toString() : this._deepEquals(b) : this.hasSimpleContent() && this.toString() === D(b);
        };
        c.prototype.init = function(b, e, f, c) {
          e = e || c ? new a.ASNamespace(c, e) : void 0;
          this._name = new a.ASQName(e, f, 2 === b);
          this._kind = b;
          this._parent = null;
          switch(b) {
            case 1:
              this._inScopeNamespaces = [];
              this._attributes = [];
              this._children = [];
              break;
            case 4:
            ;
            case 5:
            ;
            case 2:
            ;
            case 3:
              this._value = "";
          }
          return this;
        };
        c.prototype._deepEquals = function(b) {
          if (!(b instanceof c) || this._kind !== b._kind || !!this._name !== !!b._name || this._name && !this._name.equals(b._name)) {
            return !1;
          }
          if (1 !== this._kind) {
            return this._value !== b._value ? !1 : !0;
          }
          var a = this._attributes, e = b._attributes;
          if (a.length !== e.length) {
            return !1;
          }
          var f = this._children;
          b = b._children;
          if (f.length !== b.length) {
            return !1;
          }
          var h = 0;
          a: for (;h < a.length;h++) {
            for (var p = a[h], g = 0;g < e.length;g++) {
              var r = e[g];
              if (r._name.equals(p._name) && r._value === p._value) {
                continue a;
              }
            }
            return !1;
          }
          for (h = 0;h < f.length;h++) {
            if (!f[h].equals(b[h])) {
              return !1;
            }
          }
          return !0;
        };
        c.prototype._deepCopy = function() {
          var b = this._kind, e = new a.ASXML;
          e._kind = b;
          e._name = this._name;
          switch(b) {
            case 1:
              e._inScopeNamespaces = [];
              0 < this._inScopeNamespaces.length && this._inScopeNamespaces.forEach(function(b) {
                e._inScopeNamespaces.push(new a.ASNamespace(b.prefix, b.uri));
              });
              e._attributes = this._attributes.map(function(b) {
                b = b._deepCopy();
                b._parent = e;
                return b;
              });
              e._children = this._children.map(function(b) {
                b = b._deepCopy();
                b._parent = e;
                return b;
              });
              break;
            case 4:
            ;
            case 5:
            ;
            case 2:
            ;
            case 3:
              e._value = this._value;
          }
          return e;
        };
        c.prototype.resolveValue = function() {
          return this;
        };
        c.prototype._addInScopeNamespaces = function(b) {
          this._inScopeNamespaces.some(function(a) {
            return a.uri === b.uri && a.prefix === b.prefix;
          }) || this._inScopeNamespaces.push(b);
        };
        Object.defineProperty(c, "ignoreComments", {get:function() {
          return !!(c._flags & 1);
        }, set:function(b) {
          c._flags = b ? c._flags | 1 : c._flags & -2;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(c, "ignoreProcessingInstructions", {get:function() {
          return !!(c._flags & 2);
        }, set:function(b) {
          c._flags = b ? c._flags | 2 : c._flags & -3;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(c, "ignoreWhitespace", {get:function() {
          return !!(c._flags & 4);
        }, set:function(b) {
          c._flags = b ? c._flags | 4 : c._flags & -5;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(c, "prettyPrinting", {get:function() {
          return !!(c._flags & 8);
        }, set:function(b) {
          c._flags = b ? c._flags | 8 : c._flags & -9;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(c, "prettyIndent", {get:function() {
          return c._prettyIndent;
        }, set:function(b) {
          c._prettyIndent = b | 0;
        }, enumerable:!0, configurable:!0});
        c.prototype.toString = function() {
          return c.isTraitsOrDynamicPrototype(this) ? "" : this.hasComplexContent() ? this.toXMLString() : w(this);
        };
        c.prototype.native_hasOwnProperty = function(e) {
          if (c.isTraitsOrDynamicPrototype(this)) {
            return a.ASObject.prototype.native_hasOwnProperty.call(this, e);
          }
          var f = b(e);
          return this.hasProperty(f, !!(f.flags & 1), !1) ? !0 : H.call(this, String(e));
        };
        c.prototype.native_propertyIsEnumerable = function(b) {
          void 0 === b && (b = void 0);
          return "0" === String(b);
        };
        c.prototype.addNamespace = function(b) {
          this instanceof c || k.Runtime.throwError("TypeError", k.Errors.CheckTypeFailedError, this, "XML");
          this._addInScopeNamespaces(new a.ASNamespace(b));
          return this;
        };
        c.prototype.appendChild = function(b) {
          this instanceof c || k.Runtime.throwError("TypeError", k.Errors.CheckTypeFailedError, this, "XML");
          if (b._parent) {
            var a = b._parent._children.indexOf(b);
            b._parent._children.splice(a, 1);
          }
          this._children.push(b);
          b._parent = this;
          return this;
        };
        c.prototype.attribute = function(b) {
          this instanceof c || k.Runtime.throwError("TypeError", k.Errors.CheckTypeFailedError, this, "XML");
          return this.getProperty(b, !0);
        };
        c.prototype.attributes = function() {
          this instanceof c || k.Runtime.throwError("TypeError", k.Errors.CheckTypeFailedError, this, "XML");
          var b = a.ASXMLList.createList(this, this._name);
          Array.prototype.push.apply(b._children, this._attributes);
          return b;
        };
        c.prototype.child = function(b) {
          this instanceof c || k.Runtime.throwError("TypeError", k.Errors.CheckTypeFailedError, this, "XML");
          if (d.isIndex(b)) {
            var f = a.ASXMLList.createList();
            this._children && b < this._children.length && f.append(this._children[b | 0]);
            return f;
          }
          return this.getProperty(b, e(b));
        };
        c.prototype.childIndex = function() {
          this instanceof c || k.Runtime.throwError("TypeError", k.Errors.CheckTypeFailedError, this, "XML");
          return this._parent && 2 !== this._kind ? this._parent._children.indexOf(this) : -1;
        };
        c.prototype.children = function() {
          this instanceof c || k.Runtime.throwError("TypeError", k.Errors.CheckTypeFailedError, this, "XML");
          var b = a.ASXMLList.createList(this, this._name);
          Array.prototype.push.apply(b._children, this._children);
          return b;
        };
        c.prototype.comments = function() {
          this instanceof c || k.Runtime.throwError("TypeError", k.Errors.CheckTypeFailedError, this, "XML");
          var b = a.ASXMLList.createList(this, this._name);
          this._children && this._children.forEach(function(a, e) {
            4 === a._kind && b.append(a);
          });
          return b;
        };
        c.prototype.contains = function(b) {
          this instanceof c || k.Runtime.throwError("TypeError", k.Errors.CheckTypeFailedError, this, "XML");
          return this === b;
        };
        c.prototype.copy = function() {
          this instanceof c || k.Runtime.throwError("TypeError", k.Errors.CheckTypeFailedError, this, "XML");
          return this._deepCopy();
        };
        c.prototype.descendants = function(e) {
          void 0 === e && (e = "*");
          this instanceof c || k.Runtime.throwError("TypeError", k.Errors.CheckTypeFailedError, this, "XML");
          var f = a.ASXMLList.createList(this, this._name);
          e = b(e);
          return this.descendantsInto(e, f);
        };
        c.prototype.elements = function(b) {
          void 0 === b && (b = "*");
          this instanceof c || k.Runtime.throwError("TypeError", k.Errors.CheckTypeFailedError, this, "XML");
          return this.getProperty(b, !1);
        };
        c.prototype.hasComplexContent = function() {
          this instanceof c || k.Runtime.throwError("TypeError", k.Errors.CheckTypeFailedError, this, "XML");
          return 2 === this._kind || 4 === this._kind || 5 === this._kind || 3 === this._kind ? !1 : this._children.some(function(b) {
            return 1 === b._kind;
          });
        };
        c.prototype.hasSimpleContent = function() {
          this instanceof c || k.Runtime.throwError("TypeError", k.Errors.CheckTypeFailedError, this, "XML");
          return 4 === this._kind || 5 === this._kind ? !1 : 1 !== this._kind || !this._children && 0 === this._children.length ? !0 : this._children.every(function(b) {
            return 1 !== b._kind;
          });
        };
        c.prototype.inScopeNamespaces = function() {
          this instanceof c || k.Runtime.throwError("TypeError", k.Errors.CheckTypeFailedError, this, "XML");
          return this._inScopeNamespacesImpl(!1);
        };
        c.prototype._inScopeNamespacesImpl = function(b) {
          var a = this, e = [];
          for (b = b ? e : {};null !== a;) {
            for (var f = a._inScopeNamespaces, c = 0;f && c < f.length;c++) {
              var h = f[c];
              b[h.prefix] || (b[h.prefix] = h, e.push(h));
            }
            a = a._parent;
          }
          return e;
        };
        c.prototype.insertChildAfter = function(b, a) {
          this instanceof c || k.Runtime.throwError("TypeError", k.Errors.CheckTypeFailedError, this, "XML");
          B("public.XML::insertChildAfter");
        };
        c.prototype.insertChildBefore = function(b, a) {
          this instanceof c || k.Runtime.throwError("TypeError", k.Errors.CheckTypeFailedError, this, "XML");
          B("public.XML::insertChildBefore");
        };
        c.prototype.length = function() {
          this instanceof c || k.Runtime.throwError("TypeError", k.Errors.CheckTypeFailedError, this, "XML");
          return this._children ? this._children.length : 0;
        };
        c.prototype.localName = function() {
          this instanceof c || k.Runtime.throwError("TypeError", k.Errors.CheckTypeFailedError, this, "XML");
          return this._name.localName;
        };
        c.prototype.name = function() {
          this instanceof c || k.Runtime.throwError("TypeError", k.Errors.CheckTypeFailedError, this, "XML");
          return this._name;
        };
        c.prototype.namespace = function(b) {
          this instanceof c || k.Runtime.throwError("TypeError", k.Errors.CheckTypeFailedError, this, "XML");
          if (0 === arguments.length && 3 <= this._kind) {
            return null;
          }
          var a = this._inScopeNamespacesImpl(!0);
          if (0 === arguments.length) {
            return this._name.getNamespace(a);
          }
          b = D(b);
          for (var e = 0;e < a.length;e++) {
            var f = a[e];
            if (f.prefix === b) {
              return f;
            }
          }
        };
        c.prototype.namespaceDeclarations = function() {
          this instanceof c || k.Runtime.throwError("TypeError", k.Errors.CheckTypeFailedError, this, "XML");
          B("public.XML::namespaceDeclarations");
        };
        c.prototype.nodeKind = function() {
          this instanceof c || k.Runtime.throwError("TypeError", k.Errors.CheckTypeFailedError, this, "XML");
          return R[this._kind];
        };
        c.prototype.normalize = function() {
          this instanceof c || k.Runtime.throwError("TypeError", k.Errors.CheckTypeFailedError, this, "XML");
          for (var b = 0;b < this._children.length;) {
            var a = this._children[b];
            if (1 === a._kind) {
              a.normalize(), b++;
            } else {
              if (3 === a._kind) {
                for (b++;b < this._children.length;) {
                  var e = this._children[b];
                  if (3 !== e._kind) {
                    break;
                  }
                  a._value += e._value;
                  this.removeByIndex(b);
                }
                0 === a._value.length ? this.removeByIndex(b) : b++;
              } else {
                b++;
              }
            }
          }
          return this;
        };
        c.prototype.removeByIndex = function(b) {
          this._children[b]._parent = null;
          this._children.splice(b, 1);
        };
        c.prototype.parent = function() {
          return this._parent || void 0;
        };
        c.prototype.processingInstructions = function(e) {
          void 0 === e && (e = "*");
          var f = b(e).localName, c = a.ASXMLList.createList(this, this._name);
          c._targetObject = this;
          c._targetProperty = null;
          return this.processingInstructionsInto(e, f, c);
        };
        c.prototype.processingInstructionsInto = function(b, a, e) {
          var f = this._children;
          if (!f) {
            return e;
          }
          for (var c = 0;c < f.length;c++) {
            var h = f[c];
            5 !== h._kind || "*" !== b && h._name.localName !== a || e._children.push(h);
          }
          return e;
        };
        c.prototype.prependChild = function(b) {
          B("public.XML::prependChild");
        };
        c.prototype.removeNamespace = function(b) {
          B("public.XML::removeNamespace");
        };
        c.prototype.replace = function(b, a) {
          var e, f = this;
          if (3 === f._kind || 4 === f._kind || 5 === f._kind || 2 === f._kind) {
            return f;
          }
          if (1 === a._kind) {
            for (e = f;e;) {
              if (e === a) {
                throw "Error in XML.prototype.replace()";
              }
              e = e._parent;
            }
          }
          e = b >>> 0;
          if (String(b) === String(e)) {
            e >= f.length() && (b = String(f.length())), f._children && f._children[b] && (f._children[b]._parent = null);
          } else {
            e = this.getProperty(b, !1);
            if (0 === e.length()) {
              return f;
            }
            f._children && e._children.forEach(function(a, e) {
              var c = f._children.indexOf(a);
              a._parent = null;
              0 === e ? (b = String(c), f._children.splice(c, 1, void 0)) : f._children.splice(c, 1);
            });
          }
          if (1 === a._kind || 3 === a._kind || 4 === a._kind || 5 === a._kind) {
            a._parent = f, f._children || (f._children = []), f._children[b] = a;
          } else {
            e = w(a);
            var c = C();
            c._parent = f;
            c._value = e;
            f._children || (f._children = []);
            f._children[b] = c;
          }
          return f;
        };
        c.prototype.setChildren = function(b) {
          this.setProperty("*", !1, b);
          return this;
        };
        c.prototype.setLocalName = function(b) {
          B("public.XML::setLocalName");
        };
        c.prototype.setName = function(b) {
          if (3 !== this._kind && 4 !== this._kind) {
            b instanceof a.ASQName && null === b.uri && (b = b.localName);
            b = new U(b);
            5 === this._kind && b.setUri();
            this._name = b;
            var e = this;
            if (2 === this._kind) {
              if (null === this._parent) {
                return;
              }
              e = this._parent;
            }
            e.addInScopeNamespace(new a.ASNamespace(b.uri));
          }
        };
        c.prototype.setNamespace = function(b) {
          B("public.XML::setNamespace");
        };
        c.prototype.text = function() {
          var b = a.ASXMLList.createList(this, this._name);
          this._children && this._children.forEach(function(a, e) {
            3 === a._kind && b.append(a);
          });
          return b;
        };
        c.prototype.toXMLString = function() {
          return t(this);
        };
        c.prototype.toJSON = function(b) {
          return "XML";
        };
        c.isTraitsOrDynamicPrototype = function(b) {
          return b === c.traitsPrototype || b === c.dynamicPrototype;
        };
        c.prototype.asGetEnumerableKeys = function() {
          if (c.isTraitsOrDynamicPrototype(this)) {
            return z.call(this);
          }
          var b = [];
          this._children.forEach(function(a, e) {
            b.push(a.name);
          });
          return b;
        };
        c.prototype.setProperty = function(e, f, c) {
          e === e >>> 0 && k.Runtime.throwError("TypeError", k.Errors.XMLAssignmentToIndexedXMLNotAllowed);
          if (3 !== this._kind && 4 !== this._kind && 5 !== this._kind && 2 !== this._kind) {
            if (c = n(c) && 3 !== c._kind && 2 !== c._kind ? c._deepCopy() : w(c), e = b(e), f) {
              if (p(e.name)) {
                if (c instanceof a.ASXMLList) {
                  if (0 === c._children.length) {
                    c = "";
                  } else {
                    f = w(c._children[0]);
                    for (var h = 1;h < c._children.length;h++) {
                      f += " " + w(c._children[h]);
                    }
                    c = f;
                  }
                } else {
                  c = D(c);
                }
                f = null;
                for (var g = this._attributes, r = this._attributes = [], h = 0;g && h < g.length;h++) {
                  var m = g[h];
                  if (m._name.equals(e)) {
                    if (f) {
                      m._parent = null;
                      continue;
                    } else {
                      f = m;
                    }
                  }
                  r.push(m);
                }
                f || (f = C(2, e.uri, e.localName), f._parent = this, r.push(f));
                f._value = c;
              }
            } else {
              f = !n(c) && "*" !== e.localName;
              g = e.flags & 4;
              r = e.flags & 8;
              for (m = this.length() - 1;0 <= m;m--) {
                (g || 1 === this._children[m]._kind && this._children[m]._name.localName === e.localName) && (r || 1 === this._children[m]._kind && this._children[m]._name.uri === e.uri) && (void 0 !== h && this.deleteByIndex(h), h = m);
              }
              void 0 === h && (h = this.length(), f && (g = null === e.uri ? new a.ASQName(new a.ASNamespace("", T.defaultNamespace), e) : new a.ASQName(e), e = C(1, g.uri, g.localName, g.prefix), e._parent = this, g = g.getNamespace(), this.replace(String(h), e), e.addInScopeNamespace(g)));
              f ? (this._children[h]._children = [], f = w(c), "" !== f && this._children[h].replace("0", f)) : this.replace(String(h), c);
            }
          }
        };
        c.prototype.asSetProperty = function(b, a, e, f) {
          if (c.isTraitsOrDynamicPrototype(this)) {
            return P.call(this, b, a, e, f);
          }
          e = !!(e & I.ATTRIBUTE);
          this.setProperty(r(b, a, e), e, f);
        };
        c.prototype.getProperty = function(e, f) {
          if (d.isIndex(e) || !I.isQName(e) && d.isNumeric(e)) {
            return 0 === (e | 0) ? this : null;
          }
          var c = b(e), h = a.ASXMLList.createList(this, this._name);
          h._targetObject = this;
          h._targetProperty = c;
          var p = 0, g = c.name.flags, r = g & 4, m = g & 8;
          if (f || g & 1) {
            for (g = 0;this._attributes && g < this._attributes.length;g++) {
              var l = this._attributes[g];
              !r && l._name.localName !== c.localName || !m && l._name.uri !== c.uri || (h._children[p++] = l);
            }
            return h;
          }
          for (g = 0;this._children && g < this._children.length;g++) {
            l = this._children[g], (r || 1 === l._kind && l._name.localName === c.localName) && (m || 1 === l._kind && l._name.uri === c.uri) && (h._children[p++] = l);
          }
          return h;
        };
        c.prototype.asGetNumericProperty = function(b) {
          return this.asGetProperty(null, b, 0);
        };
        c.prototype.asSetNumericProperty = function(b, a) {
          this.asSetProperty(null, b, 0, a);
        };
        c.prototype.asGetProperty = function(b, a, e) {
          if (c.isTraitsOrDynamicPrototype(this)) {
            return J.call(this, b, a, e);
          }
          e = !!(e & I.ATTRIBUTE);
          return this.getProperty(r(b, a, e), e);
        };
        c.prototype.hasProperty = function(a, e, f) {
          if (f) {
            return e = I.isQName(a) ? a : this.resolveMultinameProperty(a.namespaces, a.name, a.flags), !!this[I.getQualifiedName(e)];
          }
          if (d.isIndex(a)) {
            return 0 === Number(a);
          }
          a = b(a);
          var c = a.name.flags;
          f = c & 4;
          c &= 8;
          if (e) {
            for (e = 0;this._attributes && e < this._attributes.length;e++) {
              var h = this._attributes[e];
              if (f || h._name.localName === a.localName && (c || h._name.uri === a.uri)) {
                return !0;
              }
            }
            return !1;
          }
          for (e = 0;e < this._children.length;e++) {
            if (h = this._children[e], (f || 1 === h._kind && h._name.localName === a.localName) && (c || 1 === h._kind && h._name.uri === a.uri)) {
              return !0;
            }
          }
        };
        c.prototype.deleteProperty = function(a, e) {
          if (d.isIndex(a)) {
            return !0;
          }
          var f = b(a), c = f.localName, h = f.uri, p = f.name.flags, g = p & 4, r = p & 8;
          if (e) {
            if (p = this._attributes) {
              for (var m = this._attributes = [], l = 0;l < p.length;l++) {
                var q = p[l], t = q._name;
                !g && t.localName !== c || !r && t.uri !== h ? m.push(q) : q._parent = null;
              }
            }
          } else {
            if (this._children.some(function(b, a) {
              return (g || 1 === b._kind && b._name.localName === f.localName) && (r || 1 === b._kind && b._name.uri === f.uri);
            })) {
              return !0;
            }
          }
        };
        c.prototype.asHasProperty = function(b, a, e) {
          if (c.isTraitsOrDynamicPrototype(this)) {
            return K.call(this, b, a, e);
          }
          var f = !!(e & I.ATTRIBUTE);
          a = r(b, a, f);
          if (this.hasProperty(a, f, !1)) {
            return !0;
          }
          b = I.isQName(a) ? a : this.resolveMultinameProperty(b, a, e);
          return !!this[I.getQualifiedName(b)];
        };
        c.prototype._asDeleteProperty = function(b, a, e) {
          if (c.isTraitsOrDynamicPrototype(this)) {
            return A.call(this, b, a, e);
          }
          var f = !!(e & I.ATTRIBUTE);
          a = r(b, a, f);
          if (this.deleteProperty(a, f)) {
            return !0;
          }
          b = I.isQName(a) ? a : this.resolveMultinameProperty(b, a, e);
          return delete this[I.getQualifiedName(b)];
        };
        c.prototype.asHasPropertyInternal = function(b, a, e) {
          return this.asHasProperty(b, a, e);
        };
        c.prototype.asCallProperty = function(b, a, e, f, h) {
          if (c.isTraitsOrDynamicPrototype(this) || f) {
            return y.call(this, b, a, e, f, h);
          }
          var p;
          p = this.resolveMultinameProperty(b, a, e);
          if (p = this.asOpenMethods[p] || this[p]) {
            return p.apply(f ? null : this, h);
          }
          if (this.hasSimpleContent()) {
            return Object(w(this)).asCallProperty(b, a, e, f, h);
          }
          throwError("TypeError", k.Errors.CallOfNonFunctionError, "value");
        };
        c.prototype._delete = function(b, a) {
          B("XML.[[Delete]]");
        };
        c.prototype.deleteByIndex = function(b) {
          if (String(b >>> 0) !== String(b)) {
            throw "TypeError in XML.prototype.deleteByIndex(): invalid index " + b;
          }
          var a = this._children;
          b < a.length && a[b] && (a[b]._parent = null, a.splice(b, 1));
        };
        c.prototype.insert = function(b, a) {
          var e, f;
          if (3 !== this._kind && 4 !== this._kind && 5 !== this._kind && 2 !== this._kind) {
            e = b >>> 0;
            if (String(b) !== String(e)) {
              throw "TypeError in XML.prototype.insert(): invalid property name " + b;
            }
            if (1 === this._kind) {
              for (f = this;f;) {
                if (f === a) {
                  throw "Error in XML.prototype.insert()";
                }
                f = f._parent;
              }
            }
            if (this instanceof X) {
              if (f = this.length(), 0 === f) {
                return;
              }
            } else {
              f = 1;
            }
            for (var c = this.length() - 1;c >= e;c--) {
              this._children[c + f] = this._children[c];
            }
            if (this instanceof X) {
              for (f = a.length(), c = 0;c < f;c++) {
                a._children[c]._parent = this, this[e + c] = a[c];
              }
            } else {
              a._parent = this, this._children || (this._children = []), this._children[e] = a;
            }
          }
        };
        c.prototype.addInScopeNamespace = function(b) {
          var a = this;
          if (3 !== a._kind && 4 !== a._kind && 5 !== a._kind && 2 !== a._kind && void 0 !== b.prefix && ("" !== b.prefix || "" !== a._name.uri)) {
            var e = null;
            a._inScopeNamespaces.forEach(function(a, f) {
              a.prefix === b.prefix && (e = a);
            });
            null !== e && e.uri !== b.uri && a._inScopeNamespaces.forEach(function(f, c) {
              f.prefix === e.prefix && (a._inScopeNamespaces[c] = b);
            });
            a._name.prefix === b.prefix && (a._name.prefix = void 0);
            a._attributes.forEach(function(a, e) {
              a._name.prefix === b.prefix && (a._name.prefix = void 0);
            });
          }
        };
        c.prototype.descendantsInto = function(b, a) {
          var e = b.flags;
          if (1 !== this._kind) {
            return a;
          }
          var f = a._children.length, c = b.localName, h = b.uri, p = e & 4;
          e & 1 ? this._attributes.forEach(function(b, e) {
            if (p || c === b._name.localName && h === b._name.uri) {
              a._children[f++] = b;
            }
          }) : this._children.forEach(function(b, e) {
            if (p || c === b._name.localName && h === b._name.uri) {
              a._children[f++] = b;
            }
          });
          this._children.forEach(function(e, f) {
            e.descendantsInto(b, a);
          });
          return a;
        };
        c.instanceConstructor = c;
        c.classInitializer = function() {
          M(this, "$Bglength", 1);
          var b = c.prototype;
          M(b, "asDeleteProperty", b._asDeleteProperty);
          M(b, "$BgvalueOf", Object.prototype.$BgvalueOf);
          M(b, "$BghasOwnProperty", b.native_hasOwnProperty);
          M(b, "$BgpropertyIsEnumerable", b.native_propertyIsEnumerable);
          E(c, ["settings", "setSettings", "defaultSettings"]);
          E(b, "toString addNamespace appendChild attribute attributes child childIndex children comments contains copy descendants elements hasComplexContent hasSimpleContent inScopeNamespaces insertChildAfter insertChildBefore length localName name namespace namespaceDeclarations nodeKind normalize parent processingInstructions prependChild removeNamespace replace setChildren setLocalName setName setNamespace text toXMLString toJSON".split(" "));
        };
        c.callableConstructor = function(b) {
          d.isNullOrUndefined(b) && (b = "");
          return m(b);
        };
        c.defaultNamespace = "";
        c._flags = N.ALL;
        c._prettyIndent = 2;
        return c;
      }(a.ASNative);
      a.ASXML = T;
      var X = function(f) {
        function c(b) {
          this._children = [];
          d.isNullOrUndefined(b) && (b = "");
          if (b) {
            if (b instanceof c) {
              b = b._children;
              for (var a = 0;a < b.length;a++) {
                this._children[a] = b[a];
              }
            } else {
              h(b, this);
            }
          }
        }
        __extends(c, f);
        c.addXML = function(b, e) {
          var f;
          b instanceof T ? (f = new a.ASXMLList, f.append(b)) : f = b;
          f.append(e);
          return f;
        };
        c.createList = function(b, e) {
          void 0 === b && (b = null);
          void 0 === e && (e = null);
          var f = new a.ASXMLList;
          f._targetObject = b;
          f._targetProperty = e;
          return f;
        };
        c.prototype.valueOf = function() {
          return this;
        };
        c.prototype.equals = function(b) {
          var a = this._children;
          if (void 0 === b && 0 === a.length) {
            return !0;
          }
          if (b instanceof c) {
            b = b._children;
            if (b.length !== a.length) {
              return !1;
            }
            for (var e = 0;e < a.length;e++) {
              if (!a[e].equals(b[e])) {
                return !1;
              }
            }
            return !0;
          }
          return 1 === a.length && a[0].equals(b);
        };
        c.prototype.toString = function() {
          if (this.hasComplexContent()) {
            return this.toXMLString();
          }
          for (var b = "", a = 0;a < this._children.length;a++) {
            b += w(this._children[a]);
          }
          return b;
        };
        c.prototype._deepCopy = function() {
          for (var b = a.ASXMLList.createList(this._targetObject, this._targetProperty), e = this.length(), f = 0;f < e;f++) {
            b._children[f] = this._children[f]._deepCopy();
          }
          return b;
        };
        c.prototype._shallowCopy = function() {
          for (var b = a.ASXMLList.createList(this._targetObject, this._targetProperty), e = this.length(), f = 0;f < e;f++) {
            b._children[f] = this._children[f];
          }
          return b;
        };
        c.prototype.native_hasOwnProperty = function(e) {
          e = D(e);
          if (c.isTraitsOrDynamicPrototype(this)) {
            return a.ASObject.prototype.native_hasOwnProperty.call(this, e);
          }
          if (d.isIndex(e)) {
            return (e | 0) < this._children.length;
          }
          e = b(e);
          for (var f = !!(e.flags & 1), h = this._children, p = 0;p < h.length;p++) {
            var g = h[p];
            if (1 === g._kind && g.hasProperty(e, f, !1)) {
              return !0;
            }
          }
          return !1;
        };
        c.prototype.native_propertyIsEnumerable = function(b) {
          return d.isIndex(b) && (b | 0) < this._children.length;
        };
        c.prototype.attribute = function(b) {
          return this.getProperty(b, !0);
        };
        c.prototype.attributes = function() {
          return this.getProperty("*", !0);
        };
        c.prototype.child = function(b) {
          if (d.isIndex(b)) {
            var e = a.ASXMLList.createList(this._targetObject, this._targetProperty);
            b < this._children.length && (e._children[0] = this._children[b | 0]._deepCopy());
            return e;
          }
          return this.getProperty(b, !1);
        };
        c.prototype.children = function() {
          return this.getProperty("*", !1);
        };
        c.prototype.descendants = function(e) {
          e = b(e);
          for (var f = a.ASXMLList.createList(this._targetObject, this._targetProperty), c = 0;c < this._children.length;c++) {
            var h = this._children[c];
            1 === h._kind && h.descendantsInto(e, f);
          }
          return f;
        };
        c.prototype.comments = function() {
          var b = a.ASXMLList.createList(this._targetObject, this._targetProperty);
          this._children.forEach(function(a) {
            1 === a._kind && (a = a.comments(), Array.prototype.push.apply(b._children, a._children));
          });
          return b;
        };
        c.prototype.contains = function(b) {
          for (var a = this._children, e = 0;e < a.length;e++) {
            if (a[e].equals(b)) {
              return !0;
            }
          }
          return !1;
        };
        c.prototype.copy = function() {
          return this._deepCopy();
        };
        c.prototype.elements = function(e) {
          void 0 === e && (e = "*");
          var f = b(e), c = a.ASXMLList.createList(this._targetObject, f);
          this._children.forEach(function(b) {
            1 === b._kind && (b = b.elements(f), Array.prototype.push.apply(c._children, b._children));
          });
          return c;
        };
        c.prototype.hasComplexContent = function() {
          switch(this.length()) {
            case 0:
              return !1;
            case 1:
              return this._children[0].hasComplexContent();
            default:
              return this._children.some(function(b) {
                return 1 === b._kind;
              });
          }
        };
        c.prototype.hasSimpleContent = function() {
          switch(this.length()) {
            case 0:
              return !0;
            case 1:
              return this._children[0].hasSimpleContent();
            default:
              return this._children.every(function(b) {
                return 1 !== b._kind;
              });
          }
        };
        c.prototype.length = function() {
          return this._children.length;
        };
        c.prototype.name = function() {
          return this._children[0].name();
        };
        c.prototype.normalize = function() {
          for (var b = 0;b < this._children.length;) {
            var a = this._children[b];
            if (1 === a._kind) {
              a.normalize(), b++;
            } else {
              if (3 === a._kind) {
                for (b++;b < this._children.length;) {
                  var e = this._children[b];
                  if (3 !== e._kind) {
                    break;
                  }
                  a._value += e._value;
                  this.removeByIndex(b);
                }
                0 === a._value.length ? this.removeByIndex(b) : b++;
              } else {
                b++;
              }
            }
          }
          return this;
        };
        c.prototype.parent = function() {
          var b = this._children;
          if (0 !== b.length) {
            for (var a = b[0]._parent, e = 1;e < b.length;e++) {
              if (b[e]._parent !== a) {
                return;
              }
            }
            return a;
          }
        };
        c.prototype.processingInstructions = function(e) {
          void 0 === e && (e = "*");
          var f = b(e).localName, c = a.ASXMLList.createList(this._targetObject, this._targetProperty);
          c._targetObject = this;
          c._targetProperty = null;
          for (var h = this._children, p = 0;p < h.length;p++) {
            h[p].processingInstructionsInto(e, f, c);
          }
          return c;
        };
        c.prototype.text = function() {
          var b = a.ASXMLList.createList(this._targetObject, this._targetProperty);
          this._children.forEach(function(a, e) {
            if (1 === a._kind) {
              var f = a.text();
              0 < f.length() && b._children.push(f);
            }
          });
          return b;
        };
        c.prototype.toXMLString = function() {
          return t(this);
        };
        c.prototype.toJSON = function(b) {
          return "XMLList";
        };
        c.prototype.addNamespace = function(b) {
          1 !== this._children.length && k.Runtime.throwError("TypeError", k.Errors.XMLOnlyWorksWithOneItemLists, "addNamespace");
          var a = this._children[0];
          a.addNamespace(b);
          return a;
        };
        c.prototype.appendChild = function(b) {
          1 !== this._children.length && k.Runtime.throwError("TypeError", k.Errors.XMLOnlyWorksWithOneItemLists, "appendChild");
          var a = this._children[0];
          a.appendChild(b);
          return a;
        };
        c.prototype.append = function(b) {
          var e = this._children, f = e.length, c = 1;
          if (b instanceof a.ASXMLList) {
            if (this._targetObject = b._targetObject, this._targetProperty = b._targetProperty, b = b._children, c = b.length, 0 !== c) {
              for (c = 0;c < b.length;c++) {
                e[f + c] = b[c];
              }
            }
          } else {
            e[f] = b, this._targetProperty = b._name;
          }
        };
        c.prototype.childIndex = function() {
          1 !== this._children.length && k.Runtime.throwError("TypeError", k.Errors.XMLOnlyWorksWithOneItemLists, "childIndex");
          return this._children[0].childIndex();
        };
        c.prototype.inScopeNamespaces = function() {
          1 !== this._children.length && k.Runtime.throwError("TypeError", k.Errors.XMLOnlyWorksWithOneItemLists, "inScopeNamespaces");
          return this._children[0].inScopeNamespaces();
        };
        c.prototype.insertChildAfter = function(b, a) {
          1 !== this._children.length && k.Runtime.throwError("TypeError", k.Errors.XMLOnlyWorksWithOneItemLists, "insertChildAfter");
          return this._children[0].insertChildAfter(b, a);
        };
        c.prototype.insertChildBefore = function(b, a) {
          1 !== this._children.length && k.Runtime.throwError("TypeError", k.Errors.XMLOnlyWorksWithOneItemLists, "insertChildBefore");
          return this._children[0].insertChildBefore(b, a);
        };
        c.prototype.nodeKind = function() {
          1 !== this._children.length && k.Runtime.throwError("TypeError", k.Errors.XMLOnlyWorksWithOneItemLists, "nodeKind");
          return this._children[0].nodeKind();
        };
        c.prototype.namespace = function(b) {
          1 !== this._children.length && k.Runtime.throwError("TypeError", k.Errors.XMLOnlyWorksWithOneItemLists, "namespace");
          var a = this._children[0];
          return arguments.length ? a.namespace(b) : a.namespace();
        };
        c.prototype.localName = function() {
          1 !== this._children.length && k.Runtime.throwError("TypeError", k.Errors.XMLOnlyWorksWithOneItemLists, "localName");
          return this._children[0].localName();
        };
        c.prototype.namespaceDeclarations = function() {
          1 !== this._children.length && k.Runtime.throwError("TypeError", k.Errors.XMLOnlyWorksWithOneItemLists, "namespaceDeclarations");
          return this._children[0].namespaceDeclarations();
        };
        c.prototype.prependChild = function(b) {
          1 !== this._children.length && k.Runtime.throwError("TypeError", k.Errors.XMLOnlyWorksWithOneItemLists, "prependChild");
          return this._children[0].prependChild(b);
        };
        c.prototype.removeNamespace = function(b) {
          1 !== this._children.length && k.Runtime.throwError("TypeError", k.Errors.XMLOnlyWorksWithOneItemLists, "removeNamespace");
          return this._children[0].removeNamespace(b);
        };
        c.prototype.replace = function(b, a) {
          1 !== this._children.length && k.Runtime.throwError("TypeError", k.Errors.XMLOnlyWorksWithOneItemLists, "replace");
          return this._children[0].replace(b, a);
        };
        c.prototype.setChildren = function(b) {
          1 !== this._children.length && k.Runtime.throwError("TypeError", k.Errors.XMLOnlyWorksWithOneItemLists, "setChildren");
          return this._children[0].setChildren(b);
        };
        c.prototype.setLocalName = function(b) {
          1 !== this._children.length && k.Runtime.throwError("TypeError", k.Errors.XMLOnlyWorksWithOneItemLists, "setLocalName");
          return this._children[0].setLocalName(b);
        };
        c.prototype.setName = function(b) {
          1 !== this._children.length && k.Runtime.throwError("TypeError", k.Errors.XMLOnlyWorksWithOneItemLists, "setName");
          return this._children[0].setName(b);
        };
        c.prototype.setNamespace = function(b) {
          1 !== this._children.length && k.Runtime.throwError("TypeError", k.Errors.XMLOnlyWorksWithOneItemLists, "setNamespace");
          return this._children[0].setNamespace(b);
        };
        c.isTraitsOrDynamicPrototype = function(b) {
          return b === c.traitsPrototype || b === c.dynamicPrototype;
        };
        c.prototype.asGetEnumerableKeys = function() {
          return c.isTraitsOrDynamicPrototype(this) ? z.call(this) : this._children.asGetEnumerableKeys();
        };
        c.prototype.getProperty = function(e, f) {
          if (d.isIndex(e)) {
            return this._children[e];
          }
          var c = b(e), h = a.ASXMLList.createList(this._targetObject, c);
          this._children.forEach(function(b, a) {
            if (1 === b._kind) {
              var e = b.getProperty(c, f);
              if (0 < e.length()) {
                for (var e = e._children, p = 0;p < e.length;p++) {
                  h._children.push(e[p]);
                }
              }
            }
          });
          return h;
        };
        c.prototype.asGetNumericProperty = function(b) {
          return this.asGetProperty(null, b, 0);
        };
        c.prototype.asSetNumericProperty = function(b, a) {
          this.asSetProperty(null, b, 0, a);
        };
        c.prototype.asGetProperty = function(b, a, e) {
          if (c.isTraitsOrDynamicPrototype(this)) {
            return J.call(this, b, a, e);
          }
          e = !!(e & I.ATTRIBUTE);
          return this.getProperty(r(b, a, e), e);
        };
        c.prototype.hasProperty = function(b, a) {
          return d.isIndex(b) ? Number(b) < this._children.length : !0;
        };
        c.prototype.asHasProperty = function(b, a, e) {
          if (c.isTraitsOrDynamicPrototype(this)) {
            return J.call(this, b, a, e);
          }
          e = !!(e & I.ATTRIBUTE);
          return this.hasProperty(r(b, a, e), e);
        };
        c.prototype.asHasPropertyInternal = function(b, a, e) {
          e = !!(e & I.ATTRIBUTE);
          return this.hasProperty(r(b, a, e), e);
        };
        c.prototype.resolveValue = function() {
          return this;
        };
        c.prototype.setProperty = function(b, f, c) {
          if (d.isIndex(b)) {
            b |= 0;
            var h = null;
            if (this._targetObject && (h = this._targetObject.resolveValue(), null === h)) {
              return;
            }
            f = this.length();
            if (b >= f) {
              if (h instanceof a.ASXMLList) {
                if (1 !== h.length()) {
                  return;
                }
                h = h._children[0];
              }
              if (h && 1 !== h._kind) {
                return;
              }
              var p = new a.ASXML;
              p._parent = h;
              p._name = this._targetProperty;
              if (e(this._targetProperty)) {
                if (h.hasProperty(this._targetProperty, !0, !1)) {
                  return;
                }
                p._kind = 2;
              } else {
                d.isNullOrUndefined(this._targetProperty) || "*" === this._targetProperty.localName ? (p._name = null, p._kind = 3) : p._kind = 1;
              }
              b = f;
              if (2 !== p._kind) {
                if (null !== h) {
                  var g;
                  if (0 < b) {
                    var r = this._children[b - 1];
                    for (g = 0;g < h.length - 1 && h._children[g] !== r;g++) {
                    }
                  } else {
                    g = h.length() - 1;
                  }
                  h._children[g + 1] = p;
                  p._parent = h;
                }
                c instanceof a.ASXML ? p._name = c._name : c instanceof a.ASXMLList && (p._name = c._targetProperty);
                this.append(p);
              }
            }
            n(c) && 3 !== c._kind && 2 !== c._kind || (c += "");
            g = this._children[b];
            p = g._kind;
            h = g._parent;
            if (2 === p) {
              var m = h._children.indexOf(g);
              h.setProperty(g._name, !0, !1);
              this._children[b] = h._children[m];
            } else {
              if (c instanceof a.ASXMLList) {
                m = c._shallowCopy();
                c = m.length();
                if (null !== h) {
                  for (p = h._children.indexOf(g), h.replace(p, m), g = 0;g < c;g++) {
                    m.setProperty(g, !1, h._children[p + g]);
                  }
                }
                if (0 === c) {
                  for (g = b + 1;g < f;g++) {
                    this._children[g - 1] = this._children[g];
                  }
                  this._children.length--;
                } else {
                  for (g = f - 1;g > b;g--) {
                    this._children[g + c - 1] = this._children[g];
                  }
                }
                for (g = 0;g < c;g++) {
                  this._children[b + g] = m._children[g];
                }
              } else {
                c instanceof a.ASXML || 3 <= p ? (null !== h && (p = h._children.indexOf(g), h.replace(p, m), c = h._children[p]), "string" === typeof c ? (m = new a.ASXML(c), this._children[b] = m) : this._children[b] = c) : g.setProperty("*", !1, c);
              }
            }
          } else {
            if (0 === this._children.length) {
              h = this.resolveValue();
              if (null === h || 1 !== h._children.length) {
                return;
              }
              this.append(h._children[0]);
            }
            1 === this._children.length ? this._children[0].setProperty(b, f, c) : k.Runtime.throwError("TypeError", k.Errors.XMLAssigmentOneItemLists);
          }
        };
        c.prototype.asSetProperty = function(b, a, e, f) {
          if (c.isTraitsOrDynamicPrototype(this)) {
            return P.call(this, b, a, e, f);
          }
          e = !!(e & I.ATTRIBUTE);
          a = r(b, a, e);
          return this.setProperty(a, e, f);
        };
        c.prototype._asDeleteProperty = function(b, a, e) {
          if (d.isIndex(a)) {
            b = a | 0;
            if (b >= this._children.length) {
              return !0;
            }
            this.removeByIndex(b);
            return !0;
          }
          e = !!(e & I.ATTRIBUTE);
          a = r(b, a, e);
          for (b = 0;b < this._children.length;b++) {
            var f = this._children[b];
            1 === f._kind && f.deleteProperty(a, e);
          }
          return !0;
        };
        c.prototype.removeByIndex = function(b) {
          var a = this._children[b], e = a._parent;
          e && (a._parent = null, e._children.splice(e._children.indexOf(a), 1));
          this._children.splice(b, 1);
        };
        c.prototype.asCallProperty = function(b, a, e, f, h) {
          if (c.isTraitsOrDynamicPrototype(this) || f) {
            return y.call(this, b, a, e, f, h);
          }
          var p;
          p = this.resolveMultinameProperty(b, a, e);
          if (p = this.asOpenMethods[p] || this[p]) {
            return p.apply(f ? null : this, h);
          }
          if (1 === this.length()) {
            return this._children[0].asCallProperty(b, a, e, f, h);
          }
          throwError("TypeError", k.Errors.CallOfNonFunctionError, "value");
        };
        c.instanceConstructor = c;
        c.classInitializer = function() {
          M(this, "$Bglength", 1);
          var b = c.prototype;
          M(b, "asDeleteProperty", b._asDeleteProperty);
          M(b, "$BgvalueOf", Object.prototype.$BgvalueOf);
          M(b, "$BghasOwnProperty", b.native_hasOwnProperty);
          M(b, "$BgpropertyIsEnumerable", b.native_propertyIsEnumerable);
          E(b, "toString addNamespace appendChild attribute attributes child childIndex children comments contains copy descendants elements hasComplexContent hasSimpleContent inScopeNamespaces insertChildAfter insertChildBefore length localName name namespace namespaceDeclarations nodeKind normalize parent processingInstructions prependChild removeNamespace replace setChildren setLocalName setName setNamespace text toXMLString toJSON".split(" "));
        };
        c.callableConstructor = function(b) {
          d.isNullOrUndefined(b) && (b = "");
          if (b instanceof c) {
            return b;
          }
          var e = new a.ASXMLList;
          h(b, e);
          return e;
        };
        return c;
      }(a.ASNative);
      a.ASXMLList = X;
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      function n(b, a) {
        var e = (b | 0) === b;
        if (a & 512 && (d.isNullOrUndefined(b) || e)) {
          return null;
        }
        var f = !1;
        if (b instanceof Function) {
          if ("boundTo" in b) {
            if (a & 512) {
              return null;
            }
            f = !0;
          } else {
            if ("methodInfo" in b && b.methodInfo && "lastBoundMethod" in b.methodInfo) {
              return null;
            }
          }
        }
        b = Object(b);
        var h = b.classInfo ? b : Object.getPrototypeOf(b).class, g = h === b && !(a & 512), r = h.classInfo, m = {};
        m[p] = e ? "int" : f ? "builtin.as$0::MethodClosure" : c(r.instanceInfo.name);
        m[l("isDynamic")] = g || !(r.instanceInfo.flags & 1) && !f;
        m[l("isFinal")] = g || !!(r.instanceInfo.flags & 2) || f;
        m[l("isStatic")] = g;
        if (a & 256) {
          var q = m[l("traits")] = t(h, r, g, a)
        }
        f && (q[l("bases")].unshift("Function"), q[l("accessors")][1][l("declaredBy")] = "builtin.as$0::MethodClosure");
        return m;
      }
      function w(b, e) {
        for (var f = 0, c = e[l("bases")], h = 0;c && h < c.length;h++) {
          var p = new a.ASXML('<extendsClass type="' + a.escapeAttributeValue(c[h]) + '"/>');
          b.appendChild(p);
          f++;
        }
        c = e[l("interfaces")];
        for (h = 0;c && h < c.length;h++) {
          p = new a.ASXML('<implementsInterface type="' + a.escapeAttributeValue(c[h]) + '"/>'), b.appendChild(p), f++;
        }
        null !== e[l("constructor")] && (p = new a.ASXML("<constructor/>"), v(p, e[l("constructor")]), b.appendChild(p), f++);
        c = e[l("variables")];
        for (h = 0;c && h < c.length;h++) {
          var g = c[h], p = "readonly" === g[l("access")] ? "constant" : "variable", p = new a.ASXML("<" + p + ' name="' + a.escapeAttributeValue(g[l("name")]) + '" type="' + g[l("type")] + '"/>');
          null !== g[l("uri")] && p.setProperty("uri", !0, g[l("uri")]);
          null !== g[l("metadata")] && u(p, g[l("metadata")]);
          b.appendChild(p);
          f++;
        }
        c = e[l("accessors")];
        for (h = 0;c && h < c.length;h++) {
          g = c[h], p = new a.ASXML('<accessor name="' + a.escapeAttributeValue(g[l("name")]) + '" access="' + g[l("access")] + '" type="' + a.escapeAttributeValue(g[l("type")]) + '" declaredBy="' + a.escapeAttributeValue(g[l("declaredBy")]) + '"/>'), null !== g[l("uri")] && p.setProperty("uri", !0, g[l("uri")]), null !== g[l("metadata")] && u(p, g[l("metadata")]), b.appendChild(p), f++;
        }
        c = e[l("methods")];
        for (h = 0;c && h < c.length;h++) {
          g = c[h], p = new a.ASXML('<method name="' + a.escapeAttributeValue(g[l("name")]) + '" declaredBy="' + a.escapeAttributeValue(g[l("declaredBy")]) + '" returnType="' + a.escapeAttributeValue(g[l("returnType")]) + '"/>'), v(p, g[l("parameters")]), null !== g[l("uri")] && p.setProperty("uri", !0, g[l("uri")]), null !== g[l("metadata")] && u(p, g[l("metadata")]), b.appendChild(p), f++;
        }
        u(b, e[l("metadata")]);
        return 0 < f;
      }
      function v(b, e) {
        if (e) {
          for (var f = 0;f < e.length;f++) {
            var c = e[f], c = new a.ASXML('<parameter index="' + (f + 1) + '" type="' + a.escapeAttributeValue(c[l("type")]) + '" optional="' + c[l("optional")] + '"/>');
            b.appendChild(c);
          }
        }
      }
      function u(b, e) {
        if (e) {
          for (var f = 0;f < e.length;f++) {
            for (var c = e[f], h = new a.ASXML('<metadata name="' + a.escapeAttributeValue(c[l("name")]) + '"/>'), c = c[l("value")], p = 0;p < c.length;p++) {
              var g = c[p], g = new a.ASXML('<arg key="' + a.escapeAttributeValue(g[l("key")]) + '" value="' + a.escapeAttributeValue(g[l("value")]) + '"/>');
              h.appendChild(g);
            }
            b.appendChild(h);
          }
        }
      }
      function l(b) {
        return m.getPublicQualifiedName(b);
      }
      function c(b) {
        var a = b.name;
        return (b = b.namespaces[0]) && b.uri ? b.uri + "::" + a : a;
      }
      function g(b) {
        if (!b) {
          return null;
        }
        var a = [], e;
        for (e in b) {
          "native" !== e && a.push(q(b[e]));
        }
        return a;
      }
      function q(b) {
        var a = {};
        a[p] = b.name;
        a[B] = b.value.map(function(b) {
          var a = {};
          a[B] = b.value;
          a[D] = b.key;
          return a;
        });
        return a;
      }
      function t(h, m, d, q) {
        function t(a) {
          for (var h = a.length;h--;) {
            var m = a[h], l = m.name.getNamespace();
            if (!(!l.isPublic() && !m.name.uri || q & 1 && l.uri)) {
              var n = c(m.name);
              if (T[n] !== X[n]) {
                l = R[n], l[e] = "readwrite", 2 === m.kind && (l[C] = m.methodInfo.returnType ? c(m.methodInfo.returnType) : "*");
              } else {
                if (!R[n]) {
                  switch(l = {}, R[n] = l, m.kind) {
                    case 6:
                    ;
                    case 0:
                      if (!(q & 8)) {
                        continue;
                      }
                      l[p] = n;
                      l[r] = void 0 === m.name.uri ? null : m.name.uri;
                      l[C] = m.typeName ? c(m.typeName) : "*";
                      l[e] = "readwrite";
                      l[b] = q & 64 ? g(m.metadata) : null;
                      v.push(l);
                      break;
                    case 1:
                      if (!k) {
                        continue;
                      }
                      l[I] = m.methodInfo.returnType ? c(m.methodInfo.returnType) : "*";
                      l[b] = q & 64 ? g(m.metadata) : null;
                      l[p] = n;
                      l[r] = void 0 === m.name.uri ? null : m.name.uri;
                      for (var n = l[M] = [], m = m.methodInfo.parameters, B = 0;B < m.length;B++) {
                        var w = m[B], D = {};
                        D[C] = w.type ? c(w.type) : "*";
                        D[E] = "value" in w;
                        n.push(D);
                      }
                      l[f] = da;
                      N.push(l);
                      break;
                    case 2:
                    ;
                    case 3:
                      if (!(q & 16) || d) {
                        continue;
                      }
                      l[p] = n;
                      2 === m.kind ? (l[C] = m.methodInfo.returnType ? c(m.methodInfo.returnType) : "*", T[n] = l) : (B = m.methodInfo.parameters[0].type, l[C] = B ? c(B) : "*", X[n] = l);
                      l[e] = 2 === m.kind ? "readonly" : "writeonly";
                      l[b] = q & 64 ? g(m.metadata) : null;
                      l[r] = void 0 === m.name.uri ? null : m.name.uri;
                      l[f] = da;
                      u.push(l);
                  }
                }
              }
            }
          }
        }
        var n = q & 2, k = q & 32 && !d, B = {}, v = B[l("variables")] = q & 8 ? [] : null, u = B[l("accessors")] = q & 16 ? [] : null, w = null;
        q & 64 && (w = d ? [] : g(m.metadata) || []);
        B[b] = w;
        B[l("constructor")] = null;
        if (q & 4) {
          if (m = B[l("interfaces")] = [], !d) {
            for (var D in h.implementedInterfaces) {
              w = h.implementedInterfaces[D].getQualifiedClassName(), m.push(w);
            }
          }
        } else {
          B[l("interfaces")] = null;
        }
        var N = B[l("methods")] = k ? [] : null;
        D = B[l("bases")] = n ? [] : null;
        var R = {}, T = {}, X = {};
        for (m = !1;h;) {
          var da = c(h.classInfo.instanceInfo.name);
          n && m && !d ? D.push(da) : m = !0;
          if (q & 1024 && h === a.ASObject) {
            break;
          }
          d ? t(h.classInfo.traits) : t(h.classInfo.instanceInfo.traits);
          h = h.baseClass;
        }
        d && (q & 16 && (h = {}, h[p] = "prototype", h[C] = "*", h[e] = "readonly", h[b] = null, h[r] = null, h[f] = "Class", u.push(h)), n && (D.pop(), D.push("Class", "Object"), h = a.ASClass));
        return B;
      }
      var m = d.AVM2.ABC.Multiname, h;
      (function(b) {
        b[b.HIDE_NSURI_METHODS = 1] = "HIDE_NSURI_METHODS";
        b[b.INCLUDE_BASES = 2] = "INCLUDE_BASES";
        b[b.INCLUDE_INTERFACES = 4] = "INCLUDE_INTERFACES";
        b[b.INCLUDE_VARIABLES = 8] = "INCLUDE_VARIABLES";
        b[b.INCLUDE_ACCESSORS = 16] = "INCLUDE_ACCESSORS";
        b[b.INCLUDE_METHODS = 32] = "INCLUDE_METHODS";
        b[b.INCLUDE_METADATA = 64] = "INCLUDE_METADATA";
        b[b.INCLUDE_CONSTRUCTOR = 128] = "INCLUDE_CONSTRUCTOR";
        b[b.INCLUDE_TRAITS = 256] = "INCLUDE_TRAITS";
        b[b.USE_ITRAITS = 512] = "USE_ITRAITS";
        b[b.HIDE_OBJECT = 1024] = "HIDE_OBJECT";
      })(h || (h = {}));
      var f = l("declaredBy"), b = l("metadata"), e = l("access"), r = l("uri"), p = l("name"), C = l("type"), I = l("returnType"), B = l("value"), D = l("key"), M = l("parameters"), E = l("optional");
      a.describeTypeJSON = n;
      a.describeType = function(b, e) {
        var f = n(b, e), c = k.Runtime.AVM2.instance.systemDomain;
        c.getClass("XML");
        c.getClass("XMLList");
        c.getClass("QName");
        c.getClass("Namespace");
        c = new a.ASXML("<type/>");
        c.setProperty("name", !0, f[l("name")]);
        var h = f[l("traits")][l("bases")];
        h.length && c.setProperty("base", !0, h[0]);
        c.setProperty("isDynamic", !0, f[l("isDynamic")].toString());
        c.setProperty("isFinal", !0, f[l("isFinal")].toString());
        c.setProperty("isStatic", !0, f[l("isStatic")].toString());
        w(c, f[l("traits")]);
        if (f = n(b, e | 512)) {
          h = new a.ASXML("<factory/>"), h.setProperty("type", !0, f[l("name")]), w(h, f[l("traits")]) && c.appendChild(h);
        }
        return c;
      };
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(n) {
        (function(n) {
          var k = Object.prototype.asGetProperty, u = Object.prototype.asSetProperty, l = Object.prototype.asHasProperty, c = Object.prototype.asDeleteProperty, g = Object.prototype.asGetEnumerableKeys, q = function(a) {
            function m(a) {
              void 0 === a && (a = !1);
              this.weakKeys = !!a;
              this.map = new WeakMap;
              a || (this.keys = []);
              this.primitiveMap = Object.create(null);
            }
            __extends(m, a);
            m.isTraitsOrDynamicPrototype = function(a) {
              return a === m.traitsPrototype || a === m.dynamicPrototype;
            };
            m.makePrimitiveKey = function(a) {
              if ("string" === typeof a || "number" === typeof a) {
                return a;
              }
            };
            m.prototype.toJSON = function() {
              return "Dictionary";
            };
            m.prototype.asGetNumericProperty = function(a) {
              return this.asGetProperty(null, a, 0);
            };
            m.prototype.asSetNumericProperty = function(a, f) {
              this.asSetProperty(null, a, 0, f);
            };
            m.prototype.asGetProperty = function(a, f, b) {
              if (m.isTraitsOrDynamicPrototype(this)) {
                return k.call(this, a, f, b);
              }
              a = m.makePrimitiveKey(f);
              return void 0 !== a ? this.primitiveMap[a] : this.map.get(Object(f));
            };
            m.prototype.asSetProperty = function(a, f, b, e) {
              if (m.isTraitsOrDynamicPrototype(this)) {
                return u.call(this, a, f, b, e);
              }
              a = m.makePrimitiveKey(f);
              void 0 !== a ? this.primitiveMap[a] = e : (this.map.set(Object(f), e), !this.weakKeys && 0 > this.keys.indexOf(f) && this.keys.push(f));
            };
            m.prototype.asHasProperty = function(a, f, b) {
              if (m.isTraitsOrDynamicPrototype(this)) {
                return l.call(this, a, f, b);
              }
              a = m.makePrimitiveKey(f);
              return void 0 !== a ? a in this.primitiveMap : this.map.has(Object(f));
            };
            m.prototype.asDeleteProperty = function(a, f, b) {
              if (m.isTraitsOrDynamicPrototype(this)) {
                return c.call(this, a, f, b);
              }
              a = m.makePrimitiveKey(f);
              void 0 !== a && delete this.primitiveMap[a];
              this.map.delete(Object(f));
              var e;
              !this.weakKeys && 0 <= (e = this.keys.indexOf(f)) && this.keys.splice(e, 1);
              return !0;
            };
            m.prototype.asGetEnumerableKeys = function() {
              if (m.isTraitsOrDynamicPrototype(this)) {
                return g.call(this);
              }
              var a = [], f;
              for (f in this.primitiveMap) {
                a.push(f);
              }
              return this.weakKeys ? a : a.concat(this.keys);
            };
            m.classInitializer = function() {
              var a = m.prototype;
              d.ObjectUtilities.defineNonEnumerableProperty(a, "$BgtoJSON", a.toJSON);
            };
            m.protocol = m.prototype;
            return m;
          }(a.ASNative);
          n.Dictionary = q;
          n.OriginalDictionary = q;
        })(n.utils || (n.utils = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var n = d.Debug.notImplemented, w = d.AVM2.ABC.Namespace, v = d.AVM2.Runtime.throwError;
      (function(d) {
        (function(d) {
          var c = Object.prototype.asGetProperty, g = Object.prototype.asSetProperty, q = Object.prototype.asCallProperty, t = Object.prototype.asHasProperty, m = Object.prototype.asHasOwnProperty, h = Object.prototype.asHasTraitProperty, f = Object.prototype.asDeleteProperty, b = function(b) {
            function a() {
              b.apply(this, arguments);
            }
            __extends(a, b);
            a.prototype.native_getProperty = function(b) {
              v("IllegalOperationError", k.Errors.ProxyGetPropertyError);
            };
            a.prototype.native_setProperty = function() {
              v("IllegalOperationError", k.Errors.ProxySetPropertyError);
            };
            a.prototype.native_callProperty = function() {
              v("IllegalOperationError", k.Errors.ProxyCallPropertyError);
            };
            a.prototype.native_hasProperty = function() {
              v("IllegalOperationError", k.Errors.ProxyHasPropertyError);
            };
            a.prototype.native_deleteProperty = function() {
              v("IllegalOperationError", k.Errors.ProxyDeletePropertyError);
            };
            a.prototype.native_getDescendants = function() {
              v("IllegalOperationError", k.Errors.ProxyGetDescendantsError);
            };
            a.prototype.native_nextNameIndex = function() {
              v("IllegalOperationError", k.Errors.ProxyNextNameIndexError);
            };
            a.prototype.native_nextName = function() {
              v("IllegalOperationError", k.Errors.ProxyNextNameError);
            };
            a.prototype.native_nextValue = function() {
              v("IllegalOperationError", k.Errors.ProxyNextValueError);
            };
            a.prototype.asGetProperty = function(b, a, e) {
              return h.call(this, b, a, e) ? c.call(this, b, a, e) : q.call(this, [w.PROXY], "getProperty", 0, !1, [a]);
            };
            a.prototype.asGetNumericProperty = function(b) {
              return this.asGetProperty(null, b, 0);
            };
            a.prototype.asSetNumericProperty = function(b, a) {
              this.asSetProperty(null, b, 0, a);
            };
            a.prototype.asSetProperty = function(b, a, e, f) {
              h.call(this, b, a, e) ? g.call(this, b, a, e, f) : q.call(this, [w.PROXY], "setProperty", 0, !1, [a, f]);
            };
            a.prototype.asCallProperty = function(b, a, e, f, c) {
              return h.call(this, b, a, e) ? q.call(this, b, a, e, !1, c) : q.call(this, [w.PROXY], "callProperty", 0, !1, [a].concat(c));
            };
            a.prototype.asHasProperty = function(b, a, e) {
              return h.call(this, b, a, e) ? t.call(this, b, a, e) : q.call(this, [w.PROXY], "hasProperty", 0, !1, [a]);
            };
            a.prototype.asHasOwnProperty = function(b, a, e) {
              return h.call(this, b, a, e) ? m.call(this, b, a, e) : q.call(this, [w.PROXY], "hasProperty", 0, !1, [a]);
            };
            a.prototype.asDeleteProperty = function(b, a, e) {
              return h.call(this, b, a, e) ? f.call(this, b, a, e) : q.call(this, [w.PROXY], "deleteProperty", 0, !1, [a]);
            };
            a.prototype.asNextName = function(b) {
              n("Proxy asNextName");
            };
            a.prototype.asNextValue = function(b) {
              n("Proxy asNextValue");
            };
            a.prototype.asNextNameIndex = function(b) {
              n("Proxy asNextNameIndex");
            };
            a.protocol = a.prototype;
            return a;
          }(a.ASNative);
          d.Proxy = b;
          d.OriginalProxy = b;
        })(d.utils || (d.utils = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var n = d.Debug.notImplemented, w = d.Debug.unexpected, v = d.ArrayUtilities.DataBuffer;
      (function(d) {
        (function(d) {
          var c = function(a) {
            function c() {
              a.apply(this, arguments);
            }
            __extends(c, a);
            Object.defineProperty(c, "dynamicPropertyWriter", {get:function() {
              n("public flash.net.ObjectEncoding::get dynamicPropertyWriter");
              return null;
            }, set:function(a) {
              n("public flash.net.ObjectEncoding::set dynamicPropertyWriter");
            }, enumerable:!0, configurable:!0});
            c.AMF0 = 0;
            c.AMF3 = 3;
            c.DEFAULT = c.AMF3;
            return c;
          }(a.ASNative);
          d.ObjectEncoding = c;
        })(d.net || (d.net = {}));
      })(a.flash || (a.flash = {}));
      (function(n) {
        (function(l) {
          var c = function(a) {
            function c() {
            }
            __extends(c, a);
            Object.defineProperty(c, "defaultObjectEncoding", {get:function() {
              return this._defaultObjectEncoding;
            }, set:function(a) {
              this._defaultObjectEncoding = a >>> 0;
            }, enumerable:!0, configurable:!0});
            c.prototype.toJSON = function() {
              return "ByteArray";
            };
            c.prototype.readObject = function() {
              switch(this._objectEncoding) {
                case n.net.ObjectEncoding.AMF0:
                  return k.AMF0.read(this);
                case n.net.ObjectEncoding.AMF3:
                  return k.AMF3.read(this);
                default:
                  w("Object Encoding");
              }
            };
            c.prototype.writeObject = function(a) {
              switch(this._objectEncoding) {
                case n.net.ObjectEncoding.AMF0:
                  return k.AMF0.write(this, a);
                case n.net.ObjectEncoding.AMF3:
                  return k.AMF3.write(this, a);
                default:
                  w("Object Encoding");
              }
            };
            c.instanceConstructor = v;
            c.staticNatives = [v];
            c.instanceNatives = [v.prototype];
            c.callableConstructor = null;
            c.classInitializer = function() {
              var a = v.prototype;
              d.ObjectUtilities.defineNonEnumerableProperty(a, "$BgtoJSON", a.toJSON);
            };
            c.initializer = function(a) {
              var g, h = 0;
              a ? (a instanceof ArrayBuffer ? g = a.slice() : Array.isArray(a) ? g = (new Uint8Array(a)).buffer : "buffer" in a ? a.buffer instanceof ArrayBuffer ? g = (new Uint8Array(a.buffer)).buffer : a.buffer instanceof Uint8Array ? (g = a.buffer.byteOffset, g = a.buffer.buffer.slice(g, g + a.buffer.length)) : g = a.buffer.slice() : d.Debug.unexpected("Source type."), h = g.byteLength) : g = new ArrayBuffer(c.INITIAL_SIZE);
              this._buffer = g;
              this._length = h;
              this._position = 0;
              this._resetViews();
              this._objectEncoding = c.defaultObjectEncoding;
              this._littleEndian = !1;
              this._bitLength = this._bitBuffer = 0;
            };
            c.protocol = c.prototype;
            c.INITIAL_SIZE = 128;
            c._defaultObjectEncoding = n.net.ObjectEncoding.DEFAULT;
            return c;
          }(a.ASNative);
          l.ByteArray = c;
          c.prototype.asGetNumericProperty = v.prototype.getValue;
          c.prototype.asSetNumericProperty = v.prototype.setValue;
          l.OriginalByteArray = c;
          c = function(a) {
            function c() {
            }
            __extends(c, a);
            c.classInitializer = function() {
              d.ObjectUtilities.defineNonEnumerableProperty(this, "$BgZLIB", c.ZLIB);
              d.ObjectUtilities.defineNonEnumerableProperty(this, "$BgDEFLATE", c.DEFLATE);
              d.ObjectUtilities.defineNonEnumerableProperty(this, "$BgLZMA", c.LZMA);
            };
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.ZLIB = "zlib";
            c.DEFLATE = "deflate";
            c.LZMA = "lzma";
            return c;
          }(a.ASNative);
          l.CompressionAlgorithm = c;
        })(n.utils || (n.utils = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var n = d.Debug.notImplemented, k = d.Debug.somewhatImplemented, v = d.AVM2.Runtime.asCoerceString;
      (function(u) {
        (function(l) {
          var c = function(a) {
            function c() {
            }
            __extends(c, a);
            Object.defineProperty(c, "enabled", {get:function() {
              n("public flash.system.IME::static get enabled");
            }, set:function(a) {
              n("public flash.system.IME::static set enabled");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "conversionMode", {get:function() {
              n("public flash.system.IME::static get conversionMode");
            }, set:function(a) {
              v(a);
              n("public flash.system.IME::static set conversionMode");
            }, enumerable:!0, configurable:!0});
            c.setCompositionString = function(a) {
              v(a);
              n("public flash.system.IME::static setCompositionString");
            };
            c.doConversion = function() {
              n("public flash.system.IME::static doConversion");
            };
            c.compositionSelectionChanged = function(a, c) {
              n("public flash.system.IME::static compositionSelectionChanged");
            };
            c.compositionAbandoned = function() {
              n("public flash.system.IME::static compositionAbandoned");
            };
            Object.defineProperty(c, "isSupported", {get:function() {
              k("public flash.system.IME::static get isSupported");
              return !1;
            }, enumerable:!0, configurable:!0});
            return c;
          }(a.ASNative);
          l.IME = c;
          c = function(a) {
            function c() {
              a.apply(this, arguments);
            }
            __extends(c, a);
            Object.defineProperty(c, "ime", {get:function() {
              n("public flash.system.System::get ime");
            }, enumerable:!0, configurable:!0});
            c.setClipboard = function(a) {
              a = v(a);
              null === d.ClipboardService.instance ? console.warn("setClipboard is only available in the Firefox extension") : d.ClipboardService.instance.setClipboard(a);
            };
            Object.defineProperty(c, "totalMemoryNumber", {get:function() {
              k("public flash.system.System::get totalMemoryNumber");
              return 2097152;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "freeMemory", {get:function() {
              k("public flash.system.System::get freeMemory");
              return 1048576;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "privateMemory", {get:function() {
              k("public flash.system.System::get privateMemory");
              return 1048576;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "useCodePage", {get:function() {
              return c._useCodePage;
            }, set:function(a) {
              c._useCodePage = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "vmVersion", {get:function() {
              return "1.0 Shumway - Mozilla Research";
            }, enumerable:!0, configurable:!0});
            c.pause = function() {
            };
            c.resume = function() {
            };
            c.exit = function(a) {
            };
            c.gc = function() {
            };
            c.pauseForGCIfCollectionImminent = function(a) {
            };
            c.disposeXML = function(a) {
            };
            Object.defineProperty(c, "swfVersion", {get:function() {
              return 19;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "apiVersion", {get:function() {
              return 26;
            }, enumerable:!0, configurable:!0});
            c.getArgv = function() {
              return [];
            };
            c.getRunmode = function() {
              return "mixed";
            };
            c._useCodePage = !1;
            return c;
          }(a.ASNative);
          l.System = c;
          l.OriginalSystem = c;
        })(u.system || (u.system = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var n = d.AVM2.ABC.Multiname, w = d.AVM2.ABC.ClassInfo, v = d.AVM2.ABC.ScriptInfo, u = d.AVM2.ABC.InstanceInfo, l = d.AVM2.ABC.Info, c = d.AVM2.ABC.MethodInfo, g = d.Debug.notImplemented, q = d.ArrayUtilities.popManyIntoVoid, t = function() {
        return function(b) {
          void 0 === b && (b = "");
          this.message = b;
          this.name = "VerifierError";
        };
      }();
      a.VerifierError = t;
      var m = function() {
        return function() {
          this.object = this.baseClass = this.type = null;
          this.scopeDepth = -1;
          this.trait = null;
          this.noCallSuperNeeded = this.noCoercionNeeded = !1;
        };
      }();
      a.TypeInformation = m;
      var h = function() {
        function a() {
        }
        a.from = function(e, f) {
          var c = a._cache[e.hash];
          c || (c = a._cache[e.hash] = new b(e, f));
          return c;
        };
        a.fromSimpleName = function(b, e) {
          return a.fromName(n.fromSimpleName(b), e);
        };
        a.fromName = function(b, e) {
          if (void 0 === b) {
            return a.Undefined;
          }
          var f = n.isQName(b) ? n.getFullQualifiedName(b) : void 0;
          if (f) {
            var c = a._cache.byQN[f];
            if (c) {
              return c;
            }
          }
          if (f === n.getPublicQualifiedName("void")) {
            return a.Void;
          }
          c = (c = e.findClassInfo(b)) ? a.from(c, e) : a.Any;
          b.hasTypeParameter() && (c = new p(c, a.fromName(b.typeParameter, e)));
          return a._cache.byQN[f] = c;
        };
        a.initializeTypes = function(b) {
          a._typesInitialized || (a.Any = new f("any", "?"), a.Null = new f("Null", "X"), a.Void = new f("Void", "V"), a.Undefined = new f("Undefined", "_"), a.Int = a.fromSimpleName("int", b).instanceType(), a.Uint = a.fromSimpleName("uint", b).instanceType(), a.Class = a.fromSimpleName("Class", b).instanceType(), a.Array = a.fromSimpleName("Array", b).instanceType(), a.Object = a.fromSimpleName("Object", b).instanceType(), a.String = a.fromSimpleName("String", b).instanceType(), a.Number = a.fromSimpleName("Number", 
          b).instanceType(), a.Boolean = a.fromSimpleName("Boolean", b).instanceType(), a.Function = a.fromSimpleName("Function", b).instanceType(), a.XML = a.fromSimpleName("XML", b).instanceType(), a.XMLList = a.fromSimpleName("XMLList", b).instanceType(), a.QName = a.fromSimpleName("QName", b).instanceType(), a.Namespace = a.fromSimpleName("Namespace", b).instanceType(), a.Dictionary = a.fromSimpleName("flash.utils.Dictionary", b).instanceType(), a._typesInitialized = !0);
        };
        a.prototype.equals = function(b) {
          return this === b;
        };
        a.prototype.canBeXML = function() {
          return this === a.Any || this === a.Object || this === a.XML || this === a.XMLList || this === a.QName || this === a.QName;
        };
        a.prototype.isStrictComparableWith = function(b) {
          return this === b && !this.canBeXML();
        };
        a.prototype.merge = function(b) {
          return a.Any;
        };
        a.prototype.instanceType = function() {
          return a.Any;
        };
        a.prototype.classType = function() {
          return a.Any;
        };
        a.prototype.super = function() {
          return null;
        };
        a.prototype.applyType = function(b) {
          return null;
        };
        a.prototype.getTrait = function(b, a, e) {
          return null;
        };
        a.prototype.isNumeric = function() {
          return this === a.Int || this === a.Uint || this === a.Number;
        };
        a.prototype.isString = function() {
          return this === a.String;
        };
        a.prototype.isScriptInfo = function() {
          return !1;
        };
        a.prototype.isClassInfo = function() {
          return !1;
        };
        a.prototype.isInstanceInfo = function() {
          return !1;
        };
        a.prototype.isMethodInfo = function() {
          return !1;
        };
        a.prototype.isTraitsType = function() {
          return this instanceof b;
        };
        a.prototype.isParameterizedType = function() {
          return this instanceof p;
        };
        a.prototype.isMethodType = function() {
          return this instanceof e;
        };
        a.prototype.isMultinameType = function() {
          return this instanceof r;
        };
        a.prototype.isConstantType = function() {
          return this instanceof C;
        };
        a.prototype.isSubtypeOf = function(b) {
          return this === b || this.equals(b) ? !0 : this.merge(b) === this;
        };
        a.prototype.asTraitsType = function() {
          return this;
        };
        a.prototype.asMethodType = function() {
          return this;
        };
        a.prototype.asMultinameType = function() {
          return this;
        };
        a.prototype.asConstantType = function() {
          return this;
        };
        a.prototype.getConstantValue = function() {
          return this.value;
        };
        a.prototype.asParameterizedType = function() {
          return this;
        };
        a._cache = {byQN:Object.create(null), byHash:Object.create(null)};
        a._typesInitialized = !1;
        return a;
      }();
      a.Type = h;
      var f = function(b) {
        function a(e, f) {
          b.call(this);
          this.name = e;
          this.symbol = f;
        }
        __extends(a, b);
        a.prototype.toString = function() {
          return this.symbol;
        };
        a.prototype.instanceType = function() {
          return h.Any;
        };
        return a;
      }(h);
      a.AtomType = f;
      var b = function(b) {
        function a(e, f) {
          b.call(this);
          this.info = e;
          this.domain = f;
        }
        __extends(a, b);
        a.prototype.instanceType = function() {
          var b = this.info;
          return this._cachedType || (this._cachedType = h.from(b.instanceInfo, this.domain));
        };
        a.prototype.classType = function() {
          var b = this.info;
          return this._cachedType || (this._cachedType = h.from(b.classInfo, this.domain));
        };
        a.prototype.super = function() {
          if (this.info instanceof w) {
            return h.Class;
          }
          var b = this.info;
          return b.superName ? h.fromName(b.superName, this.domain).instanceType() : null;
        };
        a.prototype.findTraitByName = function(b, a, e) {
          var f = !e, c;
          if (n.isQName(a)) {
            for (a = n.getQualifiedName(a), p = 0;p < b.length;p++) {
              if (c = b[p], n.getQualifiedName(c.name) === a && !(e && c.isGetter() || f && c.isSetter())) {
                return c;
              }
            }
          } else {
            for (var h, p = 0;p < a.namespaces.length;p++) {
              if (f = a.getQName(p), a.namespaces[p].isDynamic()) {
                h = f;
              } else {
                if (c = this.findTraitByName(b, f, e)) {
                  return c;
                }
              }
            }
            if (h) {
              return this.findTraitByName(b, h, e);
            }
          }
        };
        a.prototype.getTrait = function(b, a, e) {
          if (b.isMultinameType()) {
            return null;
          }
          var f = b.value;
          if (f.isAttribute()) {
            return null;
          }
          if (e && (this.isInstanceInfo() || this.isClassInfo())) {
            e = this;
            do {
              (f = e.getTrait(b, a, !1)) || (e = e.super());
            } while (!f && e);
            return f;
          }
          return this.findTraitByName(this.info.traits, f, a);
        };
        a.prototype.getTraitAt = function(b) {
          for (var a = this.info.traits, e = a.length - 1;0 <= e;e--) {
            if (a[e].slotId === b) {
              return a[e];
            }
          }
          d.Debug.unexpected("Cannot find trait with slotId: " + b + " in " + a);
        };
        a.prototype.equals = function(b) {
          return b.isTraitsType() && this.info.traits === b.info.traits;
        };
        a.prototype.merge = function(b) {
          if (b.isTraitsType()) {
            if (this.equals(b)) {
              return this;
            }
            if (this.isNumeric() && b.isNumeric()) {
              return h.Number;
            }
            if (this.isInstanceInfo() && b.isInstanceInfo()) {
              for (var a = [], e = this;e;e = e.super()) {
                a.push(e);
              }
              for (e = b;e;e = e.super()) {
                for (b = 0;b < a.length;b++) {
                  if (a[b].equals(e)) {
                    return e;
                  }
                }
              }
              return h.Object;
            }
          }
          return h.Any;
        };
        a.prototype.isScriptInfo = function() {
          return this.info instanceof v;
        };
        a.prototype.isClassInfo = function() {
          return this.info instanceof w;
        };
        a.prototype.isMethodInfo = function() {
          return this.info instanceof c;
        };
        a.prototype.isInstanceInfo = function() {
          return this.info instanceof u;
        };
        a.prototype.isInstanceOrClassInfo = function() {
          return this.isInstanceInfo() || this.isClassInfo();
        };
        a.prototype.applyType = function(b) {
          return new p(this, b);
        };
        a.prototype._getInfoName = function() {
          if (this.info instanceof v) {
            return "SI";
          }
          if (this.info instanceof w) {
            return "CI:" + this.info.instanceInfo.name.name;
          }
          if (this.info instanceof u) {
            return "II:" + this.info.name.name;
          }
          if (this.info instanceof c) {
            return "MI";
          }
        };
        a.prototype.toString = function() {
          switch(this) {
            case h.Int:
              return "I";
            case h.Uint:
              return "U";
            case h.Array:
              return "A";
            case h.Object:
              return "O";
            case h.String:
              return "S";
            case h.Number:
              return "N";
            case h.Boolean:
              return "B";
            case h.Function:
              return "F";
          }
          return this._getInfoName();
        };
        return a;
      }(h);
      a.TraitsType = b;
      var e = function(b) {
        function a(e, f) {
          b.call(this, h.Function.info, f);
          this.methodInfo = e;
        }
        __extends(a, b);
        a.prototype.toString = function() {
          return "MT " + this.methodInfo;
        };
        a.prototype.returnType = function() {
          return this._cachedType || (this._cachedType = h.fromName(this.methodInfo.returnType, this.domain));
        };
        return a;
      }(b);
      a.MethodType = e;
      var r = function(b) {
        function a(e, f, c) {
          b.call(this);
          this.namespaces = e;
          this.name = f;
          this.flags = c;
        }
        __extends(a, b);
        a.prototype.toString = function() {
          return "MN";
        };
        return a;
      }(h);
      a.MultinameType = r;
      var p = function(b) {
        function a(e, f) {
          b.call(this, e.info, e.domain);
          this.type = e;
          this.parameter = f;
        }
        __extends(a, b);
        return a;
      }(b);
      a.ParameterizedType = p;
      var C = function(b) {
        function a(e) {
          b.call(this);
          this.value = e;
        }
        __extends(a, b);
        a.prototype.toString = function() {
          return String(this.value);
        };
        a.from = function(b) {
          return new a(b);
        };
        a.fromArray = function(b) {
          return b.map(function(b) {
            return new a(b);
          });
        };
        return a;
      }(h);
      a.ConstantType = C;
      var I = function() {
        function b() {
          this.originalId = this.id = b.id += 1;
          this.stack = [];
          this.scope = [];
          this.local = [];
        }
        b.prototype.clone = function() {
          var a = new b;
          a.originalId = this.id;
          a.stack = this.stack.slice(0);
          a.scope = this.scope.slice(0);
          a.local = this.local.slice(0);
          return a;
        };
        b.prototype.trace = function(b) {
          b.writeLn(this.toString());
        };
        b.prototype.toString = function() {
          return "<" + this.id + (this.originalId ? ":" + this.originalId : "") + ", L[" + this.local.join(", ") + "], S[" + this.stack.join(", ") + "], $[" + this.scope.join(", ") + "]>";
        };
        b.prototype.equals = function(a) {
          return b._arrayEquals(this.stack, a.stack) && b._arrayEquals(this.scope, a.scope) && b._arrayEquals(this.local, a.local);
        };
        b._arrayEquals = function(b, a) {
          if (b.length != a.length) {
            return !1;
          }
          for (var e = b.length - 1;0 <= e;e--) {
            if (!b[e].equals(a[e])) {
              return !1;
            }
          }
          return !0;
        };
        b.prototype.isSubset = function(a) {
          return b._arraySubset(this.stack, a.stack) && b._arraySubset(this.scope, a.scope) && b._arraySubset(this.local, a.local);
        };
        b._arraySubset = function(b, a) {
          if (b.length != a.length) {
            return !1;
          }
          for (var e = b.length - 1;0 <= e;e--) {
            if (b[e] !== a[e] && !b[e].equals(a[e]) && b[e].merge(a[e]) !== b[e]) {
              return !1;
            }
          }
          return !0;
        };
        b.prototype.merge = function(a) {
          b._mergeArrays(this.local, a.local);
          b._mergeArrays(this.stack, a.stack);
          b._mergeArrays(this.scope, a.scope);
        };
        b._mergeArrays = function(b, a) {
          for (var e = b.length - 1;0 <= e;e--) {
            b[e] !== a[e] && (b[e] = b[e].merge(a[e]));
          }
        };
        b.id = 0;
        return b;
      }();
      a.State = I;
      var B = function() {
        function a(b, e, f) {
          this.methodInfo = b;
          this.domain = e;
          this.savedScope = f;
          this.thisType = this.writer = null;
          this.pushAnyCount = this.pushCount = 0;
          h.initializeTypes(e);
          d.AVM2.Verifier.traceLevel.value && (this.writer = new d.IndentingWriter);
          this.multinames = b.abc.constantPool.multinames;
          this.returnType = h.Undefined;
        }
        a.prototype.verify = function() {
          this.writer && this.methodInfo.trace(this.writer);
          this._verifyBlocks(this._prepareEntryState());
        };
        a.prototype._prepareEntryState = function() {
          var b = new I, a = this.methodInfo;
          this.thisType = a.holder ? h.from(a.holder, this.domain) : h.Any;
          b.local.push(this.thisType);
          for (var e = a.parameters, f = 0;f < e.length;f++) {
            b.local.push(h.fromName(e[f].type, this.domain).instanceType());
          }
          e = a.localCount - a.parameters.length - 1;
          if (a.needsRest() || a.needsArguments()) {
            b.local.push(h.Array), --e;
          }
          for (f = 0;f < e;f++) {
            b.local.push(h.Undefined);
          }
          return b;
        };
        a.prototype._verifyBlocks = function(b) {
          for (var a = this.writer, e = this.methodInfo.analysis.blocks, f = 0;f < e.length;f++) {
            e[f].bdo = f;
          }
          var c = new d.SortedList(function(b, a) {
            return b.bdo - a.bdo;
          });
          e[0].verifierEntryState = b;
          for (c.push(e[0]);!c.isEmpty();) {
            var h = c.pop(), p = h.verifierEntryState.clone();
            this._verifyBlock(h, p);
            h.succs.forEach(function(b) {
              c.contains(b) ? (a && a.writeLn("Forward Merged Block: " + b.bid + " " + p.toString() + " with " + b.verifierEntryState.toString()), b.verifierEntryState.merge(p), a && a.writeLn("Merged State: " + b.verifierEntryState)) : b.verifierEntryState ? b.verifierEntryState.isSubset(p) || (a && a.writeLn("Backward Merged Block: " + h.bid + " with " + b.bid + " " + p.toString() + " with " + b.verifierEntryState.toString()), b.verifierEntryState.merge(p), c.push(b), a && a.writeLn("Merged State: " + 
              b.verifierEntryState)) : (b.verifierEntryState = p, c.push(b), a && a.writeLn("Added Block: " + b.bid + " to worklist: " + b.verifierEntryState.toString()));
            });
          }
          a && (a.writeLn("Inferred return type: " + this.returnType), a.writeLn("Quality pushCount: " + this.pushCount + ", pushAnyCount: " + this.pushAnyCount));
          this.methodInfo.inferredReturnType = this.returnType;
        };
        a.prototype._verifyBlock = function(a, f) {
          function c() {
            return V.ti || (V.ti = new m);
          }
          function p(b) {
            c().type = b;
            x.push(b);
            N.pushCount++;
            b === h.Any && N.pushAnyCount++;
          }
          function l(b) {
            return x.pop();
          }
          function I() {
            g("Bytecode not implemented in verifier: " + V);
          }
          function B() {
            var b = N.multinames[V.index];
            if (b.isRuntime()) {
              var a;
              a = b.isRuntimeName() ? l() : C.from(b.name);
              var e;
              e = b.isRuntimeNamespace() ? [l()] : C.fromArray(b.namespaces);
              return new r(e, a, b.flags);
            }
            return C.from(b);
          }
          function v(b) {
            return b.isMultinameType() && b.asMultinameType().name.isNumeric() || b.isConstantType() && n.isNumeric(b.value) ? !0 : !1;
          }
          function u(b, a) {
            if (b.isTraitsType() || b.isParameterizedType()) {
              var f = b.getTrait(a, !1, !0);
              if (f) {
                R && R.debugLn("getProperty(" + a + ") -> " + f);
                c().trait = f;
                if (f.isSlot() || f.isConst()) {
                  return h.fromName(f.typeName, N.domain).instanceType();
                }
                if (f.isGetter()) {
                  return h.fromName(f.methodInfo.returnType, N.domain).instanceType();
                }
                if (f.isClass()) {
                  return h.from(f.classInfo, N.domain);
                }
                if (f.isMethod()) {
                  return new e(f.methodInfo, N.domain);
                }
              } else {
                if (v(a) && b.isParameterizedType()) {
                  return f = b.asParameterizedType().parameter, R && R.debugLn("getProperty(" + a + ") -> " + f), f;
                }
                b !== h.Array && R && R.warnLn("getProperty(" + a + ")");
              }
            }
            return h.Any;
          }
          function w(b, a, e) {
            if (b.isTraitsType() || b.isParameterizedType()) {
              (e = b.getTrait(a, !0, !0)) ? (R && R.debugLn("setProperty(" + a + ") -> " + e), c().trait = e) : v(a) && b.isParameterizedType() || b !== h.Array && R && R.warnLn("setProperty(" + a + ")");
            }
          }
          function D(b, a) {
            if (b.isMultinameType()) {
              return h.Any;
            }
            for (var e = N.savedScope, f = Y.length - 1;f >= -e.length;f--) {
              var p = 0 <= f ? Y[f] : e[e.length + f];
              if (p.isTraitsType()) {
                if (p.getTrait(b, !1, !0)) {
                  c().scopeDepth = Y.length - f - 1;
                  if (p.isClassInfo() || p.isScriptInfo()) {
                    c().object = k.Runtime.LazyInitializer.create(p.info);
                  }
                  R && R.debugLn("findProperty(" + b + ") -> " + p);
                  return p;
                }
              } else {
                return R && R.warnLn("findProperty(" + b + ")"), h.Any;
              }
            }
            if (e = N.domain.findDefiningScript(b.value, !1)) {
              return c().object = k.Runtime.LazyInitializer.create(e.script), p = h.from(e.script, N.domain), R && R.debugLn("findProperty(" + b + ") -> " + p), p;
            }
            R && R.warnLn("findProperty(" + b + ")");
            return h.Any;
          }
          function M(a) {
            if (a instanceof b && (a = a.getTraitAt(V.index), R && R.debugLn("accessSlot() -> " + a), a)) {
              c().trait = a;
              if (a.isSlot()) {
                return h.fromName(a.typeName, N.domain).instanceType();
              }
              if (a.isClass()) {
                return h.from(a.classInfo, N.domain);
              }
            }
            return h.Any;
          }
          function U(b) {
            if (b.isTraitsType() || b.isParameterizedType()) {
              return b === h.Function || b === h.Class || b === h.Object ? h.Object : b.instanceType();
            }
            R && R.warnLn("construct(" + b + ")");
            return h.Any;
          }
          for (var N = this, R = this.writer, T = this.methodInfo, X = T.analysis.bytecodes, da = f.local, x = f.stack, Y = f.scope, V, ba = this.savedScope[0], Z, O, aa, ea = a.position, ia = a.end.position;ea <= ia;ea++) {
            if (V = X[ea], Z = V.op, 240 !== Z && 241 !== Z) {
              switch(R && 1 < d.AVM2.Verifier.traceLevel.value && R.writeLn(("stateBefore: " + f.toString() + " $$[" + this.savedScope.join(", ") + "]").padRight(" ", 100) + " : " + ea + ", " + V.toString(T.abc)), Z) {
                case 1:
                  break;
                case 3:
                  l();
                  break;
                case 4:
                  aa = B();
                  O = l();
                  c().baseClass = k.Runtime.LazyInitializer.create(this.thisType.asTraitsType().super().classType().info);
                  p(u(O.super(), aa));
                  break;
                case 5:
                  Z = l();
                  aa = B();
                  O = l();
                  c().baseClass = k.Runtime.LazyInitializer.create(this.thisType.asTraitsType().super().classType().info);
                  w(O.super(), aa, Z);
                  break;
                case 6:
                  I();
                  break;
                case 7:
                  I();
                  break;
                case 8:
                  f.local[V.index] = h.Undefined;
                  break;
                case 10:
                  I();
                  break;
                case 11:
                  I();
                  break;
                case 12:
                ;
                case 24:
                ;
                case 13:
                ;
                case 23:
                ;
                case 14:
                ;
                case 22:
                ;
                case 15:
                ;
                case 21:
                ;
                case 19:
                ;
                case 20:
                ;
                case 25:
                ;
                case 26:
                  l();
                  l();
                  break;
                case 16:
                  break;
                case 17:
                ;
                case 18:
                  l();
                  break;
                case 27:
                  l(h.Int);
                  break;
                case 29:
                  Y.pop();
                  break;
                case 30:
                ;
                case 35:
                  l(h.Int);
                  l();
                  p(h.Any);
                  break;
                case 31:
                  p(h.Boolean);
                  break;
                case 50:
                  p(h.Boolean);
                  break;
                case 32:
                  p(h.Null);
                  break;
                case 33:
                  p(h.Undefined);
                  break;
                case 34:
                  I();
                  break;
                case 36:
                  p(h.Int);
                  break;
                case 37:
                  p(h.Int);
                  break;
                case 44:
                  p(h.String);
                  break;
                case 45:
                  p(h.Int);
                  break;
                case 46:
                  p(h.Uint);
                  break;
                case 47:
                  p(h.Number);
                  break;
                case 38:
                  p(h.Boolean);
                  break;
                case 39:
                  p(h.Boolean);
                  break;
                case 40:
                  p(h.Number);
                  break;
                case 41:
                  l();
                  break;
                case 42:
                  Z = l();
                  p(Z);
                  p(Z);
                  break;
                case 43:
                  O = l();
                  aa = l();
                  p(O);
                  p(aa);
                  break;
                case 28:
                  l();
                  Y.push(h.Any);
                  break;
                case 48:
                  Y.push(l());
                  break;
                case 49:
                  I();
                  break;
                case 53:
                ;
                case 54:
                ;
                case 55:
                  p(h.Int);
                  break;
                case 56:
                ;
                case 57:
                  p(h.Number);
                  break;
                case 58:
                ;
                case 59:
                ;
                case 60:
                  l(h.Int);
                  break;
                case 61:
                ;
                case 62:
                  l(h.Number);
                  break;
                case 64:
                  p(h.Function);
                  break;
                case 65:
                  q(x, V.argCount);
                  O = l();
                  l();
                  p(h.Any);
                  break;
                case 67:
                  throw new t("callmethod");;
                case 68:
                  I();
                  break;
                case 69:
                ;
                case 78:
                ;
                case 79:
                ;
                case 70:
                ;
                case 76:
                  q(x, V.argCount);
                  aa = B();
                  O = l();
                  if (69 === Z || 78 === Z) {
                    O = this.thisType.super(), c().baseClass = k.Runtime.LazyInitializer.create(this.thisType.asTraitsType().super().classType().info);
                  }
                  O = u(O, aa);
                  if (79 === Z || 78 === Z) {
                    break;
                  }
                  O = O.isMethodType() ? O.asMethodType().returnType().instanceType() : O.isTraitsType() && O.isClassInfo() ? O.instanceType() : h.Any;
                  p(O);
                  break;
                case 71:
                  this.returnType.merge(h.Undefined);
                  break;
                case 72:
                  O = l();
                  T.returnType && (aa = h.fromName(T.returnType, this.domain).instanceType(), aa.isSubtypeOf(O) && (c().noCoercionNeeded = !0));
                  break;
                case 73:
                  q(x, V.argCount);
                  x.pop();
                  this.thisType.isInstanceInfo() && this.thisType.super() === h.Object ? c().noCallSuperNeeded = !0 : c().baseClass = k.Runtime.LazyInitializer.create(this.thisType.asTraitsType().super().classType().info);
                  break;
                case 66:
                  q(x, V.argCount);
                  p(U(l()));
                  break;
                case 74:
                  q(x, V.argCount);
                  aa = B();
                  p(U(u(x.pop(), aa)));
                  break;
                case 75:
                  I();
                  break;
                case 77:
                  I();
                  break;
                case 80:
                ;
                case 81:
                ;
                case 82:
                  break;
                case 83:
                  Z = l();
                  O = l();
                  O === h.Any ? p(h.Any) : p(O.applyType(Z));
                  break;
                case 84:
                  I();
                  break;
                case 85:
                  q(x, 2 * V.argCount);
                  p(h.Object);
                  break;
                case 86:
                  q(x, V.argCount);
                  p(h.Array);
                  break;
                case 87:
                  p(h.from(this.methodInfo, this.domain));
                  break;
                case 88:
                  p(h.Any);
                  break;
                case 89:
                  B();
                  l();
                  p(h.XMLList);
                  break;
                case 90:
                  p(h.Any);
                  break;
                case 93:
                  p(D(B(), !0));
                  break;
                case 94:
                  p(D(B(), !1));
                  break;
                case 95:
                  I();
                  break;
                case 96:
                  aa = B();
                  p(u(D(aa, !0), aa));
                  break;
                case 104:
                ;
                case 97:
                  Z = l();
                  aa = B();
                  O = l();
                  w(O, aa, Z);
                  break;
                case 98:
                  p(da[V.index]);
                  break;
                case 99:
                  da[V.index] = l();
                  break;
                case 100:
                  p(ba);
                  c().object = k.Runtime.LazyInitializer.create(ba.asTraitsType().info);
                  break;
                case 101:
                  p(Y[V.index]);
                  break;
                case 102:
                  aa = B();
                  O = l();
                  p(u(O, aa));
                  break;
                case 103:
                  I();
                  break;
                case 105:
                  I();
                  break;
                case 106:
                  B();
                  l();
                  p(h.Boolean);
                  break;
                case 107:
                  I();
                  break;
                case 108:
                  p(M(l()));
                  break;
                case 109:
                  Z = l();
                  O = l();
                  M(O);
                  break;
                case 110:
                  I();
                  break;
                case 111:
                  I();
                  break;
                case 112:
                  l();
                  p(h.String);
                  break;
                case 113:
                  l();
                  p(h.String);
                  break;
                case 114:
                  l();
                  p(h.String);
                  break;
                case 131:
                ;
                case 115:
                  l();
                  p(h.Int);
                  break;
                case 136:
                ;
                case 116:
                  l();
                  p(h.Uint);
                  break;
                case 132:
                ;
                case 117:
                  l();
                  p(h.Number);
                  break;
                case 129:
                ;
                case 118:
                  l();
                  p(h.Boolean);
                  break;
                case 119:
                  I();
                  break;
                case 120:
                  break;
                case 121:
                  l();
                  p(h.Number);
                  break;
                case 122:
                  I();
                  break;
                case 123:
                  I();
                  break;
                case 128:
                  O = l();
                  aa = h.fromName(this.multinames[V.index], this.domain).instanceType();
                  aa.isSubtypeOf(O) && (c().noCoercionNeeded = !0);
                  p(aa);
                  break;
                case 130:
                  break;
                case 133:
                  l();
                  p(h.String);
                  break;
                case 134:
                  O = l();
                  aa = h.fromName(this.multinames[V.index], this.domain).instanceType();
                  aa.isSubtypeOf(O) && (c().noCoercionNeeded = !0);
                  p(aa);
                  break;
                case 135:
                  O = l();
                  l();
                  O === h.Class ? p(O) : O.isTraitsType() ? p(O.instanceType()) : p(h.Any);
                  break;
                case 137:
                  I();
                  break;
                case 144:
                ;
                case 145:
                ;
                case 147:
                  l();
                  p(h.Number);
                  break;
                case 146:
                ;
                case 148:
                  da[V.index] = h.Number;
                  break;
                case 149:
                  l();
                  p(h.String);
                  break;
                case 150:
                  l();
                  p(h.Boolean);
                  break;
                case 160:
                  aa = l();
                  O = l();
                  O.isNumeric() && aa.isNumeric() ? p(h.Number) : O === h.String || aa === h.String ? p(h.String) : p(h.Any);
                  break;
                case 161:
                ;
                case 162:
                ;
                case 163:
                ;
                case 164:
                  l();
                  l();
                  p(h.Number);
                  break;
                case 168:
                ;
                case 169:
                ;
                case 170:
                ;
                case 165:
                ;
                case 166:
                ;
                case 167:
                  l();
                  l();
                  p(h.Int);
                  break;
                case 151:
                  l();
                  p(h.Int);
                  break;
                case 171:
                ;
                case 172:
                ;
                case 173:
                ;
                case 174:
                ;
                case 175:
                ;
                case 176:
                ;
                case 177:
                ;
                case 180:
                  l();
                  l();
                  p(h.Boolean);
                  break;
                case 178:
                  l();
                  p(h.Boolean);
                  break;
                case 179:
                  l();
                  l();
                  p(h.Boolean);
                  break;
                case 194:
                ;
                case 195:
                  da[V.index] = h.Int;
                  break;
                case 193:
                ;
                case 192:
                ;
                case 196:
                  l();
                  p(h.Int);
                  break;
                case 197:
                ;
                case 198:
                ;
                case 199:
                  l();
                  l();
                  p(h.Int);
                  break;
                case 208:
                ;
                case 209:
                ;
                case 210:
                ;
                case 211:
                  p(da[Z - 208]);
                  break;
                case 212:
                ;
                case 213:
                ;
                case 214:
                ;
                case 215:
                  da[Z - 212] = l();
                  break;
                case 239:
                  break;
                case 242:
                  break;
                case 243:
                  break;
                default:
                  console.info("Not Implemented: " + V);
              }
            }
          }
        };
        return a;
      }(), D = function() {
        function b() {
        }
        b.prototype._prepareScopeObjects = function(b, a) {
          var e = b.abc.applicationDomain;
          return a.getScopeObjects().map(function(b) {
            return b instanceof l ? h.from(b, e) : b instanceof d.AVM2.Runtime.Global ? h.from(b.scriptInfo, e) : b instanceof d.AVM2.AS.ASClass ? h.from(b.classInfo, e) : b instanceof d.AVM2.Runtime.ActivationInfo ? h.from(b.methodInfo, e) : b.class ? h.from(b.class.classInfo.instanceInfo, e) : h.Any;
          });
        };
        b.prototype.verifyMethod = function(b, a) {
          var e = this._prepareScopeObjects(b, a);
          (new B(b, b.abc.applicationDomain, e)).verify();
        };
        return b;
      }();
      a.Verifier = D;
    })(k.Verifier || (k.Verifier = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        function k(b, a) {
          for (var e = 0;e < b.length;e++) {
            a(b[e]);
          }
        }
        function v(a) {
          var p, q = d.StringUtilities;
          if (a instanceof e) {
            return a.value instanceof u ? a.value.name : a.value;
          }
          if (a instanceof f) {
            return a.name;
          }
          if (a instanceof h) {
            return p = q.concat3("|", a.id, "|"), p;
          }
          if (a instanceof g) {
            return p = q.concat3("{", a.id, "}"), p;
          }
          if (a instanceof b) {
            return 3 === a.type ? (p = q.concat5("[", a.id, "->", a.argument.id, "]"), p) : (p = q.concat3("(", a.id, ")"), p);
          }
          if (a instanceof m) {
            return p = q.concat3("(", a.id, ")"), p;
          }
          if (a instanceof c) {
            return a.id;
          }
          l(a + " " + typeof a);
        }
        var u = d.AVM2.ABC.Multiname, l = d.Debug.unexpected;
        (function(b) {
          b[b.NumericProperty = 1] = "NumericProperty";
          b[b.RESOLVED = 2] = "RESOLVED";
          b[b.PRISTINE = 4] = "PRISTINE";
          b[b.IS_METHOD = 8] = "IS_METHOD";
          b[b.AS_CALL = 16] = "AS_CALL";
        })(a.Flags || (a.Flags = {}));
        var c = function() {
          function b() {
            this.id = b.getNextID();
          }
          b.getNextID = function() {
            return b._nextID[b._nextID.length - 1] += 1;
          };
          b.prototype.visitInputs = function(b) {
          };
          b.startNumbering = function() {
            b._nextID.push(0);
          };
          b.stopNumbering = function() {
            b._nextID.pop();
          };
          b.prototype.toString = function(b) {
            if (b) {
              return v(this);
            }
            var a = [];
            this.visitInputs(function(b) {
              a.push(v(b));
            });
            b = v(this) + " = " + this.nodeName.toUpperCase();
            a.length && (b += " " + a.join(", "));
            return b;
          };
          b.prototype.visitInputsNoConstants = function(b) {
            this.visitInputs(function(e) {
              a.isConstant(e) || b(e);
            });
          };
          b.prototype.replaceInput = function(a, e) {
            var f = 0, c;
            for (c in this) {
              var h = this[c];
              h instanceof b && h === a && (this[c] = e, f++);
              h instanceof Array && (f += h.replace(a, e));
            }
            return f;
          };
          b._nextID = [];
          return b;
        }();
        a.Node = c;
        c.prototype.nodeName = "Node";
        var g = function(b) {
          function a() {
            b.call(this);
          }
          __extends(a, b);
          return a;
        }(c);
        a.Control = g;
        g.prototype.nodeName = "Control";
        var q = function(b) {
          function a(e) {
            b.call(this);
            this.predecessors = e ? [e] : [];
          }
          __extends(a, b);
          a.prototype.visitInputs = function(b) {
            k(this.predecessors, b);
          };
          return a;
        }(g);
        a.Region = q;
        q.prototype.nodeName = "Region";
        q = function(b) {
          function a() {
            b.call(this, null);
            this.control = this;
          }
          __extends(a, b);
          a.prototype.visitInputs = function(b) {
            k(this.predecessors, b);
            b(this.scope);
          };
          return a;
        }(q);
        a.Start = q;
        q.prototype.nodeName = "Start";
        q = function(b) {
          function a(e) {
            b.call(this);
            this.control = e;
          }
          __extends(a, b);
          a.prototype.visitInputs = function(b) {
            b(this.control);
          };
          return a;
        }(g);
        a.End = q;
        q.prototype.nodeName = "End";
        var t = function(b) {
          function a(e, f, c) {
            b.call(this, e);
            this.store = f;
            this.argument = c;
          }
          __extends(a, b);
          a.prototype.visitInputs = function(b) {
            b(this.control);
            b(this.store);
            b(this.argument);
          };
          return a;
        }(q);
        a.Stop = t;
        t.prototype.nodeName = "Stop";
        t = function(b) {
          function a(e, f) {
            b.call(this, e);
            this.predicate = f;
          }
          __extends(a, b);
          a.prototype.visitInputs = function(b) {
            b(this.control);
            b(this.predicate);
          };
          return a;
        }(q);
        a.If = t;
        t.prototype.nodeName = "If";
        t = function(b) {
          function a(e, f) {
            b.call(this, e);
            this.determinant = f;
          }
          __extends(a, b);
          a.prototype.visitInputs = function(b) {
            b(this.control);
            b(this.determinant);
          };
          return a;
        }(q);
        a.Switch = t;
        t.prototype.nodeName = "Switch";
        q = function(b) {
          function a(e) {
            b.call(this, e);
          }
          __extends(a, b);
          a.prototype.visitInputs = function(b) {
            b(this.control);
          };
          return a;
        }(q);
        a.Jump = q;
        q.prototype.nodeName = "Jump";
        var m = function(b) {
          function a() {
            b.call(this);
          }
          __extends(a, b);
          return a;
        }(c);
        a.Value = m;
        m.prototype.nodeName = "Value";
        q = function(b) {
          function a() {
            b.call(this);
          }
          __extends(a, b);
          return a;
        }(m);
        a.Store = q;
        q.prototype.nodeName = "Store";
        q = function(b) {
          function a(e, f) {
            b.call(this);
            this.control = e;
            this.store = f;
          }
          __extends(a, b);
          a.prototype.visitInputs = function(b) {
            this.control && b(this.control);
            this.store && b(this.store);
            this.loads && k(this.loads, b);
          };
          return a;
        }(m);
        a.StoreDependent = q;
        q.prototype.nodeName = "StoreDependent";
        t = function(b) {
          function a(e, f, c, h, p, g) {
            b.call(this, e, f);
            this.callee = c;
            this.object = h;
            this.args = p;
            this.flags = g;
          }
          __extends(a, b);
          a.prototype.visitInputs = function(b) {
            this.control && b(this.control);
            this.store && b(this.store);
            this.loads && k(this.loads, b);
            b(this.callee);
            this.object && b(this.object);
            k(this.args, b);
          };
          return a;
        }(q);
        a.Call = t;
        t.prototype.nodeName = "Call";
        t = function(b) {
          function a(e, f, c, h) {
            b.call(this, e, f);
            this.callee = c;
            this.args = h;
          }
          __extends(a, b);
          a.prototype.visitInputs = function(b) {
            this.control && b(this.control);
            this.store && b(this.store);
            this.loads && k(this.loads, b);
            b(this.callee);
            k(this.args, b);
          };
          return a;
        }(q);
        a.New = t;
        t.prototype.nodeName = "New";
        t = function(b) {
          function a(e, f, c, h) {
            b.call(this, e, f);
            this.object = c;
            this.name = h;
          }
          __extends(a, b);
          a.prototype.visitInputs = function(b) {
            this.control && b(this.control);
            this.store && b(this.store);
            this.loads && k(this.loads, b);
            b(this.object);
            b(this.name);
          };
          return a;
        }(q);
        a.GetProperty = t;
        t.prototype.nodeName = "GetProperty";
        t = function(b) {
          function a(e, f, c, h, p) {
            b.call(this, e, f);
            this.object = c;
            this.name = h;
            this.value = p;
          }
          __extends(a, b);
          a.prototype.visitInputs = function(b) {
            this.control && b(this.control);
            this.store && b(this.store);
            this.loads && k(this.loads, b);
            b(this.object);
            b(this.name);
            b(this.value);
          };
          return a;
        }(q);
        a.SetProperty = t;
        t.prototype.nodeName = "SetProperty";
        t = function(b) {
          function a(e, f, c, h) {
            b.call(this, e, f);
            this.object = c;
            this.name = h;
          }
          __extends(a, b);
          a.prototype.visitInputs = function(b) {
            this.control && b(this.control);
            this.store && b(this.store);
            this.loads && k(this.loads, b);
            b(this.object);
            b(this.name);
          };
          return a;
        }(q);
        a.DeleteProperty = t;
        t.prototype.nodeName = "DeleteProperty";
        q = function(b) {
          function a(e, f, c, h, p, g) {
            b.call(this, e, f);
            this.object = c;
            this.name = h;
            this.args = p;
            this.flags = g;
          }
          __extends(a, b);
          a.prototype.visitInputs = function(b) {
            this.control && b(this.control);
            this.store && b(this.store);
            this.loads && k(this.loads, b);
            b(this.object);
            b(this.name);
            k(this.args, b);
          };
          return a;
        }(q);
        a.CallProperty = q;
        q.prototype.nodeName = "CallProperty";
        var h = function(b) {
          function a(e, f) {
            b.call(this);
            this.control = this.control = e;
            this.args = f ? [f] : [];
          }
          __extends(a, b);
          a.prototype.visitInputs = function(b) {
            this.control && b(this.control);
            k(this.args, b);
          };
          a.prototype.seal = function() {
            this.sealed = !0;
          };
          a.prototype.pushValue = function(b) {
            this.args.push(b);
          };
          return a;
        }(m);
        a.Phi = h;
        h.prototype.nodeName = "Phi";
        var f = function(b) {
          function a(e) {
            b.call(this);
            this.name = e;
          }
          __extends(a, b);
          return a;
        }(m);
        a.Variable = f;
        f.prototype.nodeName = "Variable";
        q = function(b) {
          function a(e) {
            b.call(this);
            this.argument = e;
          }
          __extends(a, b);
          a.prototype.visitInputs = function(b) {
            b(this.argument);
          };
          return a;
        }(m);
        a.Copy = q;
        q.prototype.nodeName = "Copy";
        q = function(b) {
          function a(e, f) {
            b.call(this);
            this.to = e;
            this.from = f;
          }
          __extends(a, b);
          a.prototype.visitInputs = function(b) {
            b(this.to);
            b(this.from);
          };
          return a;
        }(m);
        a.Move = q;
        q.prototype.nodeName = "Move";
        (function(b) {
          b[b.CASE = 0] = "CASE";
          b[b.TRUE = 1] = "TRUE";
          b[b.FALSE = 2] = "FALSE";
          b[b.STORE = 3] = "STORE";
          b[b.SCOPE = 4] = "SCOPE";
        })(a.ProjectionType || (a.ProjectionType = {}));
        var b = function(b) {
          function a(e, f, c) {
            b.call(this);
            this.argument = e;
            this.type = f;
            this.selector = c;
          }
          __extends(a, b);
          a.prototype.visitInputs = function(b) {
            b(this.argument);
          };
          a.prototype.project = function() {
            return this.argument;
          };
          return a;
        }(m);
        a.Projection = b;
        b.prototype.nodeName = "Projection";
        q = function(b) {
          function a(e, f, c, h) {
            b.call(this);
            this.control = e;
            this.condition = f;
            this.left = c;
            this.right = h;
          }
          __extends(a, b);
          a.prototype.visitInputs = function(b) {
            this.control && b(this.control);
            b(this.condition);
            b(this.left);
            b(this.right);
          };
          return a;
        }(m);
        a.Latch = q;
        q.prototype.nodeName = "Latch";
        q = function() {
          function b(a, e, f) {
            this.name = a;
            this.evaluate = e;
            this.isBinary = f;
            b.byName[a] = this;
          }
          b.linkOpposites = function(b, a) {
            b.not = a;
            a.not = b;
          };
          b.fromName = function(a) {
            return b.byName[a];
          };
          b.byName = Object.create(null);
          b.ADD = new b("+", function(b, a) {
            return b + a;
          }, !0);
          b.SUB = new b("-", function(b, a) {
            return b - a;
          }, !0);
          b.MUL = new b("*", function(b, a) {
            return b * a;
          }, !0);
          b.DIV = new b("/", function(b, a) {
            return b / a;
          }, !0);
          b.MOD = new b("%", function(b, a) {
            return b % a;
          }, !0);
          b.AND = new b("&", function(b, a) {
            return b & a;
          }, !0);
          b.OR = new b("|", function(b, a) {
            return b | a;
          }, !0);
          b.XOR = new b("^", function(b, a) {
            return b ^ a;
          }, !0);
          b.LSH = new b("<<", function(b, a) {
            return b << a;
          }, !0);
          b.RSH = new b(">>", function(b, a) {
            return b >> a;
          }, !0);
          b.URSH = new b(">>>", function(b, a) {
            return b >>> a;
          }, !0);
          b.SEQ = new b("===", function(b, a) {
            return b === a;
          }, !0);
          b.SNE = new b("!==", function(b, a) {
            return b !== a;
          }, !0);
          b.EQ = new b("==", function(b, a) {
            return b == a;
          }, !0);
          b.NE = new b("!=", function(b, a) {
            return b != a;
          }, !0);
          b.LE = new b("<=", function(b, a) {
            return b <= a;
          }, !0);
          b.GT = new b(">", function(b, a) {
            return b > a;
          }, !0);
          b.LT = new b("<", function(b, a) {
            return b < a;
          }, !0);
          b.GE = new b(">=", function(b, a) {
            return b >= a;
          }, !0);
          b.PLUS = new b("+", function(b) {
            return +b;
          }, !1);
          b.NEG = new b("-", function(b) {
            return -b;
          }, !1);
          b.TRUE = new b("!!", function(b) {
            return !!b;
          }, !1);
          b.FALSE = new b("!", function(b) {
            return !b;
          }, !1);
          b.TYPE_OF = new b("typeof", function(b) {
            return typeof b;
          }, !1);
          b.BITWISE_NOT = new b("~", function(b) {
            return ~b;
          }, !1);
          b.AS_ADD = new b("+", function(b, a) {
            return "string" === typeof b || "string" === typeof a ? String(b) + String(a) : b + a;
          }, !0);
          return b;
        }();
        a.Operator = q;
        q.linkOpposites(q.SEQ, q.SNE);
        q.linkOpposites(q.EQ, q.NE);
        q.linkOpposites(q.TRUE, q.FALSE);
        q = function(b) {
          function a(e, f, c) {
            b.call(this);
            this.operator = e;
            this.left = f;
            this.right = c;
          }
          __extends(a, b);
          a.prototype.visitInputs = function(b) {
            b(this.left);
            b(this.right);
          };
          return a;
        }(m);
        a.Binary = q;
        q.prototype.nodeName = "Binary";
        q = function(b) {
          function a(e, f) {
            b.call(this);
            this.operator = e;
            this.argument = f;
          }
          __extends(a, b);
          a.prototype.visitInputs = function(b) {
            b(this.argument);
          };
          return a;
        }(m);
        a.Unary = q;
        q.prototype.nodeName = "Unary";
        var e = function(b) {
          function a(e) {
            b.call(this);
            this.value = e;
          }
          __extends(a, b);
          return a;
        }(m);
        a.Constant = e;
        e.prototype.nodeName = "Constant";
        q = function(b) {
          function a(e) {
            b.call(this);
            this.name = e;
          }
          __extends(a, b);
          return a;
        }(m);
        a.GlobalProperty = q;
        q.prototype.nodeName = "GlobalProperty";
        q = function(b) {
          function a(e) {
            b.call(this);
            this.control = e;
          }
          __extends(a, b);
          a.prototype.visitInputs = function(b) {
            b(this.control);
          };
          return a;
        }(m);
        a.This = q;
        q.prototype.nodeName = "This";
        q = function(b) {
          function a(e, f) {
            b.call(this);
            this.control = e;
            this.argument = f;
          }
          __extends(a, b);
          a.prototype.visitInputs = function(b) {
            b(this.control);
            b(this.argument);
          };
          return a;
        }(m);
        a.Throw = q;
        q.prototype.nodeName = "Throw";
        q = function(b) {
          function a(e) {
            b.call(this);
            this.control = e;
          }
          __extends(a, b);
          a.prototype.visitInputs = function(b) {
            b(this.control);
          };
          return a;
        }(m);
        a.Arguments = q;
        q.prototype.nodeName = "Arguments";
        q = function(b) {
          function a(e, f, c) {
            b.call(this);
            this.control = e;
            this.index = f;
            this.name = c;
          }
          __extends(a, b);
          a.prototype.visitInputs = function(b) {
            b(this.control);
          };
          return a;
        }(m);
        a.Parameter = q;
        q.prototype.nodeName = "Parameter";
        q = function(b) {
          function a(e, f) {
            b.call(this);
            this.control = e;
            this.elements = f;
          }
          __extends(a, b);
          a.prototype.visitInputs = function(b) {
            b(this.control);
            k(this.elements, b);
          };
          return a;
        }(m);
        a.NewArray = q;
        q.prototype.nodeName = "NewArray";
        q = function(b) {
          function a(e, f) {
            b.call(this);
            this.control = e;
            this.properties = f;
          }
          __extends(a, b);
          a.prototype.visitInputs = function(b) {
            b(this.control);
            k(this.properties, b);
          };
          return a;
        }(m);
        a.NewObject = q;
        q.prototype.nodeName = "NewObject";
        q = function(b) {
          function a(e, f) {
            b.call(this);
            this.key = e;
            this.value = f;
          }
          __extends(a, b);
          a.prototype.visitInputs = function(b) {
            b(this.key);
            b(this.value);
          };
          return a;
        }(m);
        a.KeyValuePair = q;
        q.prototype.mustFloat = !0;
        q.prototype.nodeName = "KeyValuePair";
        a.nameOf = v;
      })(a.IR || (a.IR = {}));
    })(k.Compiler || (k.Compiler = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        function w(b) {
          return b.id;
        }
        function v(b) {
          return b instanceof a.Phi;
        }
        function u(b) {
          return b instanceof a.Constant && b.value instanceof f;
        }
        function l(b) {
          return v(b) || b instanceof a.Store || t(b, 3);
        }
        function c(b) {
          return b instanceof a.Constant;
        }
        function g(b) {
          return b instanceof a.Control;
        }
        function q(b) {
          return b instanceof a.Value;
        }
        function t(b, e) {
          return b instanceof a.Projection && (!e || b.type === e);
        }
        function m(b) {
          return b instanceof a.Projection ? b.project() : b;
        }
        var h = d.Debug.unexpected, f = d.AVM2.ABC.Multiname, b = d.ArrayUtilities.top, e = d.ArrayUtilities.pushUnique, r = d.ArrayUtilities.unique;
        a.isNotPhi = function(b) {
          return !v(b);
        };
        a.isPhi = v;
        a.isScope = function(b) {
          return v(b) || b instanceof a.ASScope || t(b, 4);
        };
        a.isMultinameConstant = u;
        a.isMultiname = function(b) {
          return u(b) || b instanceof a.ASMultiname;
        };
        a.isStore = l;
        a.isConstant = c;
        a.isControlOrNull = function(b) {
          return g(b) || null === b;
        };
        a.isStoreOrNull = function(b) {
          return l(b) || null === b;
        };
        a.isControl = g;
        a.isValueOrNull = function(b) {
          return q(b) || null === b;
        };
        a.isValue = q;
        a.isProjection = t;
        a.Null = new a.Constant(null);
        a.Undefined = new a.Constant(void 0);
        a.True = new a.Constant(!0);
        a.False = new a.Constant(!1);
        var p = function() {
          function b(a, e, f) {
            this.id = a;
            this.nodes = [e, f];
            this.region = e;
            this.successors = [];
            this.predecessors = [];
          }
          b.prototype.pushSuccessorAt = function(b, a) {
            this.successors[a] = b;
            b.pushPredecessor(this);
          };
          b.prototype.pushSuccessor = function(b, a) {
            this.successors.push(b);
            a && b.pushPredecessor(this);
          };
          b.prototype.pushPredecessor = function(b) {
            this.predecessors.push(b);
          };
          b.prototype.visitNodes = function(b) {
            for (var a = this.nodes, e = 0, f = a.length;e < f;e++) {
              b(a[e]);
            }
          };
          b.prototype.visitSuccessors = function(b) {
            for (var a = this.successors, e = 0, f = a.length;e < f;e++) {
              b(a[e]);
            }
          };
          b.prototype.visitPredecessors = function(b) {
            for (var a = this.predecessors, e = 0, f = a.length;e < f;e++) {
              b(a[e]);
            }
          };
          b.prototype.append = function(b) {
            b.mustFloat || this.nodes.splice(this.nodes.length - 1, 0, b);
          };
          b.prototype.toString = function() {
            return "B" + this.id + (this.name ? " (" + this.name + ")" : "");
          };
          b.prototype.trace = function(b) {
            b.writeLn(this.toString());
          };
          return b;
        }();
        a.Block = p;
        var C = function() {
          function e(b) {
            this.exit = this.exit = b;
          }
          e.prototype.buildCFG = function() {
            return B.fromDFG(this);
          };
          e.preOrderDepthFirstSearch = function(b, a, e) {
            var f = [];
            b = [b];
            for (var c = b.push.bind(b), h;h = b.pop();) {
              1 !== f[h.id] && (f[h.id] = 1, e(h), b.push(h), a(h, c));
            }
          };
          e.postOrderDepthFirstSearch = function(a, e, f) {
            function c(b) {
              h[b.id] || g.push(b);
            }
            for (var h = [], g = [a];a = b(g);) {
              h[a.id] ? (1 === h[a.id] && (h[a.id] = 2, f(a)), g.pop()) : (h[a.id] = 1, e(a, c));
            }
          };
          e.prototype.forEachInPreOrderDepthFirstSearch = function(b) {
            function a(b) {
              c(b) || f.push(b);
            }
            for (var e = Array(1024), f = [this.exit], h;h = f.pop();) {
              e[h.id] || (e[h.id] = 1, b && b(h), f.push(h), h.visitInputs(a));
            }
          };
          e.prototype.forEach = function(b, a) {
            (a ? e.postOrderDepthFirstSearch : e.preOrderDepthFirstSearch)(this.exit, function(b, a) {
              b.visitInputsNoConstants(a);
            }, b);
          };
          e.prototype.traceMetrics = function(b) {
            var a = new d.Metrics.Counter(!0);
            e.preOrderDepthFirstSearch(this.exit, function(b, a) {
              b.visitInputsNoConstants(a);
            }, function(b) {
              k.countTimeline(b.nodeName);
            });
            a.trace(b);
          };
          e.prototype.trace = function(b) {
            function e(b) {
              return b instanceof a.Control ? "yellow" : b instanceof a.Phi ? "purple" : b instanceof a.Value ? "green" : "white";
            }
            function f(b) {
              return b instanceof a.Projection ? b.project() : b;
            }
            function c(b) {
              b = f(b);
              g[b.id] || (g[b.id] = !0, b.block && p.push(b.block), h.push(b), b.visitInputsNoConstants(c));
            }
            var h = [], g = {}, p = [];
            c(this.exit);
            b.writeLn("");
            b.enter("digraph DFG {");
            b.writeLn("graph [bgcolor = gray10];");
            b.writeLn("edge [color = white];");
            b.writeLn("node [shape = box, fontname = Consolas, fontsize = 11, color = white, fontcolor = white];");
            b.writeLn("rankdir = BT;");
            p.forEach(function(a) {
              b.enter("subgraph cluster" + a.nodes[0].id + " { bgcolor = gray20;");
              a.visitNodes(function(a) {
                a = f(a);
                b.writeLn("N" + a.id + ";");
              });
              b.leave("}");
            });
            h.forEach(function(a) {
              b.writeLn("N" + a.id + ' [label = "' + a.toString() + '", color = "' + e(a) + '"];');
            });
            h.forEach(function(a) {
              a.visitInputsNoConstants(function(c) {
                c = f(c);
                b.writeLn("N" + a.id + " -> N" + c.id + " [color=" + e(c) + "];");
              });
            });
            b.leave("}");
            b.writeLn("");
          };
          return e;
        }();
        a.DFG = C;
        var I = function() {
          function b() {
            this.entries = [];
          }
          b.prototype.addUse = function(b, a) {
            var f = this.entries[b.id];
            f || (f = this.entries[b.id] = {def:b, uses:[]});
            e(f.uses, a);
          };
          b.prototype.trace = function(b) {
            b.enter("> Uses");
            this.entries.forEach(function(a) {
              b.writeLn(a.def.id + " -> [" + a.uses.map(w).join(", ") + "] " + a.def);
            });
            b.leave("<");
          };
          b.prototype.replace = function(b, a) {
            var e = this.entries[b.id];
            if (0 === e.uses.length) {
              return !1;
            }
            var f = 0;
            e.uses.forEach(function(e) {
              f += e.replaceInput(b, a);
            });
            e.uses = [];
            return !0;
          };
          b.prototype.updateUses = function(b, a, e, f) {
            e = e[b.id];
            if (0 === e.uses.length) {
              return !1;
            }
            var c = 0;
            e.uses.forEach(function(e) {
              c += e.replaceInput(b, a);
            });
            e.uses = [];
            return !0;
          };
          return b;
        }();
        a.Uses = I;
        var B = function() {
          function b() {
            this.nextBlockID = 0;
            this.blocks = [];
          }
          b.fromDFG = function(e) {
            function f(b) {
              b instanceof a.Projection && (b = b.project());
              if (!h[b.id]) {
                h[b.id] = !0;
                var e = b.control;
                e instanceof a.Region || (e = b.control = new a.Region(e));
                b = e.block = c.buildBlock(e, b);
                e instanceof a.Start && (c.root = b);
                for (var g = 0;g < e.predecessors.length;g++) {
                  var p = e.predecessors[g], r, m = !1;
                  p instanceof a.Projection ? (r = p.project(), m = 1 === p.type) : r = p;
                  r instanceof a.Region && (r = new a.Jump(p), r = new a.Projection(r, 1), e.predecessors[g] = r, r = r.project(), m = !0);
                  f(r);
                  var d = r.control.block;
                  r instanceof a.Switch ? d.pushSuccessorAt(b, p.selector.value) : m && 0 < d.successors.length ? (d.pushSuccessor(b, !0), d.hasFlippedSuccessors = !0) : d.pushSuccessor(b, !0);
                }
              }
            }
            var c = new b;
            c.dfg = e;
            var h = [];
            f(e.exit);
            c.splitCriticalEdges();
            c.exit = e.exit.control.block;
            c.computeDominators();
            return c;
          };
          b.prototype.buildRootAndExit = function() {
            0 < this.blocks[0].predecessors.length ? (this.root = new p(this.nextBlockID++), this.blocks.push(this.root), this.root.pushSuccessor(this.blocks[0], !0)) : this.root = this.blocks[0];
            for (var b = [], a = 0;a < this.blocks.length;a++) {
              var e = this.blocks[a];
              0 === e.successors.length && b.push(e);
            }
            if (0 === b.length) {
              h("Must have an exit block.");
            } else {
              if (1 === b.length && b[0] !== this.root) {
                this.exit = b[0];
              } else {
                for (this.exit = new p(this.nextBlockID++), this.blocks.push(this.exit), a = 0;a < b.length;a++) {
                  b[a].pushSuccessor(this.exit, !0);
                }
              }
            }
          };
          b.prototype.fromString = function(b, a) {
            function e(b) {
              var a = c[b];
              if (a) {
                return a;
              }
              c[b] = a = new p(f.nextBlockID++);
              a.name = b;
              h.push(a);
              return a;
            }
            var f = this, c = f.blockNames || (f.blockNames = {}), h = f.blocks;
            b.replace(/\ /g, "").split(",").forEach(function(b) {
              b = b.split("->");
              for (var a = null, f = 0;f < b.length;f++) {
                var c = b[f];
                if (a) {
                  var h = c;
                  e(a).pushSuccessor(e(h), !0);
                } else {
                  e(c);
                }
                a = c;
              }
            });
            this.root = c[a];
          };
          b.prototype.buildBlock = function(b, a) {
            var e = new p(this.nextBlockID++, b, a);
            this.blocks.push(e);
            return e;
          };
          b.prototype.createBlockSet = function() {
            this.setConstructor || (this.setConstructor = d.BitSets.BitSetFunctor(this.blocks.length));
            return new this.setConstructor;
          };
          b.prototype.computeReversePostOrder = function() {
            if (this.order) {
              return this.order;
            }
            var b = this.order = [];
            this.depthFirstSearch(null, b.push.bind(b));
            b.reverse();
            for (var a = 0;a < b.length;a++) {
              b[a].rpo = a;
            }
            return b;
          };
          b.prototype.depthFirstSearch = function(b, a) {
            function e(c) {
              f.set(c.id);
              b && b(c);
              for (var h = c.successors, g = 0, p = h.length;g < p;g++) {
                var r = h[g];
                f.get(r.id) || e(r);
              }
              a && a(c);
            }
            var f = this.createBlockSet();
            e(this.root);
          };
          b.prototype.computeDominators = function() {
            function b(a) {
              var e;
              if (void 0 !== a.dominatorDepth) {
                return a.dominatorDepth;
              }
              e = a.dominator ? b(a.dominator) + 1 : 0;
              return a.dominatorDepth = e;
            }
            for (var a = new Int32Array(this.blocks.length), e = 0;e < a.length;e++) {
              a[e] = -1;
            }
            var f = this.createBlockSet();
            this.depthFirstSearch(function(b) {
              for (var e = b.successors, c = 0, h = e.length;c < h;c++) {
                var g = e[c].id, p = b.id, r = g;
                if (!(0 > a[g])) {
                  g = a[g];
                  for (f.clearAll();0 <= g;) {
                    f.set(g), g = a[g];
                  }
                  for (;0 <= p && !f.get(p);) {
                    p = a[p];
                  }
                }
                a[r] = p;
              }
            });
            for (var e = 0, c = this.blocks.length;e < c;e++) {
              this.blocks[e].dominator = this.blocks[a[e]];
            }
            e = 0;
            for (c = this.blocks.length;e < c;e++) {
              b(this.blocks[e]);
            }
          };
          b.prototype.computeLoops = function() {
            function b(c) {
              if (e.get(c.id)) {
                return a.get(c.id) && !c.isLoopHeader && (c.isLoopHeader = !0, c.loops = 1 << f, f += 1), c.loops;
              }
              e.set(c.id);
              a.set(c.id);
              for (var h = 0, g = 0, p = c.successors.length;g < p;g++) {
                h |= b(c.successors[g]);
              }
              c.isLoopHeader && (h &= ~c.loops);
              c.loops = h;
              a.clear(c.id);
              return h;
            }
            var a = this.createBlockSet(), e = this.createBlockSet(), f = 0;
            b(this.root);
          };
          b.prototype.computeUses = function() {
            k.enterTimeline("computeUses");
            var b = this.dfg, a = new I;
            b.forEachInPreOrderDepthFirstSearch(function(b) {
              b.visitInputs(function(e) {
                a.addUse(e, b);
              });
            });
            k.leaveTimeline();
            return a;
          };
          b.prototype.verify = function() {
            this.computeReversePostOrder().forEach(function(b) {
              b.phis && b.phis.forEach(function(b) {
              });
            });
          };
          b.prototype.optimizePhis = function() {
            function b(a, e) {
              e = r(e);
              if (1 === e.length) {
                return e[0];
              }
              if (2 === e.length) {
                if (e[0] === a) {
                  return e[1];
                }
                if (e[1] === a) {
                  return e[0];
                }
              }
              return a;
            }
            var a = [], e = this.computeUses().entries;
            e.forEach(function(b) {
              v(b.def) && a.push(b.def);
            });
            for (var f = 0, c = 0, h = !0;h;) {
              c++, h = !1, a.forEach(function(a) {
                var c = b(a, a.args);
                if (c !== a) {
                  var g = e[a.id];
                  if (0 === g.uses.length) {
                    a = !1;
                  } else {
                    for (var p = 0, r = g.uses, m = 0, d = r.length;m < d;m++) {
                      p += r[m].replaceInput(a, c);
                    }
                    g.uses = [];
                    a = !0;
                  }
                  a && (h = !0, f++);
                }
              });
            }
          };
          b.prototype.splitCriticalEdges = function() {
            for (var b = this.blocks, e = [], f = 0;f < b.length;f++) {
              var c = b[f].successors;
              if (1 < c.length) {
                for (var h = 0;h < c.length;h++) {
                  1 < c[h].predecessors.length && e.push({from:b[f], to:c[h]});
                }
              }
            }
            for (;h = e.pop();) {
              var b = h.from.successors.indexOf(h.to), f = h.to.predecessors.indexOf(h.from), c = h.to, g = c.region, p = new a.Region(g.predecessors[f]), r = new a.Jump(p), p = this.buildBlock(p, r);
              g.predecessors[f] = new a.Projection(r, 1);
              h = h.from;
              h.successors[b] = p;
              p.pushPredecessor(h);
              p.pushSuccessor(c);
              c.predecessors[f] = p;
            }
          };
          b.prototype.allocateVariables = function() {
            function b(e) {
              !(t(e, 3) || e instanceof a.SetProperty) && e instanceof a.Value && (e.variable = new a.Variable("v" + e.id));
            }
            var e = this.computeReversePostOrder();
            e.forEach(function(a) {
              a.nodes.forEach(b);
              a.phis && a.phis.forEach(b);
            });
            for (var f = [], c = 0;c < e.length;c++) {
              var h = e[c], g = h.phis, h = h.predecessors;
              if (g) {
                for (var p = 0;p < g.length;p++) {
                  for (var r = g[p], m = r.args, d = 0;d < h.length;d++) {
                    var l = h[d], q = m[d];
                    q.abstract || t(q, 3) || (l = f[l.id] || (f[l.id] = []), q = q.variable || q, r.variable !== q && l.push(new a.Move(r.variable, q)));
                  }
                }
              }
            }
            var C = this.blocks;
            f.forEach(function(b, e) {
              for (var f = C[e], c = 0;b.length;) {
                for (var h = 0;h < b.length;h++) {
                  for (var g = b[h], p = 0;p < b.length;p++) {
                    if (h !== p && b[p].from === g.to) {
                      g = null;
                      break;
                    }
                  }
                  g && (b.splice(h--, 1), f.append(g));
                }
                if (b.length) {
                  for (g = b[0], p = new a.Variable("t" + c++), C[e].append(new a.Move(p, g.to)), h = 1;h < b.length;h++) {
                    b[h].from === g.to && (b[h].from = p);
                  }
                }
              }
            });
          };
          b.prototype.scheduleEarly = function() {
            function b(e) {
              return e.mustNotFloat || e.shouldNotFloat ? !1 : e.mustFloat || e.shouldFloat || e instanceof a.Parameter || e instanceof a.This || e instanceof a.Arguments ? !0 : e instanceof a.Binary || e instanceof a.Unary || e instanceof a.Parameter;
            }
            function e(a) {
              p[a.id] = !0;
              b(a) || a.control.block.append(a);
            }
            function f(b, a) {
              b.control = a;
              e(b);
            }
            function h(b) {
              var r = [];
              b.visitInputs(function(b) {
                c(b) || q(b) && r.push(m(b));
              });
              for (var d = 0;d < r.length;d++) {
                var l = r[d];
                v(l) || p[l.id] || h(l);
              }
              if (b.control) {
                b instanceof a.End || b instanceof a.Phi || b instanceof a.Start || p[b.id] || e(b);
              } else {
                if (r.length) {
                  l = r[0].control;
                  for (d = 1;d < r.length;d++) {
                    var t = r[d].control;
                    l.block.dominatorDepth < t.block.dominatorDepth && (l = t);
                  }
                  f(b, l);
                } else {
                  f(b, g.root.region);
                }
              }
            }
            var g = this, p = [], r = [];
            this.dfg.forEachInPreOrderDepthFirstSearch(function(e) {
              e instanceof a.Region || e instanceof a.Jump || (e.control && r.push(e), v(e) && e.args.forEach(function(a) {
                b(a) && (a.mustNotFloat = !0);
              }));
            });
            for (var d = 0;d < r.length;d++) {
              var l = r[d];
              if (l instanceof a.Phi) {
                var t = l.control.block;
                (t.phis || (t.phis = [])).push(l);
              }
              l.control && h(l);
            }
            r.forEach(function(b) {
              m(b);
            });
          };
          b.prototype.trace = function(b) {
            function a(b) {
              e[b.id] || (e[b.id] = !0, f.push(b), b.visitSuccessors(a));
            }
            var e = [], f = [], c = this.root, h = this.exit;
            a(c);
            b.writeLn("");
            b.enter("digraph CFG {");
            b.writeLn("graph [bgcolor = gray10];");
            b.writeLn("edge [fontname = Consolas, fontsize = 11, color = white, fontcolor = white];");
            b.writeLn("node [shape = box, fontname = Consolas, fontsize = 11, color = white, fontcolor = white, style = filled];");
            b.writeLn("rankdir = TB;");
            f.forEach(function(a) {
              var e = "";
              void 0 !== a.name && (e += " " + a.name);
              void 0 !== a.rpo && (e += " O: " + a.rpo);
              b.writeLn("B" + a.id + ' [label = "B' + a.id + e + '", fillcolor = "black", shape=' + (a === c ? "house" : a === h ? "invhouse" : "box") + ", style=filled];");
            });
            f.forEach(function(a) {
              a.visitSuccessors(function(e) {
                b.writeLn("B" + a.id + " -> B" + e.id);
              });
              a.dominator && b.writeLn("B" + a.id + " -> B" + a.dominator.id + " [color = orange];");
              a.follow && b.writeLn("B" + a.id + " -> B" + a.follow.id + " [color = purple];");
            });
            b.leave("}");
            b.writeLn("");
          };
          return b;
        }();
        a.CFG = B;
        C = function() {
          function b() {
          }
          b.prototype.foldUnary = function(b, e) {
            if (c(b.argument)) {
              return new a.Constant(b.operator.evaluate(b.argument.value));
            }
            if (e) {
              var f = this.fold(b.argument, !0);
              if (b.operator === a.Operator.TRUE) {
                return f;
              }
              if (f instanceof a.Unary) {
                if (b.operator === a.Operator.FALSE && f.operator === a.Operator.FALSE) {
                  return f.argument;
                }
              } else {
                return new a.Unary(b.operator, f);
              }
            }
            return b;
          };
          b.prototype.foldBinary = function(b, e) {
            return c(b.left) && c(b.right) ? new a.Constant(b.operator.evaluate(b.left.value, b.right.value)) : b;
          };
          b.prototype.fold = function(b, e) {
            return b instanceof a.Unary ? this.foldUnary(b, e) : b instanceof a.Binary ? this.foldBinary(b, e) : b;
          };
          return b;
        }();
        a.PeepholeOptimizer = C;
      })(a.IR || (a.IR = {}));
    })(k.Compiler || (k.Compiler = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      function n(b) {
        return b instanceof Y && d.isString(b.value);
      }
      function w(b) {
        return b instanceof Y && d.isNumeric(b.value) ? !0 : b.ty && b.ty.isNumeric();
      }
      function v(b, a) {
        return w(b) && w(a) || u(b) && u(a) ? !0 : !1;
      }
      function u(b) {
        return n(b) ? !0 : b.ty && b.ty.isString();
      }
      function l(b) {
        return new Y(b);
      }
      function c(b) {
        switch(b) {
          case 161:
            return O.SUB;
          case 162:
            return O.MUL;
          case 163:
            return O.DIV;
          case 164:
            return O.MOD;
          case 165:
            return O.LSH;
          case 166:
            return O.RSH;
          case 167:
            return O.URSH;
          case 168:
            return O.AND;
          case 169:
            return O.OR;
          case 170:
            return O.XOR;
          case 20:
            return O.NE;
          case 26:
            return O.SNE;
          case 19:
          ;
          case 171:
            return O.EQ;
          case 25:
          ;
          case 172:
            return O.SEQ;
          case 21:
          ;
          case 173:
            return O.LT;
          case 22:
          ;
          case 174:
            return O.LE;
          case 23:
          ;
          case 175:
            return O.GT;
          case 24:
          ;
          case 176:
            return O.GE;
          case 144:
            return O.NEG;
          case 196:
            return O.NEG;
          case 197:
            return O.ADD;
          case 198:
            return O.SUB;
          case 199:
            return O.MUL;
          case 17:
            return O.TRUE;
          case 18:
            return O.FALSE;
          case 150:
            return O.FALSE;
          case 151:
            return O.BITWISE_NOT;
          default:
            y("Invalid operator op: " + b);
        }
      }
      function g(b, e, f) {
        f = f.split(".");
        for (var c = 0;c < f.length;c++) {
          e = new a.IR.GetProperty(null, b.store, e, l(f[c])), e.shouldFloat = !0, b.loads.push(e);
        }
        return e;
      }
      function q(b) {
        b = new a.IR.GlobalProperty(b);
        b.mustFloat = !0;
        return b;
      }
      function t(b, a) {
        var e = new x(b, a);
        fa && (e = fa.fold(e));
        return e;
      }
      function m(b, a, e) {
        var f = new da(b, a, e);
        if (b === O.EQ || b === O.NE) {
          if (a.ty && a.ty.isStrictComparableWith(e.ty)) {
            f.operator = b === O.EQ ? O.SEQ : O.SNE;
          } else {
            if (!a.ty || a.ty.canBeXML() || !e.ty || e.ty.canBeXML()) {
              f = new V(null, null, q("asEquals"), null, [a, e], 0), b === O.NE && (f = t(O.FALSE, f));
            }
          }
        }
        fa && (f = fa.fold(f));
        return f;
      }
      function h(b) {
        return m(O.OR, b, l(0));
      }
      function f(b) {
        return m(O.URSH, b, l(0));
      }
      function b(b) {
        return w(b) ? b : t(O.PLUS, b);
      }
      function e(b) {
        return t(O.FALSE, t(O.FALSE, b));
      }
      function r(b) {
        b.shouldNotFloat = !0;
        return b;
      }
      function p(b, a) {
        return new V(null, null, b, null, a, 4);
      }
      function C(b, a) {
        return p(q(b), [a]);
      }
      function I(b) {
        return n(b) ? b : p(q("String"), [b]);
      }
      function B(b) {
        return n(b) ? b : ga(b) ? new Y(A.asCoerceString(b.value)) : p(q("asCoerceString"), [b]);
      }
      function D(b) {
        return ga(b) ? new Y(A.escapeXMLAttribute(b.value)) : p(q("escapeXMLAttribute"), [b]);
      }
      function M(b) {
        return ga(b) ? new Y(A.escapeXMLElement(b.value)) : p(q("escapeXMLElement"), [b]);
      }
      var E = d.AVM2.ABC.Multiname, J = d.AVM2.ABC.InstanceInfo, P = d.Debug.notImplemented, y = d.Debug.assertUnreachable, K = d.ArrayUtilities.top, H = d.ArrayUtilities.unique, A = d.AVM2.Runtime, z = d.AVM2.Runtime.GlobalMultinameResolver, G = a.IR.Node, L = a.IR.Start, F = a.IR.Region, S = a.IR.Null, U = a.IR.Undefined, N = a.IR.True, R = a.IR.False, T = a.IR.This, X = a.IR.Projection, da = a.IR.Binary, x = a.IR.Unary, Y = a.IR.Constant, V = a.IR.Call, ba = a.IR.Phi, Z = a.IR.Stop, O = a.IR.Operator, 
      aa = a.IR.Parameter, ea = a.IR.NewArray, ia = a.IR.NewObject, ja = a.IR.KeyValuePair, ga = a.IR.isConstant, ca = new d.IndentingWriter, fa = new a.IR.PeepholeOptimizer, Q = function() {
        function b(a) {
          void 0 === a && (a = 0);
          this.id = b._nextID += 1;
          this.index = a;
          this.local = [];
          this.stack = [];
          this.scope = [];
          this.store = U;
          this.loads = [];
          this.saved = U;
        }
        b.prototype.clone = function(a) {
          var e = new b;
          e.index = void 0 !== a ? a : this.index;
          e.local = this.local.slice(0);
          e.stack = this.stack.slice(0);
          e.scope = this.scope.slice(0);
          e.loads = this.loads.slice(0);
          e.saved = this.saved;
          e.store = this.store;
          return e;
        };
        b.prototype.matches = function(b) {
          return this.stack.length === b.stack.length && this.scope.length === b.scope.length && this.local.length === b.local.length;
        };
        b.prototype.makeLoopPhis = function(a, e) {
          function f(b) {
            b = new ba(a, b);
            b.isLoop = !0;
            return b;
          }
          var c = new b;
          c.index = this.index;
          c.local = this.local.map(function(b, a) {
            return e[a] ? f(b) : b;
          });
          c.stack = this.stack.map(f);
          c.scope = this.scope.map(f);
          c.loads = this.loads.slice(0);
          c.saved = this.saved;
          c.store = f(this.store);
          return c;
        };
        b.tryOptimizePhi = function(b) {
          if (b instanceof ba) {
            if (b.isLoop) {
              return b;
            }
            var a = H(b.args);
            if (1 === a.length) {
              return b.seal(), k.countTimeline("Builder: OptimizedPhi"), a[0];
            }
          }
          return b;
        };
        b.prototype.optimize = function() {
          this.local = this.local.map(b.tryOptimizePhi);
          this.stack = this.stack.map(b.tryOptimizePhi);
          this.scope = this.scope.map(b.tryOptimizePhi);
          this.saved = b.tryOptimizePhi(this.saved);
          this.store = b.tryOptimizePhi(this.store);
        };
        b.mergeValue = function(b, a, e) {
          b = a instanceof ba && a.control === b ? a : new ba(b, a);
          b.pushValue(e);
          return b;
        };
        b.mergeValues = function(a, e, f) {
          for (var c = 0;c < e.length;c++) {
            e[c] = b.mergeValue(a, e[c], f[c]);
          }
        };
        b.prototype.merge = function(a, e) {
          b.mergeValues(a, this.local, e.local);
          b.mergeValues(a, this.stack, e.stack);
          b.mergeValues(a, this.scope, e.scope);
          this.store = b.mergeValue(a, this.store, e.store);
          this.store.abstract = !0;
        };
        b.prototype.trace = function(b) {
          b.writeLn(this.toString());
        };
        b.toBriefString = function(b) {
          return b instanceof G ? b.toString(!0) : b;
        };
        b.prototype.toString = function() {
          return "<" + String(this.id + " @ " + this.index).padRight(" ", 10) + (" M: " + b.toBriefString(this.store)).padRight(" ", 14) + (" X: " + b.toBriefString(this.saved)).padRight(" ", 14) + (" $: " + this.scope.map(b.toBriefString).join(", ")).padRight(" ", 20) + (" L: " + this.local.map(b.toBriefString).join(", ")).padRight(" ", 40) + (" S: " + this.stack.map(b.toBriefString).join(", ")).padRight(" ", 60);
        };
        b._nextID = 0;
        return b;
      }(), ma = C.bind(null, "asCoerceObject"), W = Object.create(null);
      W[E.Int] = h;
      W[E.Uint] = f;
      W[E.Number] = b;
      W[E.String] = B;
      W[E.Object] = ma;
      W[E.Boolean] = e;
      var la = Object.create(null);
      la[E.Int] = h;
      la[E.Uint] = f;
      la[E.Number] = C.bind(null, "Number");
      la[E.String] = C.bind(null, "String");
      la[E.Object] = C.bind(null, "Object");
      la[E.Boolean] = C.bind(null, "Boolean");
      var na = C.bind(null, "Object"), oa = function() {
        function n(b, a, e, f) {
          this.builder = b;
          this.region = a;
          this.block = e;
          this.state = f;
          this.abc = b.abc;
          this.methodInfoConstant = b.methodInfoConstant;
          this.bytecodes = b.methodInfo.analysis.bytecodes;
          this.constantPool = b.abc.constantPool;
          this.traceBuilder = b.traceBuilder;
          this.methodInfo = b.methodInfo;
        }
        n.prototype.popMultiname = function() {
          var b = this.constantPool.multinames[this.bc.index], e, f;
          b.isRuntimeName() ? (e = this.state.stack.pop(), f = l(0)) : (e = l(b.name), f = l(b.flags));
          b.isRuntimeNamespace() ? (b = new ea(this.region, [this.state.stack.pop()]), b.shouldFloat = !0) : b = l(b.namespaces);
          return new a.IR.ASMultiname(b, e, f);
        };
        n.prototype.setIfStops = function(b) {
          b = new a.IR.If(this.region, b);
          this.stops = [{control:new X(b, 2), target:this.bytecodes[this.bc.position + 1], state:this.state}, {control:new X(b, 1), target:this.bc.target, state:this.state}];
        };
        n.prototype.setJumpStop = function() {
          this.stops = [{control:this.region, target:this.bc.target, state:this.state}];
        };
        n.prototype.setThrowStop = function() {
          this.stops = [];
        };
        n.prototype.setReturnStop = function() {
          this.stops = [];
        };
        n.prototype.setSwitchStops = function(b) {
          if (2 < this.bc.targets.length) {
            this.stops = [];
            b = new a.IR.Switch(this.region, b);
            for (var e = 0;e < this.bc.targets.length;e++) {
              this.stops.push({control:new X(b, 0, l(e)), target:this.bc.targets[e], state:this.state});
            }
          } else {
            b = m(O.SEQ, b, l(0)), b = new a.IR.If(this.region, b), this.stops = [{control:new X(b, 2), target:this.bc.targets[1], state:this.state}, {control:new X(b, 1), target:this.bc.targets[0], state:this.state}];
          }
        };
        n.prototype.savedScope = function() {
          return this.state.saved;
        };
        n.prototype.topScope = function(b) {
          var a = this.state.scope;
          if (void 0 !== b) {
            if (b < a.length) {
              return a[a.length - 1 - b];
            }
            if (b === a.length) {
              return this.savedScope();
            }
            var e = this.savedScope();
            b -= a.length;
            for (a = 0;a < b;a++) {
              e = g(this.state, e, "parent");
            }
            return e;
          }
          return 0 < a.length ? K(a) : this.savedScope();
        };
        n.prototype.getGlobalScope = function() {
          var b = this.bc.ti;
          return b && b.object ? l(b.object) : new a.IR.ASGlobal(null, this.savedScope());
        };
        n.prototype.getScopeObject = function(b) {
          return b instanceof a.IR.ASScope ? b.object : g(this.state, b, "object");
        };
        n.prototype.findProperty = function(b, e) {
          var f = this.bc.ti, c = new a.IR.ASFindProperty(this.region, this.state.store, this.topScope(), b, this.methodInfoConstant, e);
          if (f) {
            if (f.object) {
              return f.object instanceof d.AVM2.Runtime.Global && !f.object.scriptInfo.executing ? c : l(f.object);
            }
            if (-1 !== f.scopeDepth) {
              return this.getScopeObject(this.topScope(f.scopeDepth));
            }
          }
          return c;
        };
        n.prototype.coerce = function(b, a) {
          var e = W[E.getQualifiedName(b)];
          return e ? e(a) : a;
        };
        n.prototype.store = function(b) {
          var a = this.state;
          a.store = new X(b, 3);
          b.loads = a.loads.slice(0);
          a.loads.length = 0;
          return b;
        };
        n.prototype.load = function(b) {
          this.state.loads.push(b);
          return b;
        };
        n.prototype.call = function(b, a, e) {
          return this.store(new V(this.region, this.state.store, b, a, e, 4));
        };
        n.prototype.callCall = function(b, a, e) {
          return this.store(new V(this.region, this.state.store, b, a, e, 16));
        };
        n.prototype.callProperty = function(b, e, f, c) {
          var h = this.bc.ti, g = this.region, p = this.state;
          if (h && h.trait) {
            if (h.trait.isMethod()) {
              return e = h.trait.holder instanceof J && h.trait.holder.isInterface() ? E.getPublicQualifiedName(E.getName(h.trait.name)) : E.getQualifiedName(h.trait.name), e = A.VM_OPEN_METHOD_PREFIX + e, this.store(new a.IR.CallProperty(g, p.store, b, l(e), f, 4));
            }
            if (h.trait.isClass()) {
              if (e = la[E.getQualifiedName(h.trait.name)]) {
                return e(f[0]);
              }
              e = E.getQualifiedName(h.trait.name);
              return this.store(new a.IR.CallProperty(g, p.store, b, l(e), f, 16));
            }
          }
          return (h = this.resolveMultinameGlobally(e)) ? this.store(new a.IR.ASCallProperty(g, p.store, b, l(E.getQualifiedName(h)), f, 6, c)) : this.store(new a.IR.ASCallProperty(g, p.store, b, e, f, 4, c));
        };
        n.prototype.getProperty = function(b, e, f) {
          var c = this.bc.ti, h = this.region, g = this.state;
          f = !!f;
          if (c && c.trait) {
            if (c.trait.isConst() && c.trait.hasDefaultValue) {
              return l(c.trait.value);
            }
            b = new a.IR.GetProperty(h, g.store, b, l(E.getQualifiedName(c.trait.name)));
            return c.trait.isGetter() ? this.store(b) : this.load(b);
          }
          if (w(e.name)) {
            return this.store(new a.IR.ASGetProperty(h, g.store, b, e, 1));
          }
          if (c = this.resolveMultinameGlobally(e)) {
            return this.store(new a.IR.ASGetProperty(h, g.store, b, l(E.getQualifiedName(c)), 2 | (f ? 8 : 0)));
          }
          k.countTimeline("Compiler: Slow ASGetProperty");
          return this.store(new a.IR.ASGetProperty(h, g.store, b, e, f ? 8 : 0));
        };
        n.prototype.setProperty = function(b, e, f) {
          var c = this.bc.ti, h = this.region, g = this.state;
          if (c && c.trait) {
            (e = c.trait.typeName ? W[E.getQualifiedName(c.trait.typeName)] : null) && (f = e(f)), this.store(new a.IR.SetProperty(h, g.store, b, l(E.getQualifiedName(c.trait.name)), f));
          } else {
            if (w(e.name)) {
              return this.store(new a.IR.ASSetProperty(h, g.store, b, e, f, 1));
            }
            this.resolveMultinameGlobally(e);
            return this.store(new a.IR.ASSetProperty(h, g.store, b, e, f, 0));
          }
        };
        n.prototype.callSuper = function(b, e, f, c) {
          var h = this.bc.ti, g = this.region, p = this.state;
          return h && h.trait && h.trait.isMethod() && h.baseClass ? (b = A.VM_OPEN_METHOD_PREFIX + E.getQualifiedName(h.trait.name), h = this.getJSProperty(l(h.baseClass), "traitsPrototype." + b), this.call(h, e, c)) : this.store(new a.IR.ASCallSuper(g, p.store, e, f, c, 4, b));
        };
        n.prototype.getSuper = function(b, e, f) {
          var c = this.bc.ti, h = this.region, g = this.state;
          if (c && c.trait && c.baseClass) {
            if (c.trait.isGetter()) {
              return b = A.VM_OPEN_GET_METHOD_PREFIX + E.getQualifiedName(c.trait.name), c = this.getJSProperty(l(c.baseClass), "traitsPrototype." + b), this.call(c, e, []);
            }
            if (c.trait.isMethod()) {
              return b = A.VM_OPEN_METHOD_PREFIX + E.getQualifiedName(c.trait.name), this.getJSProperty(l(c.baseClass), "traitsPrototype." + b);
            }
          }
          return this.store(new a.IR.ASGetSuper(h, g.store, e, f, b));
        };
        n.prototype.setSuper = function(b, e, f, c) {
          var h = this.bc.ti, g = this.region, p = this.state;
          h && h.trait && h.trait.isSetter() && h.baseClass ? (b = A.VM_OPEN_SET_METHOD_PREFIX + E.getQualifiedName(h.trait.name), h = this.getJSProperty(l(h.baseClass), "traitsPrototype." + b), this.call(h, e, [c])) : this.store(new a.IR.ASSetSuper(g, p.store, e, f, c, b));
        };
        n.prototype.constructSuper = function(b, a, e) {
          var f = this.bc.ti;
          if (f) {
            if (f.noCallSuperNeeded) {
              return;
            }
            if (f.baseClass) {
              b = this.getJSProperty(l(f.baseClass), "instanceConstructorNoInitialize");
              this.call(b, a, e);
              return;
            }
          }
          b = this.getJSProperty(b, "object.baseClass.instanceConstructorNoInitialize");
          this.call(b, a, e);
        };
        n.prototype.getSlot = function(b, e) {
          var f = this.bc.ti, c = this.region, h = this.state;
          if (f) {
            var g = f.trait;
            if (g) {
              if (g.isConst() && f.trait.hasDefaultValue) {
                return l(g.value);
              }
              f = E.getQualifiedName(g.name);
              return this.store(new a.IR.GetProperty(c, h.store, b, l(f)));
            }
          }
          return this.store(new a.IR.ASGetSlot(null, h.store, b, e));
        };
        n.prototype.setSlot = function(b, e, f) {
          var c = this.bc.ti, h = this.region, g = this.state;
          if (c && (c = c.trait)) {
            e = E.getQualifiedName(c.name);
            this.store(new a.IR.SetProperty(h, g.store, b, l(e), f));
            return;
          }
          this.store(new a.IR.ASSetSlot(h, g.store, b, e, f));
        };
        n.prototype.resolveMultinameGlobally = function(b) {
          var a = b.namespaces, e = b.name;
          if (d.AVM2.Runtime.globalMultinameAnalysis.value) {
            if (ga(a) && ga(e) && !b.isAttribute()) {
              if (!d.isNumeric(e.value) && d.isString(e.value) && e.value) {
                return z.resolveMultiname(new E(a.value, e.value, b.flags));
              }
              k.countTimeline("GlobalMultinameResolver: Cannot resolve numeric or any names.");
            } else {
              k.countTimeline("GlobalMultinameResolver: Cannot resolve runtime multiname or attribute.");
            }
          }
        };
        n.prototype.getJSProperty = function(b, a) {
          return g(this.state, b, a);
        };
        n.prototype.setJSProperty = function(b, e, f) {
          this.store(new a.IR.SetProperty(null, this.state.store, b, l(e), f));
        };
        n.prototype.simplifyName = function(b) {
          return b instanceof Y && b.value instanceof E && E.isQName(b.value) ? l(E.getQualifiedName(b.value)) : b;
        };
        n.prototype.getDescendants = function(b, e) {
          var f = this.region, c = this.state;
          e = this.simplifyName(e);
          return new a.IR.ASGetDescendants(f, c.store, b, e);
        };
        n.prototype.truthyCondition = function(b) {
          var a = this.state.stack, e;
          b.isBinary && (e = a.pop());
          a = a.pop();
          b = e ? m(b, a, e) : t(b, a);
          fa && (b = fa.fold(b, !0));
          return b;
        };
        n.prototype.negatedTruthyCondition = function(b) {
          b = t(O.FALSE, this.truthyCondition(b));
          fa && (b = fa.fold(b, !0));
          return b;
        };
        n.prototype.pushExpression = function(b, a) {
          var e = this.state.stack, f;
          b.isBinary ? (f = e.pop(), e = e.pop(), a && (f = h(f), e = h(e)), this.push(m(b, e, f))) : (e = e.pop(), a && (e = h(e)), this.push(t(b, e)));
        };
        n.prototype.push = function(b) {
          var a = this.bc;
          a.ti && !b.ty && (b.ty = a.ti.type);
          this.state.stack.push(b);
        };
        n.prototype.pushLocal = function(b) {
          this.push(this.state.local[b]);
        };
        n.prototype.popLocal = function(b) {
          var a = this.state;
          a.local[b] = r(a.stack.pop());
        };
        n.prototype.build = function() {
          function g() {
            return w.pop();
          }
          function t(b) {
            return d.ArrayUtilities.popMany(w, b);
          }
          var n = this.block, C = this.state, u = this.state.local, w = this.state.stack, H = this.state.scope, y = this.region, K = this.bytecodes, J, A, z, x = this.push.bind(this);
          this.stops = null;
          this.traceBuilder && (ca.writeLn("Processing Region: " + y + ", Block: " + n.bid), ca.enter(("> state: " + y.entryState.toString()).padRight(" ", 100)));
          for (var G = n.position, L = n.end.position;G <= L;G++) {
            this.bc = n = K[G];
            var F = n.op;
            C.index = G;
            switch(F) {
              case 3:
                this.store(new a.IR.Throw(y, g()));
                this.builder.stopPoints.push({region:y, store:C.store, value:U});
                this.setThrowStop();
                break;
              case 98:
                this.pushLocal(n.index);
                break;
              case 208:
              ;
              case 209:
              ;
              case 210:
              ;
              case 211:
                this.pushLocal(F - 208);
                break;
              case 99:
                this.popLocal(n.index);
                break;
              case 212:
              ;
              case 213:
              ;
              case 214:
              ;
              case 215:
                this.popLocal(F - 212);
                break;
              case 28:
              ;
              case 48:
                H.push(new a.IR.ASScope(this.topScope(), g(), 28 === F));
                break;
              case 29:
                H.pop();
                break;
              case 100:
                x(this.getGlobalScope());
                break;
              case 101:
                x(this.getScopeObject(C.scope[n.index]));
                break;
              case 94:
              ;
              case 93:
                x(this.findProperty(this.popMultiname(), 93 === F));
                break;
              case 102:
                z = this.popMultiname();
                A = g();
                x(this.getProperty(A, z, !1));
                break;
              case 89:
                z = this.popMultiname();
                A = g();
                x(this.getDescendants(A, z));
                break;
              case 96:
                z = this.popMultiname();
                x(this.getProperty(this.findProperty(z, !0), z, !1));
                break;
              case 104:
              ;
              case 97:
                J = g();
                z = this.popMultiname();
                A = g();
                this.setProperty(A, z, J);
                break;
              case 106:
                z = this.popMultiname();
                A = g();
                x(this.store(new a.IR.ASDeleteProperty(y, C.store, A, z)));
                break;
              case 108:
                A = g();
                x(this.getSlot(A, l(n.index)));
                break;
              case 109:
                J = g();
                A = g();
                this.setSlot(A, l(n.index), J);
                break;
              case 4:
                z = this.popMultiname();
                A = g();
                x(this.getSuper(this.savedScope(), A, z));
                break;
              case 5:
                J = g();
                z = this.popMultiname();
                A = g();
                this.setSuper(this.savedScope(), A, z, J);
                break;
              case 241:
              ;
              case 240:
                break;
              case 64:
                x(p(this.builder.createFunctionCallee, [l(this.abc.methods[n.index]), this.topScope(), l(!0)]));
                break;
              case 65:
                J = t(n.argCount);
                A = g();
                z = g();
                x(this.callCall(z, A, J));
                break;
              case 70:
              ;
              case 79:
              ;
              case 76:
                J = t(n.argCount);
                z = this.popMultiname();
                A = g();
                J = this.callProperty(A, z, J, 76 === F);
                79 !== F && x(J);
                break;
              case 69:
              ;
              case 78:
                z = this.popMultiname();
                J = t(n.argCount);
                A = g();
                J = this.callSuper(this.savedScope(), A, z, J);
                78 !== F && x(J);
                break;
              case 66:
                J = t(n.argCount);
                A = g();
                x(this.store(new a.IR.ASNew(y, C.store, A, J)));
                break;
              case 73:
                J = t(n.argCount);
                A = g();
                this.constructSuper(this.savedScope(), A, J);
                break;
              case 74:
                J = t(n.argCount);
                z = this.popMultiname();
                A = g();
                z = this.getProperty(A, z, !1);
                x(this.store(new a.IR.ASNew(y, C.store, z, J)));
                break;
              case 128:
                if (n.ti && n.ti.noCoercionNeeded) {
                  k.countTimeline("Compiler: NoCoercionNeeded");
                  break;
                } else {
                  k.countTimeline("Compiler: CoercionNeeded");
                }
                J = g();
                x(this.coerce(this.constantPool.multinames[n.index], J));
                break;
              case 131:
              ;
              case 115:
                x(h(g()));
                break;
              case 136:
              ;
              case 116:
                x(f(g()));
                break;
              case 132:
              ;
              case 117:
                x(b(g()));
                break;
              case 129:
              ;
              case 118:
                x(e(g()));
                break;
              case 120:
                x(this.call(q("checkFilter"), null, [g()]));
                break;
              case 130:
                break;
              case 133:
                x(B(g()));
                break;
              case 112:
                x(I(g()));
                break;
              case 114:
                x(D(g()));
                break;
              case 113:
                x(M(g()));
                break;
              case 134:
                if (n.ti && n.ti.noCoercionNeeded) {
                  k.countTimeline("Compiler: NoCoercionNeeded");
                  break;
                } else {
                  k.countTimeline("Compiler: CoercionNeeded");
                }
                J = g();
                A = this.constantPool.multinames[n.index];
                z = new a.IR.ASMultiname(l(A.namespaces), l(A.name), l(A.flags));
                A = this.getProperty(this.findProperty(z, !1), z);
                x(this.call(q("asAsType"), null, [A, J]));
                break;
              case 135:
                A = g();
                J = g();
                x(this.call(q("asAsType"), null, [A, J]));
                break;
              case 72:
              ;
              case 71:
                J = U;
                72 === F && (J = g(), this.methodInfo.returnType && (n.ti && n.ti.noCoercionNeeded || (J = this.coerce(this.methodInfo.returnType, J))));
                this.builder.stopPoints.push({region:y, store:C.store, value:J});
                this.setReturnStop();
                break;
              case 30:
              ;
              case 35:
                J = g();
                A = g();
                x(new a.IR.CallProperty(y, C.store, A, l(30 === F ? "asNextName" : "asNextValue"), [J], 4));
                break;
              case 50:
                J = new a.IR.ASNewHasNext2;
                this.setJSProperty(J, "object", u[n.object]);
                this.setJSProperty(J, "index", u[n.index]);
                this.store(new a.IR.CallProperty(y, C.store, na(u[n.object]), l("asHasNext2"), [J], 4));
                u[n.object] = this.getJSProperty(J, "object");
                x(u[n.index] = this.getJSProperty(J, "index"));
                break;
              case 32:
                x(S);
                break;
              case 33:
                x(U);
                break;
              case 38:
                x(N);
                break;
              case 39:
                x(R);
                break;
              case 40:
                x(l(NaN));
                break;
              case 34:
                P(String(n));
                break;
              case 36:
              ;
              case 37:
                x(l(n.value));
                break;
              case 44:
                x(l(this.constantPool.strings[n.index]));
                break;
              case 45:
                x(l(this.constantPool.ints[n.index]));
                break;
              case 46:
                x(l(this.constantPool.uints[n.index]));
                break;
              case 47:
                x(l(this.constantPool.doubles[n.index]));
                break;
              case 41:
                g();
                break;
              case 42:
                J = r(g());
                x(J);
                x(J);
                break;
              case 43:
                C.stack.push(g(), g());
                break;
              case 239:
              ;
              case 240:
              ;
              case 241:
                break;
              case 16:
                this.setJumpStop();
                break;
              case 12:
                this.setIfStops(this.negatedTruthyCondition(O.LT));
                break;
              case 15:
                this.setIfStops(this.negatedTruthyCondition(O.GE));
                break;
              case 14:
                this.setIfStops(this.negatedTruthyCondition(O.GT));
                break;
              case 13:
                this.setIfStops(this.negatedTruthyCondition(O.LE));
                break;
              case 24:
              ;
              case 23:
              ;
              case 22:
              ;
              case 21:
              ;
              case 17:
              ;
              case 18:
              ;
              case 19:
              ;
              case 20:
              ;
              case 25:
              ;
              case 26:
                this.setIfStops(this.truthyCondition(c(F)));
                break;
              case 27:
                this.setSwitchStops(g());
                break;
              case 160:
                A = g();
                J = g();
                z = v(J, A) ? O.ADD : d.AVM2.Runtime.useAsAdd ? O.AS_ADD : O.ADD;
                x(m(z, J, A));
                break;
              case 161:
              ;
              case 162:
              ;
              case 163:
              ;
              case 164:
              ;
              case 165:
              ;
              case 166:
              ;
              case 167:
              ;
              case 168:
              ;
              case 169:
              ;
              case 170:
              ;
              case 171:
              ;
              case 172:
              ;
              case 173:
              ;
              case 174:
              ;
              case 175:
              ;
              case 176:
              ;
              case 144:
              ;
              case 150:
              ;
              case 151:
                this.pushExpression(c(F));
                break;
              case 196:
              ;
              case 197:
              ;
              case 198:
              ;
              case 199:
                this.pushExpression(c(F), !0);
                break;
              case 145:
              ;
              case 192:
              ;
              case 147:
              ;
              case 193:
                x(l(1));
                145 === F || 147 === F ? x(b(g())) : x(h(g()));
                145 === F || 192 === F ? this.pushExpression(O.ADD) : this.pushExpression(O.SUB);
                break;
              case 146:
              ;
              case 194:
              ;
              case 148:
              ;
              case 195:
                x(l(1));
                146 === F || 148 === F ? x(b(u[n.index])) : x(h(u[n.index]));
                146 === F || 194 === F ? this.pushExpression(O.ADD) : this.pushExpression(O.SUB);
                this.popLocal(n.index);
                break;
              case 177:
                A = g();
                J = g();
                x(this.call(this.getJSProperty(A, "isInstanceOf"), null, [J]));
                break;
              case 178:
                J = g();
                z = this.popMultiname();
                A = this.getProperty(this.findProperty(z, !1), z);
                x(this.call(q("asIsType"), null, [A, J]));
                break;
              case 179:
                A = g();
                J = g();
                x(this.call(q("asIsType"), null, [A, J]));
                break;
              case 180:
                A = g();
                J = g();
                z = new a.IR.ASMultiname(U, J, l(0));
                x(this.store(new a.IR.ASHasProperty(y, C.store, A, z)));
                break;
              case 149:
                x(this.call(q("asTypeOf"), null, [g()]));
                break;
              case 8:
                x(U);
                this.popLocal(n.index);
                break;
              case 83:
                J = t(n.argCount);
                A = g();
                z = q("applyType");
                x(this.call(z, null, [this.methodInfoConstant, A, new ea(y, J)]));
                break;
              case 86:
                J = t(n.argCount);
                x(new ea(y, J));
                break;
              case 85:
                A = [];
                for (z = 0;z < n.argCount;z++) {
                  J = g();
                  var Q = g(), Q = l(E.getPublicQualifiedName(Q.value));
                  A.push(new ja(Q, J));
                }
                x(new ia(y, A));
                break;
              case 87:
                x(new a.IR.ASNewActivation(l(this.methodInfo)));
                break;
              case 88:
                z = q("createClass");
                x(this.call(z, null, [l(this.abc.classes[n.index]), g(), this.topScope()]));
                break;
              default:
                P(String(n));
            }
            239 !== F && 241 !== F && 240 !== F && this.traceBuilder && ca.writeLn(("state: " + C.toString()).padRight(" ", 100) + " : " + G + ", " + n.toString(this.abc));
          }
          this.traceBuilder && ca.leave(("< state: " + C.toString()).padRight(" ", 100));
        };
        return n;
      }(), ta = function() {
        function b(a, e, f) {
          this.abc = a.abc;
          this.methodInfoConstant = new Y(a);
          this.scope = e;
          this.methodInfo = a;
          this.hasDynamicScope = f;
          this.traceBuilder = 3 < d.AVM2.Compiler.traceLevel.value;
          this.createFunctionCallee = q("createFunction");
          this.stopPoints = [];
          this.bytecodes = this.methodInfo.analysis.bytecodes;
        }
        b.prototype.buildStart = function(b) {
          var e = this.methodInfo, f = b.entryState = new Q(0);
          f.local.push(new T(b));
          for (var c = this.hasDynamicScope ? 1 : 0, h = e.parameters.length, p = 0;p < h;p++) {
            f.local.push(new aa(b, c + p, e.parameters[p].name));
          }
          for (p = h;p < e.localCount;p++) {
            f.local.push(U);
          }
          f.store = new X(b, 3);
          b.scope = this.hasDynamicScope ? new aa(b, 0, A.SAVED_SCOPE_NAME) : new Y(this.scope);
          f.saved = new X(b, 4);
          p = new a.IR.Arguments(b);
          if (e.needsRest() || e.needsArguments()) {
            var r = l(c + (e.needsRest() ? h : 0)), m;
            m = e.needsArguments() ? g(f, p, "callee") : l(void 0);
            f.local[h + 1] = new V(b, f.store, q("sliceArguments"), null, [p, r, m], 4);
          }
          b = g(f, p, "length");
          for (p = 0;p < h;p++) {
            var d = e.parameters[p], r = p + 1;
            m = f.local[r];
            if (void 0 !== d.value) {
              var t;
              t = new a.IR.Binary(O.LT, b, l(c + p + 1));
              m = new a.IR.Latch(null, t, l(d.value), m);
            }
            d.type && !d.type.isAnyName() && (d = W[E.getQualifiedName(d.type)]) && (m = d(m));
            f.local[r] = m;
          }
        };
        b.prototype.buildGraph = function() {
          for (var b = this.methodInfo.analysis.blocks, e = this.traceBuilder, f = 0;f < b.length;f++) {
            b[f].bdo = f, b[f].region = null;
          }
          var c = new d.SortedList(function(b, a) {
            return b.block.bdo - a.block.bdo;
          }), f = new L;
          this.buildStart(f);
          for (c.push({region:f, block:b[0]});b = c.pop();) {
            this.buildBlock(b.region, b.block, b.region.entryState.clone()).forEach(function(b) {
              var f = b.target, h = f.region;
              if (h) {
                e && ca.enter("Merging into region: " + h + " @ " + f.position + ", block " + f.bid + " {"), e && ca.writeLn("  R " + h.entryState), e && ca.writeLn("+ I " + b.state), h.entryState.merge(h, b.state), h.predecessors.push(b.control), e && ca.writeLn("  = " + h.entryState), e && ca.leave("}");
              } else {
                var h = f.region = new F(b.control), g = null;
                f.loop && (g = a.enableDirtyLocals.value && f.loop.getDirtyLocals(), e && ca.writeLn("Adding PHIs to loop region. " + g));
                h.entryState = f.loop ? b.state.makeLoopPhis(h, g) : b.state.clone(f.position);
                e && ca.writeLn("Adding new region: " + h + " @ " + f.position + " to worklist.");
                c.push({region:h, block:f});
              }
            }), e && ca.enter("Worklist: {"), c.forEach(function(b) {
              e && ca.writeLn(b.region + " " + b.block.bdo + " " + b.region.entryState);
            }), e && ca.leave("}");
          }
          e && ca.writeLn("Done");
          if (1 < this.stopPoints.length) {
            var h = new F(null), g = new ba(h, null), p = new ba(h, null);
            this.stopPoints.forEach(function(b) {
              h.predecessors.push(b.region);
              g.pushValue(b.value);
              p.pushValue(b.store);
            });
            b = new Z(h, p, g);
          } else {
            b = new Z(this.stopPoints[0].region, this.stopPoints[0].store, this.stopPoints[0].value);
          }
          return new a.IR.DFG(b);
        };
        b.prototype.buildBlock = function(b, a, e) {
          e.optimize();
          var f = a.verifierEntryState;
          if (f) {
            this.traceBuilder && ca.writeLn("Type State: " + f);
            for (var c = 0;c < f.local.length;c++) {
              var h = f.local[c], g = e.local[c];
              g.ty || (g.ty = h);
            }
          }
          a = new oa(this, b, a, e);
          a.build();
          f = a.stops;
          f || (f = [], a.bc.position + 1 <= this.bytecodes.length && f.push({control:b, target:this.bytecodes[a.bc.position + 1], state:e}));
          return f;
        };
        b.buildMethod = function(a, e, f, c) {
          k.countTimeline("Compiler: Compiled Methods");
          k.enterTimeline("Compiler");
          k.enterTimeline("Mark Loops");
          e.analysis.markLoops();
          k.leaveTimeline();
          d.AVM2.Verifier.enabled.value && (k.enterTimeline("Verify"), a.verifyMethod(e, f), k.leaveTimeline());
          a = 0 < d.AVM2.Compiler.traceLevel.value;
          var h = 1 < d.AVM2.Compiler.traceLevel.value, g = 2 < d.AVM2.Compiler.traceLevel.value;
          if (a) {
            var p = window.performance.now()
          }
          k.enterTimeline("Build IR");
          G.startNumbering();
          f = (new b(e, f, c)).buildGraph();
          k.leaveTimeline();
          g && f.trace(ca);
          k.enterTimeline("Build CFG");
          f = f.buildCFG();
          k.leaveTimeline();
          k.enterTimeline("Optimize Phis");
          f.optimizePhis();
          k.leaveTimeline();
          k.enterTimeline("Schedule Nodes");
          f.scheduleEarly();
          k.leaveTimeline();
          g && f.trace(ca);
          k.enterTimeline("Verify IR");
          f.verify();
          k.leaveTimeline();
          k.enterTimeline("Allocate Variables");
          f.allocateVariables();
          k.leaveTimeline();
          k.enterTimeline("Generate Source");
          g = d.AVM2.Compiler.Backend.generate(f);
          k.leaveTimeline();
          h && ca.writeLn(g.body);
          G.stopNumbering();
          k.leaveTimeline();
          a && ca.writeLn("Compiled " + (e.name ? "function " + e.name : "anonymous function") + " in " + (window.performance.now() - p).toPrecision(2) + "ms");
          return g;
        };
        return b;
      }(), pa = new d.AVM2.Verifier.Verifier;
      a.compileMethod = function(b, a, e) {
        return ta.buildMethod(pa, b, a, e);
      };
    })(k.Compiler || (k.Compiler = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      function n(b, a) {
        var f = new g(null, b), h = b.abc.applicationDomain, m = [];
        k(b.init, a, f, m, !1);
        b.traits.forEach(function(b) {
          if (b.isClass()) {
            for (var d = [], l = b.classInfo;l;) {
              if (d.unshift(l), l.instanceInfo.superName) {
                l = h.findClassInfo(l.instanceInfo.superName);
              } else {
                break;
              }
            }
            var q = f;
            d.forEach(function(b) {
              q = new g(q, b);
            });
            c(b.classInfo, a, q, m);
          } else {
            (b.isMethod() || b.isGetter() || b.isSetter()) && u(b, a, f, m);
          }
        });
        m.forEach(function(b) {
          k(b.methodInfo, a, b.scope, null, !0);
        });
      }
      function k(b, a, c, h, g) {
        if (q(b)) {
          t(b);
          try {
            f = !1;
            var d = m(b, c, g, !1, !1);
            a.enter(b.index + ": ");
            f ? a.writeLn("undefined") : a.writeLns(d.toSource());
            a.leave(",");
            h && v(b, a, c, h);
          } catch (l) {
            a.writeLn("// " + l);
          }
        } else {
          a.writeLn("// Can't compile method: " + b.index);
        }
      }
      function v(b, a, f, c) {
        for (var h = b.analysis.bytecodes, m = b.abc.methods, d = 0;d < h.length;d++) {
          var l = h[d];
          if (64 === l.op) {
            l = m[l.index];
            t(l);
            var q = new g(f, b);
            c.push({scope:q, methodInfo:l});
            v(l, a, q, c);
          }
        }
      }
      function u(b, a, f, c) {
        (b.isMethod() || b.isGetter() || b.isSetter()) && b.methodInfo.hasBody && (a.writeLn("// " + b), k(b.methodInfo, a, f, c, !1));
      }
      function l(b, a, f, c) {
        b.forEach(function(b) {
          u(b, a, f, c);
        });
      }
      function c(b, a, f, c) {
        k(b.init, a, f, c, !1);
        l(b.traits, a, f, c);
        k(b.instanceInfo.init, a, f, c, !1);
        l(b.instanceInfo.traits, a, f, c);
      }
      var g = d.AVM2.Runtime.Scope, q = d.AVM2.Runtime.canCompile, t = d.AVM2.Runtime.ensureFunctionIsInitialized, m = d.AVM2.Runtime.createCompiledFunction, h = d.AVM2.Runtime.LazyInitializer, f = !1;
      jsGlobal.objectConstantName = function(b) {
        if (b.hash) {
          return "$(" + b.hash + ")";
        }
        if (b instanceof h) {
          return b.getName();
        }
        f = !0;
      };
      a.compileAbc = function(b, a) {
        a.enter("{");
        a.enter("methods: {");
        for (var f = 0;f < b.scripts.length;f++) {
          n(b.scripts[f], a);
        }
        a.leave("}");
        a.leave("}");
      };
    })(k.Compiler || (k.Compiler = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        function k(b, a) {
          switch(b) {
            case "\b":
              return "\\b";
            case "\f":
              return "\\f";
            case "\t":
              return "\\t";
            default:
              var e = b.charCodeAt(0), f = e.toString(16);
              return 255 < e ? "\\u" + "0000".slice(f.length) + f : "\x00" === b && 0 > "0123456789".indexOf(a) ? "\\0" : "\x0B" === b ? "\\x0B" : "\\x" + "00".slice(f.length) + f;
          }
        }
        function v(b) {
          switch(b) {
            case "\\":
              return "\\\\";
            case "\n":
              return "\\n";
            case "\r":
              return "\\r";
            case "\u2028":
              return "\\u2028";
            case "\u2029":
              return "\\u2029";
            default:
              throw Error("Incorrectly classified character");;
          }
        }
        function u(b) {
          var a = t[b];
          if (a) {
            return a;
          }
          1024 === q && (t = Object.create(null), q = 0);
          for (var a = '"', e = 0, f = b.length;e < f;++e) {
            var c = b[e];
            if ('"' === c) {
              a += "\\";
            } else {
              if (0 <= "\\\n\r\u2028\u2029".indexOf(c)) {
                a += v(c);
                continue;
              } else {
                if (!(" " <= c && "~" >= c)) {
                  a += k(c, b[e + 1]);
                  continue;
                }
              }
            }
            a += c;
          }
          a += '"';
          t[b] = a;
          q++;
          return a;
        }
        function l(b) {
          if (null === b) {
            return "null";
          }
          if ("string" === typeof b) {
            return u(b);
          }
          if ("number" === typeof b) {
            var a;
            if (b !== b) {
              throw Error("Numeric literal whose value is NaN");
            }
            if (0 > b || 0 === b && 0 > 1 / b) {
              throw Error("Numeric literal whose value is negative");
            }
            b === 1 / 0 ? b = "1e+400" : (a = h[b], a || (1024 === m && (h = Object.create(null), m = 0), a = "" + b, h[b] = a, m++), b = a);
            return b;
          }
          if ("boolean" === typeof b) {
            return b ? "true" : "false";
          }
          g(b);
        }
        function c(b, a, e) {
          for (var f = "", c = 0;c < b.length;c++) {
            f += b[c].toSource(a), e && c < b.length - 1 && (f += e);
          }
          return f;
        }
        var g = d.Debug.assertUnreachable, q = 0, t = Object.create(null);
        a.escapeString = u;
        var m = 0, h = Object.create(null), f = {"||":3, "&&":4, "|":5, "^":6, "&":7, "==":8, "!=":8, "===":8, "!==":8, is:8, isnt:8, "<":9, ">":9, "<=":9, ">=":9, "in":9, "instanceof":9, "<<":10, ">>":10, ">>>":10, "+":11, "-":11, "*":12, "%":12, "/":12}, b = function() {
          function b() {
            this.type = "Node";
          }
          b.prototype.toSource = function(b) {
            g("toSource called on abstract base class Node with type " + this.type);
            return "";
          };
          return b;
        }();
        a.Node = b;
        var e = function(b) {
          function a() {
            b.apply(this, arguments);
            this.type = "Statement";
          }
          __extends(a, b);
          return a;
        }(b);
        a.Statement = e;
        var r = function(b) {
          function a() {
            b.apply(this, arguments);
            this.type = "Expression";
          }
          __extends(a, b);
          return a;
        }(b);
        a.Expression = r;
        var p = function(b) {
          function a(e) {
            b.call(this);
            this.body = e;
            this.type = "Program";
          }
          __extends(a, b);
          return a;
        }(b);
        a.Program = p;
        p = function(b) {
          function a() {
            b.apply(this, arguments);
            this.type = "EmptyStatement";
          }
          __extends(a, b);
          return a;
        }(e);
        a.EmptyStatement = p;
        p = function(b) {
          function a(e) {
            b.call(this);
            this.body = e;
            this.type = "BlockStatement";
          }
          __extends(a, b);
          a.prototype.toSource = function(b) {
            return "{\n" + c(this.body, b) + "}";
          };
          return a;
        }(e);
        a.BlockStatement = p;
        p = function(b) {
          function a(e) {
            b.call(this);
            this.expression = e;
            this.type = "ExpressionStatement";
          }
          __extends(a, b);
          a.prototype.toSource = function(b) {
            return this.expression.toSource(0) + ";\n";
          };
          return a;
        }(e);
        a.ExpressionStatement = p;
        p = function(b) {
          function a(e, f, c) {
            b.call(this);
            this.test = e;
            this.consequent = f;
            this.alternate = c;
            this.type = "IfStatement";
          }
          __extends(a, b);
          a.prototype.toSource = function(b) {
            b = "if(" + this.test.toSource(0) + "){" + this.consequent.toSource(0) + "}";
            this.alternate && (b += "else{" + this.alternate.toSource(0) + "}");
            return b;
          };
          return a;
        }(e);
        a.IfStatement = p;
        p = function(b) {
          function a(e, f) {
            b.call(this);
            this.label = e;
            this.body = f;
            this.type = "LabeledStatement";
          }
          __extends(a, b);
          return a;
        }(e);
        a.LabeledStatement = p;
        p = function(b) {
          function a(e) {
            b.call(this);
            this.label = e;
            this.type = "BreakStatement";
          }
          __extends(a, b);
          a.prototype.toSource = function(b) {
            b = "break";
            this.label && (b += " " + this.label.toSource(0));
            return b + ";";
          };
          return a;
        }(e);
        a.BreakStatement = p;
        p = function(b) {
          function a(e) {
            b.call(this);
            this.label = e;
            this.type = "ContinueStatement";
          }
          __extends(a, b);
          a.prototype.toSource = function(b) {
            b = "continue";
            this.label && (b += " " + this.label.toSource(0));
            return b + ";";
          };
          return a;
        }(e);
        a.ContinueStatement = p;
        p = function(b) {
          function a(e, f) {
            b.call(this);
            this.object = e;
            this.body = f;
            this.type = "WithStatement";
          }
          __extends(a, b);
          return a;
        }(e);
        a.WithStatement = p;
        p = function(b) {
          function a(e, f, c) {
            b.call(this);
            this.discriminant = e;
            this.cases = f;
            this.lexical = c;
            this.type = "SwitchStatement";
          }
          __extends(a, b);
          a.prototype.toSource = function(b) {
            return "switch(" + this.discriminant.toSource(0) + "){" + c(this.cases, 0, ";") + "};";
          };
          return a;
        }(e);
        a.SwitchStatement = p;
        p = function(b) {
          function a(e) {
            b.call(this);
            this.argument = e;
            this.type = "ReturnStatement";
          }
          __extends(a, b);
          a.prototype.toSource = function(b) {
            b = "return ";
            this.argument && (b += this.argument.toSource(0));
            return b + ";\n";
          };
          return a;
        }(e);
        a.ReturnStatement = p;
        p = function(b) {
          function a(e) {
            b.call(this);
            this.argument = e;
            this.type = "ThrowStatement";
          }
          __extends(a, b);
          a.prototype.toSource = function(b) {
            return "throw " + this.argument.toSource(0) + ";\n";
          };
          return a;
        }(e);
        a.ThrowStatement = p;
        p = function(b) {
          function a(e, f, c, h) {
            b.call(this);
            this.block = e;
            this.handlers = f;
            this.guardedHandlers = c;
            this.finalizer = h;
            this.type = "TryStatement";
          }
          __extends(a, b);
          return a;
        }(e);
        a.TryStatement = p;
        p = function(b) {
          function a(e, f) {
            b.call(this);
            this.test = e;
            this.body = f;
            this.type = "WhileStatement";
          }
          __extends(a, b);
          a.prototype.toSource = function(b) {
            return "while(" + this.test.toSource(0) + "){" + this.body.toSource(0) + "}";
          };
          return a;
        }(e);
        a.WhileStatement = p;
        p = function(b) {
          function a(e, f) {
            b.call(this);
            this.body = e;
            this.test = f;
            this.type = "DoWhileStatement";
          }
          __extends(a, b);
          return a;
        }(e);
        a.DoWhileStatement = p;
        p = function(b) {
          function a(e, f, c, h) {
            b.call(this);
            this.init = e;
            this.test = f;
            this.update = c;
            this.body = h;
            this.type = "ForStatement";
          }
          __extends(a, b);
          return a;
        }(e);
        a.ForStatement = p;
        p = function(b) {
          function a(e, f, c, h) {
            b.call(this);
            this.left = e;
            this.right = f;
            this.body = c;
            this.each = h;
            this.type = "ForInStatement";
          }
          __extends(a, b);
          return a;
        }(e);
        a.ForInStatement = p;
        p = function(b) {
          function a() {
            b.apply(this, arguments);
            this.type = "DebuggerStatement";
          }
          __extends(a, b);
          return a;
        }(e);
        a.DebuggerStatement = p;
        e = function(b) {
          function a() {
            b.apply(this, arguments);
            this.type = "Declaration";
          }
          __extends(a, b);
          return a;
        }(e);
        a.Declaration = e;
        p = function(b) {
          function a(e, f, c, h, g, p, r) {
            b.call(this);
            this.id = e;
            this.params = f;
            this.defaults = c;
            this.rest = h;
            this.body = g;
            this.generator = p;
            this.expression = r;
            this.type = "FunctionDeclaration";
          }
          __extends(a, b);
          return a;
        }(e);
        a.FunctionDeclaration = p;
        e = function(b) {
          function a(e, f) {
            b.call(this);
            this.declarations = e;
            this.kind = f;
            this.type = "VariableDeclaration";
          }
          __extends(a, b);
          a.prototype.toSource = function(b) {
            return this.kind + " " + c(this.declarations, b, ",") + ";\n";
          };
          return a;
        }(e);
        a.VariableDeclaration = e;
        e = function(b) {
          function a(e, f) {
            b.call(this);
            this.id = e;
            this.init = f;
            this.type = "VariableDeclarator";
          }
          __extends(a, b);
          a.prototype.toSource = function(b) {
            b = this.id.toSource(1);
            this.init && (b += "=" + this.init.toSource(1));
            return b;
          };
          return a;
        }(b);
        a.VariableDeclarator = e;
        e = function(b) {
          function a(e) {
            b.call(this);
            this.name = e;
            this.type = "Identifier";
          }
          __extends(a, b);
          a.prototype.toSource = function(b) {
            return this.name;
          };
          return a;
        }(r);
        a.Identifier = e;
        var C = function(b) {
          function a(e) {
            b.call(this);
            this.value = e;
            this.type = "Literal";
          }
          __extends(a, b);
          a.prototype.toSource = function(b) {
            return l(this.value);
          };
          return a;
        }(r);
        a.Literal = C;
        e = function(b) {
          function a() {
            b.apply(this, arguments);
            this.type = "ThisExpression";
          }
          __extends(a, b);
          a.prototype.toSource = function(b) {
            return "this";
          };
          return a;
        }(r);
        a.ThisExpression = e;
        e = function(b) {
          function a(e) {
            b.call(this);
            this.elements = e;
            this.type = "ArrayExpression";
          }
          __extends(a, b);
          a.prototype.toSource = function(b) {
            return "[" + c(this.elements, 1, ",") + "]";
          };
          return a;
        }(r);
        a.ArrayExpression = e;
        e = function(b) {
          function a(e) {
            b.call(this);
            this.properties = e;
            this.type = "ObjectExpression";
          }
          __extends(a, b);
          a.prototype.toSource = function(b) {
            return "{" + c(this.properties, 0, ",") + "}";
          };
          return a;
        }(r);
        a.ObjectExpression = e;
        e = function(b) {
          function a(e, f, c, h, g, p, r) {
            b.call(this);
            this.id = e;
            this.params = f;
            this.defaults = c;
            this.rest = h;
            this.body = g;
            this.generator = p;
            this.expression = r;
            this.type = "FunctionExpression";
          }
          __extends(a, b);
          return a;
        }(r);
        a.FunctionExpression = e;
        e = function(b) {
          function a(e) {
            b.call(this);
            this.expressions = e;
            this.type = "SequenceExpression";
          }
          __extends(a, b);
          return a;
        }(r);
        a.SequenceExpression = e;
        e = function(b) {
          function a(e, f, c) {
            b.call(this);
            this.operator = e;
            this.prefix = f;
            this.argument = c;
            this.type = "UnaryExpression";
          }
          __extends(a, b);
          a.prototype.toSource = function(b) {
            var a = this.argument.toSource(13), a = this.prefix ? this.operator + a : a + this.operator, a = " " + a;
            return 13 < b ? "(" + a + ")" : a;
          };
          return a;
        }(r);
        a.UnaryExpression = e;
        e = function(b) {
          function a(e, f, c) {
            b.call(this);
            this.operator = e;
            this.left = f;
            this.right = c;
            this.type = "BinaryExpression";
          }
          __extends(a, b);
          a.prototype.toSource = function(b) {
            var a = f[this.operator], e = this.left.toSource(a) + this.operator + this.right.toSource(a + 1);
            return a < b ? "(" + e + ")" : e;
          };
          return a;
        }(r);
        a.BinaryExpression = e;
        p = function(b) {
          function a(e, f, c) {
            b.call(this);
            this.operator = e;
            this.left = f;
            this.right = c;
            this.type = "AssignmentExpression";
          }
          __extends(a, b);
          a.prototype.toSource = function(b) {
            var a = this.left.toSource(1) + this.operator + this.right.toSource(1);
            return 1 < b ? "(" + a + ")" : a;
          };
          return a;
        }(r);
        a.AssignmentExpression = p;
        p = function(b) {
          function a(e, f, c) {
            b.call(this);
            this.operator = e;
            this.argument = f;
            this.prefix = c;
            this.type = "UpdateExpression";
          }
          __extends(a, b);
          return a;
        }(r);
        a.UpdateExpression = p;
        e = function(b) {
          function a(e, f, c) {
            b.call(this, e, f, c);
            this.type = "LogicalExpression";
          }
          __extends(a, b);
          return a;
        }(e);
        a.LogicalExpression = e;
        e = function(b) {
          function a(e, f, c) {
            b.call(this);
            this.test = e;
            this.consequent = f;
            this.alternate = c;
            this.type = "ConditionalExpression";
          }
          __extends(a, b);
          a.prototype.toSource = function(b) {
            return this.test.toSource(3) + "?" + this.consequent.toSource(1) + ":" + this.alternate.toSource(1);
          };
          return a;
        }(r);
        a.ConditionalExpression = e;
        e = function(b) {
          function a(e, f) {
            b.call(this);
            this.callee = e;
            this.type = "NewExpression";
            this.arguments = f;
          }
          __extends(a, b);
          a.prototype.toSource = function(b) {
            return "new " + this.callee.toSource(b) + "(" + c(this.arguments, b, ",") + ")";
          };
          return a;
        }(r);
        a.NewExpression = e;
        e = function(b) {
          function a(e, f) {
            b.call(this);
            this.callee = e;
            this.type = "CallExpression";
            this.arguments = f;
          }
          __extends(a, b);
          a.prototype.toSource = function(b) {
            return this.callee.toSource(b) + "(" + c(this.arguments, b, ",") + ")";
          };
          return a;
        }(r);
        a.CallExpression = e;
        r = function(b) {
          function a(e, f, c) {
            b.call(this);
            this.object = e;
            this.property = f;
            this.computed = c;
            this.type = "MemberExpression";
          }
          __extends(a, b);
          a.prototype.toSource = function(b) {
            var a = this.object.toSource(15);
            this.object instanceof C && (a = "(" + a + ")");
            var e = this.property.toSource(0), a = this.computed ? a + ("[" + e + "]") : a + ("." + e);
            return 17 < b ? "(" + a + ")" : a;
          };
          return a;
        }(r);
        a.MemberExpression = r;
        r = function(b) {
          function a(e, f, c) {
            b.call(this);
            this.key = e;
            this.value = f;
            this.kind = c;
            this.type = "Property";
          }
          __extends(a, b);
          a.prototype.toSource = function(b) {
            return this.key.toSource(b) + ":" + this.value.toSource(b);
          };
          return a;
        }(b);
        a.Property = r;
        r = function(b) {
          function a(e, f) {
            b.call(this);
            this.test = e;
            this.consequent = f;
            this.type = "SwitchCase";
          }
          __extends(a, b);
          a.prototype.toSource = function(b) {
            return (this.test ? "case " + this.test.toSource(b) : "default") + ": " + c(this.consequent, b, ";");
          };
          return a;
        }(b);
        a.SwitchCase = r;
        b = function(b) {
          function a(e, f, c) {
            b.call(this);
            this.param = e;
            this.guard = f;
            this.body = c;
            this.type = "CatchClause";
          }
          __extends(a, b);
          return a;
        }(b);
        a.CatchClause = b;
      })(a.AST || (a.AST = {}));
    })(k.Compiler || (k.Compiler = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(a) {
        var d = function(a) {
          function d(c, g, l) {
            a.call(this);
            this.parent = c;
            this.object = g;
            this.isWith = l;
          }
          __extends(d, a);
          d.prototype.visitInputs = function(a) {
            a(this.parent);
            a(this.object);
          };
          return d;
        }(a.Value);
        a.ASScope = d;
        d.prototype.nodeName = "ASScope";
        d = function(a) {
          function d(c, g, l) {
            a.call(this);
            this.namespaces = c;
            this.name = g;
            this.flags = l;
          }
          __extends(d, a);
          d.prototype.visitInputs = function(a) {
            a(this.namespaces);
            a(this.name);
            a(this.flags);
          };
          return d;
        }(a.Value);
        a.ASMultiname = d;
        d.prototype.mustFloat = !0;
        d.prototype.nodeName = "ASMultiname";
        d = function(a) {
          function d(c, g, l, t, m, h, f) {
            a.call(this, c, g, l, t, m, h);
            this.isLex = f;
          }
          __extends(d, a);
          return d;
        }(a.CallProperty);
        a.ASCallProperty = d;
        d.prototype.nodeName = "ASCallProperty";
        d = function(a) {
          function d(c, g, l, t, m, h, f) {
            a.call(this, c, g, l, t, m, h);
            this.scope = f;
          }
          __extends(d, a);
          d.prototype.visitInputs = function(c) {
            a.prototype.visitInputs.call(this, c);
            c(this.scope);
          };
          return d;
        }(a.CallProperty);
        a.ASCallSuper = d;
        d.prototype.nodeName = "ASCallSuper";
        d = function(a) {
          function d(c, g, l, t) {
            a.call(this, c, g, l, t);
          }
          __extends(d, a);
          return d;
        }(a.New);
        a.ASNew = d;
        d.prototype.nodeName = "ASNew";
        d = function(a) {
          function d(c, g, l, t, m) {
            a.call(this, c, g, l, t);
            this.flags = m;
          }
          __extends(d, a);
          return d;
        }(a.GetProperty);
        a.ASGetProperty = d;
        d.prototype.nodeName = "ASGetProperty";
        d = function(a) {
          function d(c, g, l, t) {
            a.call(this, c, g, l, t);
          }
          __extends(d, a);
          return d;
        }(a.GetProperty);
        a.ASGetDescendants = d;
        d.prototype.nodeName = "ASGetDescendants";
        d = function(a) {
          function d(c, g, l, t) {
            a.call(this, c, g, l, t);
          }
          __extends(d, a);
          return d;
        }(a.GetProperty);
        a.ASHasProperty = d;
        d.prototype.nodeName = "ASHasProperty";
        d = function(a) {
          function d(c, g, l, t) {
            a.call(this, c, g, l, t);
          }
          __extends(d, a);
          return d;
        }(a.GetProperty);
        a.ASGetSlot = d;
        d.prototype.nodeName = "ASGetSlot";
        d = function(a) {
          function d(c, g, l, t, m) {
            a.call(this, c, g, l, t);
            this.scope = m;
          }
          __extends(d, a);
          d.prototype.visitInputs = function(c) {
            a.prototype.visitInputs.call(this, c);
            c(this.scope);
          };
          return d;
        }(a.GetProperty);
        a.ASGetSuper = d;
        d.prototype.nodeName = "ASGetSuper";
        d = function(a) {
          function d(c, g, l, t, m, h) {
            a.call(this, c, g, l, t, m);
            this.flags = h;
          }
          __extends(d, a);
          return d;
        }(a.SetProperty);
        a.ASSetProperty = d;
        d.prototype.nodeName = "ASSetProperty";
        d = function(a) {
          function d(c, g, l, t, m) {
            a.call(this, c, g, l, t, m);
          }
          __extends(d, a);
          return d;
        }(a.SetProperty);
        a.ASSetSlot = d;
        d.prototype.nodeName = "ASSetSlot";
        d = function(a) {
          function d(c, g, l, t, m, h) {
            a.call(this, c, g, l, t, m);
            this.scope = h;
          }
          __extends(d, a);
          d.prototype.visitInputs = function(c) {
            a.prototype.visitInputs.call(this, c);
            c(this.scope);
          };
          return d;
        }(a.SetProperty);
        a.ASSetSuper = d;
        d.prototype.nodeName = "ASSetSuper";
        d = function(a) {
          function d(c, g, l, t) {
            a.call(this, c, g, l, t);
          }
          __extends(d, a);
          return d;
        }(a.DeleteProperty);
        a.ASDeleteProperty = d;
        d.prototype.nodeName = "ASDeleteProperty";
        d = function(a) {
          function d(c, g, l, t, m, h) {
            a.call(this, c, g);
            this.scope = l;
            this.name = t;
            this.methodInfo = m;
            this.strict = h;
          }
          __extends(d, a);
          d.prototype.visitInputs = function(c) {
            a.prototype.visitInputs.call(this, c);
            c(this.scope);
            c(this.name);
          };
          return d;
        }(a.StoreDependent);
        a.ASFindProperty = d;
        d.prototype.nodeName = "ASFindProperty";
        d = function(a) {
          function d(c, g) {
            a.call(this);
            this.control = c;
            this.scope = g;
          }
          __extends(d, a);
          d.prototype.visitInputs = function(a) {
            this.control && a(this.control);
            a(this.scope);
          };
          return d;
        }(a.Value);
        a.ASGlobal = d;
        d.prototype.nodeName = "ASGlobal";
        d = function(a) {
          function d(c) {
            a.call(this);
            this.methodInfo = c;
          }
          __extends(d, a);
          return d;
        }(a.Value);
        a.ASNewActivation = d;
        d.prototype.nodeName = "ASNewActivation";
        var k = function(a) {
          function d() {
            a.call(this);
          }
          __extends(d, a);
          return d;
        }(a.Value);
        a.ASNewHasNext2 = k;
        d.prototype.nodeName = "ASNewHasNext2";
      })(a.IR || (a.IR = {}));
    })(d.Compiler || (d.Compiler = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        var w = d.ArrayUtilities.top, v = d.ArrayUtilities.peek, u;
        (function(a) {
          (function(b) {
            b[b.SEQ = 1] = "SEQ";
            b[b.LOOP = 2] = "LOOP";
            b[b.IF = 3] = "IF";
            b[b.CASE = 4] = "CASE";
            b[b.SWITCH = 5] = "SWITCH";
            b[b.LABEL_CASE = 6] = "LABEL_CASE";
            b[b.LABEL_SWITCH = 7] = "LABEL_SWITCH";
            b[b.EXIT = 8] = "EXIT";
            b[b.BREAK = 9] = "BREAK";
            b[b.CONTINUE = 10] = "CONTINUE";
            b[b.TRY = 11] = "TRY";
            b[b.CATCH = 12] = "CATCH";
          })(a.Kind || (a.Kind = {}));
          var c = function() {
            return function(b) {
              this.kind = b;
            };
          }();
          a.ControlNode = c;
          var f = function(b) {
            function a(e) {
              b.call(this, 1);
              this.body = e;
            }
            __extends(a, b);
            a.prototype.trace = function(b) {
              for (var a = this.body, e = 0, f = a.length;e < f;e++) {
                a[e].trace(b);
              }
            };
            a.prototype.first = function() {
              return this.body[0];
            };
            a.prototype.slice = function(b, f) {
              return new a(this.body.slice(b, f));
            };
            return a;
          }(c);
          a.Seq = f;
          f = function(b) {
            function a(e) {
              b.call(this, 2);
              this.body = e;
            }
            __extends(a, b);
            a.prototype.trace = function(b) {
              b.enter("loop {");
              this.body.trace(b);
              b.leave("}");
            };
            return a;
          }(c);
          a.Loop = f;
          f = function(b) {
            function a(e, f, c, h) {
              b.call(this, 3);
              this.cond = e;
              this.then = f;
              this.nothingThrownLabel = h;
              this.negated = !1;
              this.else = c;
            }
            __extends(a, b);
            a.prototype.trace = function(b) {
              this.cond.trace(b);
              this.nothingThrownLabel && b.enter("if (label is " + this.nothingThrownLabel + ") {");
              b.enter("if" + (this.negated ? " not" : "") + " {");
              this.then && this.then.trace(b);
              this.else && (b.outdent(), b.enter("} else {"), this.else.trace(b));
              b.leave("}");
              this.nothingThrownLabel && b.leave("}");
            };
            return a;
          }(c);
          a.If = f;
          f = function(b) {
            function a(e, f) {
              b.call(this, 4);
              this.index = e;
              this.body = f;
            }
            __extends(a, b);
            a.prototype.trace = function(b) {
              0 <= this.index ? b.writeLn("case " + this.index + ":") : b.writeLn("default:");
              b.indent();
              this.body && this.body.trace(b);
              b.outdent();
            };
            return a;
          }(c);
          a.Case = f;
          f = function(b) {
            function a(e, f, c) {
              b.call(this, 5);
              this.determinant = e;
              this.cases = f;
              this.nothingThrownLabel = c;
            }
            __extends(a, b);
            a.prototype.trace = function(b) {
              this.nothingThrownLabel && b.enter("if (label is " + this.nothingThrownLabel + ") {");
              this.determinant.trace(b);
              b.writeLn("switch {");
              for (var a = 0, e = this.cases.length;a < e;a++) {
                this.cases[a].trace(b);
              }
              b.writeLn("}");
              this.nothingThrownLabel && b.leave("}");
            };
            return a;
          }(c);
          a.Switch = f;
          f = function(b) {
            function a(e, f) {
              b.call(this, 6);
              this.labels = e;
              this.body = f;
            }
            __extends(a, b);
            a.prototype.trace = function(b) {
              b.enter("if (label is " + this.labels.join(" or ") + ") {");
              this.body && this.body.trace(b);
              b.leave("}");
            };
            return a;
          }(c);
          a.LabelCase = f;
          f = function(b) {
            function a(e) {
              b.call(this, 7);
              this.cases = e;
              for (var f = {}, c = 0, h = e.length;c < h;c++) {
                for (var g = e[c], m = 0, d = g.labels.length;m < d;m++) {
                  f[g.labels[m]] = g;
                }
              }
              this.labelMap = f;
            }
            __extends(a, b);
            a.prototype.trace = function(b) {
              for (var a = 0, e = this.cases.length;a < e;a++) {
                this.cases[a].trace(b);
              }
            };
            return a;
          }(c);
          a.LabelSwitch = f;
          f = function(b) {
            function a(e) {
              b.call(this, 8);
              this.label = e;
            }
            __extends(a, b);
            a.prototype.trace = function(b) {
              b.writeLn("label = " + this.label);
            };
            return a;
          }(c);
          a.Exit = f;
          f = function(b) {
            function a(e, f) {
              b.call(this, 9);
              this.label = e;
              this.head = f;
            }
            __extends(a, b);
            a.prototype.trace = function(b) {
              this.label && b.writeLn("label = " + this.label);
              b.writeLn("break");
            };
            return a;
          }(c);
          a.Break = f;
          f = function(b) {
            function a(e, f) {
              b.call(this, 10);
              this.label = e;
              this.head = f;
              this.necessary = !0;
            }
            __extends(a, b);
            a.prototype.trace = function(b) {
              this.label && b.writeLn("label = " + this.label);
              this.necessary && b.writeLn("continue");
            };
            return a;
          }(c);
          a.Continue = f;
          f = function(b) {
            function a(e, f) {
              b.call(this, 11);
              this.body = e;
              this.catches = f;
            }
            __extends(a, b);
            a.prototype.trace = function(b) {
              b.enter("try {");
              this.body.trace(b);
              b.writeLn("label = " + this.nothingThrownLabel);
              for (var a = 0, e = this.catches.length;a < e;a++) {
                this.catches[a].trace(b);
              }
              b.leave("}");
            };
            return a;
          }(c);
          a.Try = f;
          c = function(b) {
            function a(e, f, c) {
              b.call(this, 12);
              this.varName = e;
              this.typeName = f;
              this.body = c;
            }
            __extends(a, b);
            a.prototype.trace = function(b) {
              b.outdent();
              b.enter("} catch (" + (this.varName || "e") + (this.typeName ? " : " + this.typeName : "") + ") {");
              this.body.trace(b);
            };
            return a;
          }(c);
          a.Catch = c;
        })(u = a.Control || (a.Control = {}));
        var l = d.BitSets.BITS_PER_WORD, c = d.BitSets.ADDRESS_BITS_PER_WORD, g = d.BitSets.BIT_INDEX_MASK, q = function(a) {
          function h(f, b) {
            a.call(this, f);
            this.blockById = b;
          }
          __extends(h, a);
          h.prototype.forEachBlock = function(a) {
            for (var b = this.blockById, e = this.bits, c = 0, h = e.length;c < h;c++) {
              var g = e[c];
              if (g) {
                for (var m = 0;m < l;m++) {
                  g & 1 << m && a(b[c * l + m]);
                }
              }
            }
          };
          h.prototype.choose = function() {
            for (var a = this.blockById, b = this.bits, e = 0, c = b.length;e < c;e++) {
              var h = b[e];
              if (h) {
                for (var g = 0;g < l;g++) {
                  if (h & 1 << g) {
                    return a[e * l + g];
                  }
                }
              }
            }
          };
          h.prototype.members = function() {
            for (var a = this.blockById, b = [], e = this.bits, c = 0, h = e.length;c < h;c++) {
              var g = e[c];
              if (g) {
                for (var m = 0;m < l;m++) {
                  g & 1 << m && b.push(a[c * l + m]);
                }
              }
            }
            return b;
          };
          h.prototype.setBlocks = function(a) {
            for (var b = this.bits, e = 0, h = a.length;e < h;e++) {
              var p = a[e].id;
              b[p >> c] |= 1 << (p & g);
            }
          };
          return h;
        }(d.BitSets.Uint32ArrayBitSet);
        a.BlockSet = q;
        var t = function() {
          function a(c) {
            this.makeBlockSetFactory(c.blocks.length, c.blocks);
            this.hasExceptions = !1;
            this.normalizeReachableBlocks(c.root);
          }
          a.prototype.makeBlockSetFactory = function(a, f) {
            this.boundBlockSet = function() {
              return new q(a, f);
            };
          };
          a.prototype.normalizeReachableBlocks = function(a) {
            var f = this.boundBlockSet, b = [], e = {}, c = {}, g = [a];
            for (c[a.id] = !0;a = w(g);) {
              if (e[a.id]) {
                1 === e[a.id] && (e[a.id] = 2, b.push(a)), c[a.id] = !1, g.pop();
              } else {
                e[a.id] = 1;
                c[a.id] = !0;
                for (var m = a.successors, d = 0, l = m.length;d < l;d++) {
                  var q = m[d];
                  c[q.id] && (a.spbacks || (a.spbacks = new f), a.spbacks.set(q.id));
                  !e[q.id] && g.push(q);
                }
              }
            }
            this.blocks = b.reverse();
          };
          a.prototype.computeDominance = function() {
            var a = this.blocks, f = a.length, b = Array(f);
            b[0] = 0;
            for (var e = [], c = 0;c < f;c++) {
              e[a[c].id] = c, a[c].dominatees = [];
            }
            for (var g = !0;g;) {
              for (g = !1, c = 1;c < f;c++) {
                var m = a[c].predecessors, d = m.length, l = e[m[0].id];
                if (!(l in b)) {
                  for (var q = 1;q < d && !(l = e[m[q].id], l in b);q++) {
                  }
                }
                for (q = 0;q < d;q++) {
                  var t = e[m[q].id];
                  if (t !== l && t in b) {
                    for (;t !== l;) {
                      for (;t > l;) {
                        t = b[t];
                      }
                      for (;l > t;) {
                        l = b[l];
                      }
                    }
                    l = t;
                  }
                }
                b[c] !== l && (b[c] = l, g = !0);
              }
            }
            a[0].dominator = a[0];
            for (c = 1;c < f;c++) {
              e = a[c], q = a[b[c]], e.dominator = q, q.dominatees.push(e), e.npredecessors = e.predecessors.length;
            }
            f = [a[0]];
            for (a[0].level || (a[0].level = 0);e = f.shift();) {
              a = e.dominatees;
              for (q = 0;q < a.length;q++) {
                a[q].level = e.level + 1;
              }
              f.push.apply(f, a);
            }
          };
          a.prototype.computeFrontiers = function() {
            for (var a = this.boundBlockSet, f = this.blocks, b = 0, e = f.length;b < e;b++) {
              f[b].frontier = new a;
            }
            b = 1;
            for (e = f.length;b < e;b++) {
              var a = f[b], c = a.predecessors;
              if (2 <= c.length) {
                for (var g = a.dominator, m = 0, d = c.length;m < d;m++) {
                  for (var l = c[m];l !== g;) {
                    l.frontier.set(a.id), l = l.dominator;
                  }
                }
              }
            }
          };
          a.prototype.analyzeControlFlow = function() {
            this.computeDominance();
            return this.analyzedControlFlow = !0;
          };
          a.prototype.markLoops = function() {
            function a(b) {
              var e = 1, f = {}, c = {}, h = [], g = [], p = [], m = b.level + 1;
              b = [b];
              for (var r, d;r = w(b);) {
                if (f[r.id]) {
                  if (v(g) === r) {
                    g.pop();
                    var l = [];
                    do {
                      d = h.pop(), c[d.id] = !0, l.push(d);
                    } while (d !== r);
                    (1 < l.length || d.spbacks && d.spbacks.get(d.id)) && p.push(l);
                  }
                  b.pop();
                } else {
                  f[r.id] = e++;
                  h.push(r);
                  g.push(r);
                  d = r.successors;
                  for (var l = 0, q = d.length;l < q;l++) {
                    if (r = d[l], !(r.level < m)) {
                      var t = r.id;
                      if (!f[t]) {
                        b.push(r);
                      } else {
                        if (!c[t]) {
                          for (;f[v(g).id] > f[t];) {
                            g.pop();
                          }
                        }
                      }
                    }
                  }
                }
              }
              return p;
            }
            function f(a, e) {
              var f = new b;
              f.setBlocks(a);
              f.recount();
              this.id = e;
              this.body = f;
              this.exit = new b;
              this.save = {};
              this.head = new b;
              this.npredecessors = 0;
            }
            if (!this.analyzedControlFlow && !this.analyzeControlFlow()) {
              return !1;
            }
            var b = this.boundBlockSet, e = function(a) {
              for (var e = new b, f = 0, c = a.length;f < c;f++) {
                var h = a[f], g = h.spbacks;
                if (g) {
                  for (var h = h.successors, p = 0, m = h.length;p < m;p++) {
                    var r = h[p];
                    g.get(r.id) && e.set(r.dominator.id);
                  }
                }
              }
              return e.members();
            }(this.blocks);
            if (0 >= e.length) {
              return this.markedLoops = !0;
            }
            for (var e = e.sort(function(b, a) {
              return b.level - a.level;
            }), c = 0, g = e.length - 1;0 <= g;g--) {
              var m = e[g], d = a(m);
              if (0 !== d.length) {
                for (var l = 0, q = d.length;l < q;l++) {
                  for (var t = d[l], n = new f(t, c++), k = 0, u = t.length;k < u;k++) {
                    var y = t[k];
                    if (y.level === m.level + 1 && !y.loop) {
                      y.loop = n;
                      n.head.set(y.id);
                      for (var K = y.predecessors, H = 0, A = K.length;H < A;H++) {
                        n.body.get(K[H].id) && y.npredecessors--;
                      }
                      n.npredecessors += y.npredecessors;
                    }
                  }
                  k = 0;
                  for (u = t.length;k < u;k++) {
                    y = t[k], y.level === m.level + 1 && (y.npredecessors = n.npredecessors);
                  }
                  n.head.recount();
                }
              }
            }
            return this.markedLoops = !0;
          };
          a.prototype.induceControlTree = function() {
            function a(b, e) {
              b.recount();
              if (0 === b.count) {
                return null;
              }
              b.save = e;
              return b;
            }
            function f(g, m, d, l, q, t, n) {
              for (var k = [];g;) {
                if (1 < g.count) {
                  for (var v = new e, y = {}, K = [], H = g.members(), A = 0, z = H.length;A < z;A++) {
                    var G = H[A], L = G.id, F;
                    if (G.loop && g.contains(G.loop.head)) {
                      var S = G.loop;
                      if (!S.induced) {
                        for (var U = S.head.members(), N = 0, R = 0, T = U.length;R < T;R++) {
                          N += g.save[U[R].id];
                        }
                        if (0 < G.npredecessors - N) {
                          G.npredecessors -= g.save[L], G.save = g.save[L], F = f(G, v, y, l), K.push(new u.LabelCase([L], F));
                        } else {
                          R = 0;
                          for (T = U.length;R < T;R++) {
                            F = U[R], F.npredecessors -= N, F.save = N;
                          }
                          F = f(G, v, y, l);
                          K.push(new u.LabelCase(S.head.toArray(), F));
                          S.induced = !0;
                        }
                      }
                    } else {
                      G.npredecessors -= g.save[L], G.save = g.save[L], F = f(G, v, y, l), K.push(new u.LabelCase([L], F));
                    }
                  }
                  for (var G = [], R = 0, A = 0;A < K.length;A++) {
                    F = K[A];
                    z = F.labels;
                    U = T = 0;
                    for (S = z.length;U < S;U++) {
                      L = z[U], v.get(L) && 0 < H[A].npredecessors - g.save[L] ? G.push(L) : z[T++] = L;
                    }
                    z.length = T;
                    0 < z.length && (K[R++] = F);
                  }
                  K.length = R;
                  if (0 === K.length) {
                    for (A = 0;A < G.length;A++) {
                      L = G[A], d[L] = (d[L] || 0) + g.save[L], m.set(L);
                    }
                    t && k.push(new u.Break(void 0, t));
                    break;
                  }
                  k.push(new u.LabelSwitch(K));
                  g = a(v, y);
                } else {
                  1 === g.count ? (G = g.choose(), L = G.id, G.npredecessors -= g.save[L], G.save = g.save[L]) : (G = g, L = G.id);
                  if (q) {
                    q = !1;
                  } else {
                    if (l && !l.body.get(L)) {
                      G.npredecessors += G.save;
                      l.exit.set(L);
                      l.save[L] = (l.save[L] || 0) + G.save;
                      k.push(new u.Break(L, l));
                      break;
                    }
                    if (l && G.loop === l) {
                      G.npredecessors += G.save;
                      k.push(new u.Continue(L, l));
                      break;
                    }
                    if (G === n) {
                      break;
                    }
                    if (0 < G.npredecessors) {
                      G.npredecessors += G.save;
                      d[L] = (d[L] || 0) + G.save;
                      m.set(L);
                      k.push(t ? new u.Break(L, t) : new u.Exit(L));
                      break;
                    }
                    if (G.loop) {
                      var T = G.loop;
                      if (1 === T.head.count) {
                        v = f(T.head.choose(), null, null, T, !0);
                      } else {
                        v = [];
                        U = T.head.members();
                        A = 0;
                        for (z = U.length;A < z;A++) {
                          F = U[A], y = F.id, F = f(F, null, null, T, !0), v.push(new u.LabelCase([y], F));
                        }
                        v = new u.LabelSwitch(v);
                      }
                      k.push(new u.Loop(v));
                      g = a(T.exit, T.save);
                      continue;
                    }
                  }
                  v = new e;
                  y = {};
                  if (b && G.hasCatches) {
                    F = G.successors;
                    K = [];
                    g = [];
                    A = 0;
                    for (z = F.length;A < z;A++) {
                      H = F[A], (H.exception ? K : g).push(H);
                    }
                    z = [];
                    for (A = 0;A < K.length;A++) {
                      H = K[A], --H.npredecessors, H.save = 1, F = f(H, v, y, l), H = H.exception, z.push(new u.Catch(H.varName, H.typeName, F));
                    }
                    z = new u.Try(G, z);
                  } else {
                    g = G.successors, z = G;
                  }
                  if (2 < g.length) {
                    K = [];
                    for (A = g.length - 1;0 <= A;A--) {
                      H = g[A], --H.npredecessors, H.save = 1, F = f(H, v, y, l, null, G, g[A + 1]), K.unshift(new u.Case(A, F));
                    }
                    w(K).index = void 0;
                    b && G.hasCatches ? (z.nothingThrownLabel = c, z = new u.Switch(z, K, c++)) : z = new u.Switch(z, K);
                    g = a(v, y);
                  } else {
                    2 === g.length ? (A = G.hasFlippedSuccessors ? g[1] : g[0], F = G.hasFlippedSuccessors ? g[0] : g[1], --A.npredecessors, A.save = 1, A = f(A, v, y, l), --F.npredecessors, F.save = 1, F = f(F, v, y, l), b && G.hasCatches ? (z.nothingThrownLabel = c, z = new u.If(z, A, F, c++)) : z = new u.If(z, A, F), g = a(v, y)) : (F = g[0]) ? b && G.hasCatches ? (z.nothingThrownLabel = F.id, y[F.id] = (y[F.id] || 0) + 1, v.set(F.id), g = a(v, y)) : (--F.npredecessors, F.save = 1, g = F) : b && 
                    G.hasCatches ? (z.nothingThrownLabel = -1, g = a(v, y)) : g = F;
                  }
                  k.push(z);
                }
              }
              return 1 < k.length ? new u.Seq(k) : k[0];
            }
            var b = this.hasExceptions, e = this.boundBlockSet, c = this.blocks.length;
            this.controlTree = f(this.blocks[0], new e, {});
          };
          a.prototype.restructureControlFlow = function() {
            k.enterTimeline("Restructure Control Flow");
            if (this.markedLoops || this.markLoops()) {
              this.induceControlTree(), this.restructuredControlFlow = !0;
            }
            k.leaveTimeline();
          };
          return a;
        }();
        a.Analysis = t;
        a.analyze = function(a) {
          a = new t(a);
          a.restructureControlFlow();
          return a.controlTree;
        };
      })(a.Looper || (a.Looper = {}));
    })(k.Compiler || (k.Compiler = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(n) {
        function w(b, a) {
          if ("string" === typeof b || null === b || !0 === b || !1 === b) {
            return new B(b);
          }
          if (void 0 === b) {
            return new D("undefined");
          }
          if ("object" === typeof b || "function" === typeof b) {
            return b instanceof d.AVM2.Runtime.LazyInitializer ? g(l(ia, "C"), [new B(a.useConstant(b))]) : new J(ja, new B(a.useConstant(b)), !0);
          }
          if ("number" === typeof b && isNaN(b)) {
            return new D("NaN");
          }
          if (Infinity === b) {
            return new D("Infinity");
          }
          if (-Infinity === b) {
            return new F("-", !0, new D("Infinity"));
          }
          if ("number" === typeof b && 0 > 1 / b) {
            return new F("-", !0, new B(Math.abs(b)));
          }
          if ("number" === typeof b) {
            return new B(b);
          }
          r("Cannot emit constant for value: " + b);
        }
        function v(b) {
          return new D(b);
        }
        function u(b) {
          var a = b[0];
          if (!("$" === a || "_" === a || "\\" === a || "a" <= a && "z" >= a || "A" <= a && "Z" >= a)) {
            return !1;
          }
          for (a = 1;a < b.length;a++) {
            var e = b[a];
            if (!("$" === e || "_" === e || "\\" === e || "a" <= e && "z" >= e || "A" <= e && "Z" >= e || "0" <= e && "9" >= e)) {
              return !1;
            }
          }
          return !0;
        }
        function l(b, a) {
          return u(a) ? new J(b, new D(a), !1) : new J(b, new B(a), !0);
        }
        function c(b, a) {
          return u(a.value) ? new J(b, new D(a.value), !1) : new J(b, a, !0);
        }
        function g(b, a) {
          return new y(b, a);
        }
        function q(b, a, e) {
          return g(l(b, "asCall"), [a].concat(e));
        }
        function t(b, a, e) {
          return g(l(b, "call"), [a].concat(e));
        }
        function m(b, a) {
          return new K("=", b, a);
        }
        function h(b) {
          return new M(b, "var");
        }
        function f(b, a, e) {
          return e || !b.variable ? b.compile(a) : v(b.variable.name);
        }
        function b(b, a) {
          return [f(b.namespaces, a), f(b.name, a), f(b.flags, a)];
        }
        function e(b, a) {
          return b.map(function(b) {
            return f(b, a);
          });
        }
        var r = d.Debug.unexpected, p = d.Debug.notImplemented, C = d.ArrayUtilities.pushUnique, I = d.AVM2.Compiler.AST, B = I.Literal, D = I.Identifier, M = I.VariableDeclaration, E = I.VariableDeclarator, J = I.MemberExpression, P = I.BinaryExpression, y = I.CallExpression, K = I.AssignmentExpression, H = I.ExpressionStatement, A = I.ReturnStatement, z = I.ConditionalExpression, G = I.ObjectExpression, L = I.ArrayExpression, F = I.UnaryExpression, S = I.NewExpression, U = I.Property, N = I.BlockStatement, 
        R = I.ThisExpression, T = I.ThrowStatement, X = I.IfStatement, da = I.WhileStatement, x = I.BreakStatement, Y = I.ContinueStatement, V = I.SwitchStatement, ba = I.SwitchCase, Z = a.IR.Variable, O = a.IR.Constant, aa = a.IR.Operator, I = d.AVM2.Compiler.Looper.Control, ea = d.ArrayUtilities.last;
        I.Break.prototype.compile = function(b) {
          return b.compileBreak(this);
        };
        I.Continue.prototype.compile = function(b) {
          return b.compileContinue(this);
        };
        I.Exit.prototype.compile = function(b) {
          return b.compileExit(this);
        };
        I.LabelSwitch.prototype.compile = function(b) {
          return b.compileLabelSwitch(this);
        };
        I.Seq.prototype.compile = function(b) {
          return b.compileSequence(this);
        };
        I.Loop.prototype.compile = function(b) {
          return b.compileLoop(this);
        };
        I.Switch.prototype.compile = function(b) {
          return b.compileSwitch(this);
        };
        I.If.prototype.compile = function(b) {
          return b.compileIf(this);
        };
        I.Try.prototype.compile = function(b) {
          p("try");
          return null;
        };
        var ia = new D("$F"), ja = new D("$C"), ga = function() {
          function b() {
            this.label = new Z("$L");
            this.variables = [];
            this.constants = [];
            this.lazyConstants = [];
            this.parameters = [];
          }
          b.prototype.useConstant = function(b) {
            b instanceof d.AVM2.Runtime.LazyInitializer ? (b = C(this.lazyConstants, b), this.constants[b] = null) : (b = C(this.constants, b), this.lazyConstants[b] = null);
            return b;
          };
          b.prototype.useVariable = function(b) {
            C(this.variables, b);
          };
          b.prototype.useParameter = function(b) {
            this.parameters[b.index] = b;
          };
          b.prototype.compileLabelBody = function(b) {
            var a = [];
            void 0 !== b.label && (this.useVariable(this.label), a.push(new H(m(v(this.label.name), new B(b.label)))));
            return a;
          };
          b.prototype.compileBreak = function(b) {
            b = this.compileLabelBody(b);
            b.push(new x(null));
            return new N(b);
          };
          b.prototype.compileContinue = function(b) {
            b = this.compileLabelBody(b);
            b.push(new Y(null));
            return new N(b);
          };
          b.prototype.compileExit = function(b) {
            return new N(this.compileLabelBody(b));
          };
          b.prototype.compileIf = function(b) {
            var a = b.cond.compile(this), e = null, c = null;
            b.then && (e = b.then.compile(this));
            b.else && (c = b.else.compile(this));
            var h = f(a.end.predicate, this);
            if (b.negated) {
              a: {
                b = h;
                if (b instanceof O) {
                  if (!0 === b.value || !1 === b.value) {
                    b = w(!b.value);
                    break a;
                  }
                } else {
                  if (b instanceof D) {
                    b = new F(aa.FALSE.name, !0, b);
                    break a;
                  }
                }
                var h = b instanceof P ? b.left : b.argument, g = b.right, p = aa.fromName(b.operator);
                b = p === aa.EQ && g instanceof B && !1 === g.value || p === aa.FALSE ? h : p.not ? b instanceof P ? new P(p.not.name, h, g) : new F(p.not.name, !0, h) : new F(aa.FALSE.name, !0, b);
              }
            } else {
              b = h;
            }
            a.body.push(new X(b, e || new N([]), c || null));
            return a;
          };
          b.prototype.compileSwitch = function(b) {
            var a = b.determinant.compile(this), e = [];
            b.cases.forEach(function(b) {
              var a;
              b.body && (a = b.body.compile(this));
              b = "number" === typeof b.index ? new B(b.index) : void 0;
              e.push(new ba(b, a ? [a] : []));
            }, this);
            b = f(a.end.determinant, this);
            a.body.push(new V(b, e, !1));
            return a;
          };
          b.prototype.compileLabelSwitch = function(b) {
            for (var a = null, e = v(this.label.name), f = b.cases.length - 1;0 <= f;f--) {
              for (var c = b.cases[f], h = c.labels, g = new P("===", e, new B(h[0])), p = 1;p < h.length;p++) {
                g = new P("||", g, new P("===", e, new B(h[p])));
              }
              a = new X(g, c.body ? c.body.compile(this) : new N([]), a);
            }
            return a;
          };
          b.prototype.compileLoop = function(b) {
            b = b.body.compile(this);
            return new da(w(!0), b);
          };
          b.prototype.compileSequence = function(b) {
            var a = this, e = [];
            b.body.forEach(function(b) {
              b = b.compile(a);
              b instanceof N ? e = e.concat(b.body) : e.push(b);
            });
            return new N(e);
          };
          b.prototype.compileBlock = function(b) {
            for (var e = [], c = 1;c < b.nodes.length - 1;c++) {
              var h = b.nodes[c], g;
              h instanceof a.IR.Throw ? g = f(h, this, !0) : (h instanceof a.IR.Move ? (g = v(h.to.name), this.useVariable(h.to), h = f(h.from, this)) : (h.variable ? (g = v(h.variable.name), this.useVariable(h.variable)) : g = null, h = f(h, this, !0)), g = g ? new H(m(g, h)) : new H(h));
              e.push(g);
            }
            c = ea(b.nodes);
            c instanceof a.IR.Stop && e.push(new A(f(c.argument, this)));
            e = new N(e);
            e.end = ea(b.nodes);
            return e;
          };
          return b;
        }();
        n.Context = ga;
        a.IR.Parameter.prototype.compile = function(b) {
          b.useParameter(this);
          return v(this.name);
        };
        a.IR.Constant.prototype.compile = function(b) {
          return w(this.value, b);
        };
        a.IR.Variable.prototype.compile = function(b) {
          return v(this.name);
        };
        a.IR.Phi.prototype.compile = function(b) {
          return f(this.variable, b);
        };
        a.IR.ASScope.prototype.compile = function(b) {
          var a = f(this.parent, b);
          b = f(this.object, b);
          var e = new B(this.isWith);
          return new S(v("Scope"), [a, b, e]);
        };
        a.IR.ASFindProperty.prototype.compile = function(a) {
          var e = f(this.scope, a), c = b(this.name, a);
          a = f(this.methodInfo, a);
          var h = new B(this.strict);
          return g(l(e, "findScopeProperty"), c.concat([a, h]));
        };
        a.IR.ASGetProperty.prototype.compile = function(a) {
          var e = f(this.object, a);
          if (this.flags & 1) {
            return g(l(e, "asGetNumericProperty"), [f(this.name.name, a)]);
          }
          if (this.flags & 2) {
            return g(l(e, "asGetResolvedStringProperty"), [f(this.name, a)]);
          }
          a = b(this.name, a);
          var c = new B(this.flags & 8);
          return g(l(e, "asGetProperty"), a.concat(c));
        };
        a.IR.ASGetSuper.prototype.compile = function(a) {
          var e = f(this.scope, a), c = f(this.object, a);
          a = b(this.name, a);
          return g(l(c, "asGetSuper"), [e].concat(a));
        };
        a.IR.Latch.prototype.compile = function(b) {
          return new z(f(this.condition, b), f(this.left, b), f(this.right, b));
        };
        a.IR.Unary.prototype.compile = function(b) {
          return new F(this.operator.name, !0, f(this.argument, b));
        };
        a.IR.Copy.prototype.compile = function(b) {
          return f(this.argument, b);
        };
        a.IR.Binary.prototype.compile = function(b) {
          var e = f(this.left, b);
          b = f(this.right, b);
          return this.operator === a.IR.Operator.AS_ADD ? g(v("asAdd"), [e, b]) : new P(this.operator.name, e, b);
        };
        a.IR.CallProperty.prototype.compile = function(b) {
          var a = f(this.object, b), e = f(this.name, b), e = c(a, e), h = this.args.map(function(a) {
            return f(a, b);
          });
          return this.flags & 16 ? q(e, a, h) : this.flags & 4 ? g(e, h) : t(e, a, h);
        };
        a.IR.ASCallProperty.prototype.compile = function(a) {
          var e = f(this.object, a), c = this.args.map(function(b) {
            return f(b, a);
          });
          if (this.flags & 2) {
            return g(l(e, "asCallResolvedStringProperty"), [f(this.name, a), new B(this.isLex), new L(c)]);
          }
          var h = b(this.name, a);
          return g(l(e, "asCallProperty"), h.concat([new B(this.isLex), new L(c)]));
        };
        a.IR.ASCallSuper.prototype.compile = function(a) {
          var e = f(this.scope, a), c = f(this.object, a), h = this.args.map(function(b) {
            return f(b, a);
          }), p = b(this.name, a);
          return g(l(c, "asCallSuper"), [e].concat(p).concat(new L(h)));
        };
        a.IR.Call.prototype.compile = function(b) {
          var a = this.args.map(function(a) {
            return f(a, b);
          }), e = f(this.callee, b), c;
          c = this.object ? f(this.object, b) : new B(null);
          return this.flags & 16 ? q(e, c, a) : null === this.object ? g(e, a) : t(e, c, a);
        };
        a.IR.ASNew.prototype.compile = function(b) {
          var a = this.args.map(function(a) {
            return f(a, b);
          }), e = f(this.callee, b), e = l(e, "instanceConstructor");
          return new S(e, a);
        };
        a.IR.This.prototype.compile = function(b) {
          return new R;
        };
        a.IR.Throw.prototype.compile = function(b) {
          b = f(this.argument, b);
          return new T(b);
        };
        a.IR.Arguments.prototype.compile = function(b) {
          return v("arguments");
        };
        a.IR.ASGlobal.prototype.compile = function(b) {
          b = f(this.scope, b);
          return l(l(b, "global"), "object");
        };
        a.IR.ASSetProperty.prototype.compile = function(a) {
          var e = f(this.object, a), c = f(this.value, a);
          if (this.flags & 1) {
            return g(l(e, "asSetNumericProperty"), [f(this.name.name, a), c]);
          }
          a = b(this.name, a);
          return g(l(e, "asSetProperty"), a.concat(c));
        };
        a.IR.ASSetSuper.prototype.compile = function(a) {
          var e = f(this.scope, a), c = f(this.object, a), h = b(this.name, a);
          a = f(this.value, a);
          return g(l(c, "asSetSuper"), [e].concat(h).concat([a]));
        };
        a.IR.ASDeleteProperty.prototype.compile = function(a) {
          var e = f(this.object, a);
          a = b(this.name, a);
          return g(l(e, "asDeleteProperty"), a);
        };
        a.IR.ASHasProperty.prototype.compile = function(a) {
          var e = f(this.object, a);
          a = b(this.name, a);
          return g(l(e, "asHasProperty"), a);
        };
        a.IR.GlobalProperty.prototype.compile = function(b) {
          return v(this.name);
        };
        a.IR.GetProperty.prototype.compile = function(b) {
          var a = f(this.object, b);
          b = f(this.name, b);
          return c(a, b);
        };
        a.IR.SetProperty.prototype.compile = function(b) {
          var a = f(this.object, b), e = f(this.name, b);
          b = f(this.value, b);
          return m(c(a, e), b);
        };
        a.IR.ASGetDescendants.prototype.compile = function(b) {
          var a = f(this.object, b);
          b = f(this.name, b);
          return g(v("getDescendants"), [a, b]);
        };
        a.IR.ASSetSlot.prototype.compile = function(b) {
          var a = f(this.object, b), e = f(this.name, b);
          b = f(this.value, b);
          return g(v("asSetSlot"), [a, e, b]);
        };
        a.IR.ASGetSlot.prototype.compile = function(b) {
          var a = f(this.object, b);
          b = f(this.name, b);
          return g(v("asGetSlot"), [a, b]);
        };
        a.IR.Projection.prototype.compile = function(b) {
          return f(this.argument.scope, b);
        };
        a.IR.NewArray.prototype.compile = function(b) {
          return new L(e(this.elements, b));
        };
        a.IR.NewObject.prototype.compile = function(b) {
          var a = this.properties.map(function(a) {
            var e = f(a.key, b);
            a = f(a.value, b);
            return new U(e, a, "init");
          });
          return new G(a);
        };
        a.IR.ASNewActivation.prototype.compile = function(b) {
          b = f(this.methodInfo, b);
          return g(v("asCreateActivation"), [b]);
        };
        a.IR.ASNewHasNext2.prototype.compile = function(b) {
          return new S(v("HasNext2Info"), []);
        };
        a.IR.ASMultiname.prototype.compile = function(b) {
          var a = f(this.namespaces, b), e = f(this.name, b);
          b = f(this.flags, b);
          return g(v("createName"), [a, e, b]);
        };
        a.IR.Block.prototype.compile = function(b) {
          return b.compileBlock(this);
        };
        var ca = function() {
          function b(a, e, f, c) {
            this.parameters = a;
            this.body = e;
            this.constants = f;
            this.lazyConstants = c;
          }
          b.prototype.C = function(b) {
            var a = this.constants[b];
            null === a && (a = this.constants[b] = this.lazyConstants[b].resolve(), this.lazyConstants[b] = null);
            return a;
          };
          b.id = 0;
          return b;
        }();
        n.Compilation = ca;
        n.generate = function(b) {
          k.enterTimeline("Looper");
          var e = a.Looper.analyze(b);
          k.leaveTimeline();
          new d.IndentingWriter;
          b = new ga;
          k.enterTimeline("Construct AST");
          var f = e.compile(b);
          k.leaveTimeline();
          for (var e = [], c = 0;c < b.parameters.length;c++) {
            e.push(v(b.parameters[c] ? b.parameters[c].name : "_" + c));
          }
          c = "$$F" + ca.id++;
          if (b.constants.length) {
            var g = new D(c), p = new J(g, new D("constants"), !1);
            f.body.unshift(h([new E(v("$F"), g), new E(v("$C"), p)]));
          }
          b.variables.length && (k.countTimeline("Backend: Locals", b.variables.length), g = h(b.variables.map(function(b) {
            return new E(v(b.name));
          })), f.body.unshift(g));
          k.enterTimeline("Serialize AST");
          f = f.toSource();
          k.leaveTimeline();
          return jsGlobal[c] = new ca(e.map(function(b) {
            return b.name;
          }), f, b.constants, b.lazyConstants);
        };
      })(a.Backend || (a.Backend = {}));
    })(k.Compiler || (k.Compiler = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      function n(a) {
        return "string" === typeof a ? b(a) : String(a);
      }
      function w(b, a) {
        if (!a) {
          return b;
        }
        switch(h.getQualifiedName(a)) {
          case h.Int:
            return b + "|0";
          case h.Uint:
            return b + " >>> 0";
          case h.String:
            return "asCoerceString(" + b + ")";
          case h.Number:
            return "+" + b;
          case h.Boolean:
            return "!!" + b;
          case h.Object:
            return "asCoerceObject(" + b + ")";
          default:
            return b;
        }
      }
      function v(b, a, f, c) {
        var h = Relooper.r;
        Relooper.r = 0;
        b = new D(b, a, f, c);
        try {
          var g = b.compile();
        } catch (p) {
          Relooper.cleanup(), C++, e && e.errorLn("Error: " + p);
        }
        Relooper.r = h;
        return g;
      }
      function u(b) {
        return d.StringUtilities.variableLengthEncodeInt32(b.abc.hash) + "_" + b.index;
      }
      function l(b) {
        return d.StringUtilities.variableLengthEncodeInt32(b.abc.hash) + "_" + h.getQualifiedName(b.instanceInfo.name);
      }
      function c(b, a) {
        for (var e = 0;e < a.length;e++) {
          var f = a[e];
          if (f.isConst() || f.isSlot()) {
            var c = f.hasDefaultValue ? n(f.value) : t.getDefaultValue(f.typeName);
            b.writeLn("this." + h.getQualifiedName(f.name) + " = " + c + ";");
          }
        }
      }
      function g(b, a, e) {
        for (var f = 0;f < e.length;f++) {
          var c = e[f];
          if (c.isMethodOrAccessor()) {
            var g = c.methodInfo;
            if (!g.code) {
              break;
            }
            if (g = v(g, new m(null, {baseClass:{traitsPrototype:{}}}), !1, "")) {
              b.enter("function " + a + h.getQualifiedName(c.name) + "(" + g.parameters.join(", ") + ") {"), b.writeLns(g.body), b.leave("}");
            }
          }
        }
      }
      function q(b, a) {
        function e(a) {
          if (a.instanceInfo.superName) {
            var f;
            a: {
              f = a.instanceInfo.superName;
              for (var g = 0;g < M.length;g++) {
                for (var p = M[g].scripts, m = 0;m < p.length;m++) {
                  for (var r = p[m].traits, d = 0;d < r.length;d++) {
                    var l = r[d];
                    if (l.isClass()) {
                      for (var q = h.getQualifiedName(l.name), t = 0, n = f.namespaces.length;t < n;t++) {
                        var k = f.getQName(t);
                        if (q === h.getQualifiedName(k)) {
                          f = l.classInfo;
                          break a;
                        }
                      }
                    }
                  }
                }
              }
              f = void 0;
            }
            e(f);
          }
          b.writeLn("// Traits: " + a.instanceInfo.name);
          c(b, a.instanceInfo.traits);
        }
        b.writeLn("// Class: " + a.instanceInfo.name + " extends " + a.instanceInfo.superName);
        var f = l(a), p = f + "_Static";
        g(b, p + "_", a.traits);
        b.enter("function " + p + " () {");
        c(b, a.traits);
        b.leave("}");
        g(b, f + "_", a.instanceInfo.traits);
        b.enter("function " + f + "() {");
        e(a);
        b.leave("}");
      }
      var t = k.ABC.ClassInfo, m = k.Runtime.Scope, h = k.ABC.Multiname, f = d.Debug.assert, b = d.AVM2.Compiler.AST.escapeString, e = 0 < a.baselineDebugLevel.value ? new d.IndentingWriter : null, r = 0, p = 0, C = 0, I = 0, B = function() {
        function b(a) {
          this._indent = 0;
          this._buffer = [];
          this._emitIndent = !0;
        }
        b.prototype.reset = function() {
          this._indent = this._buffer.length = 0;
        };
        b.prototype.enter = function(b) {
          this.writeLn(b);
          this._indent++;
        };
        b.prototype.leave = function(b) {
          this._indent--;
          this.writeLn(b);
        };
        b.prototype.leaveAndEnter = function(b) {
          this._indent--;
          this.writeLn(b);
          this._indent++;
        };
        b.prototype.writeLn = function(b) {
          this._buffer.push(b);
        };
        b.prototype.writeLns = function(b) {
          this._buffer.push(b);
        };
        b.prototype.indent = function() {
          this._indent++;
        };
        b.prototype.outdent = function() {
          this._indent--;
        };
        b.prototype.toString = function() {
          return this._buffer.join("\n");
        };
        return b;
      }(), D = function() {
        function a(b, e, f, c) {
          this.methodInfo = b;
          this.scope = e;
          this.hasDynamicScope = f;
          this.globalMiName = c;
          this.pushedStrings = [];
          this.hasNext2Infos = this.scopeIndex = this.stack = 0;
          this.blockBodies = [];
          this.constantPool = this.methodInfo.abc.constantPool;
        }
        a.prototype.compile = function() {
          r++;
          Relooper.init();
          this.bodyEmitter = new B(!1);
          this.blockEmitter = new B(!1);
          var b = this.methodInfo.hasExceptions();
          b && this.bodyEmitter.writeLn("var pc = 0;");
          var a = performance.now(), f = this.methodInfo.analysis || new k.Analysis(this.methodInfo);
          f.analyzedControlFlow || f.analyzeControlFlow();
          this.methodInfo.classScope = this.scope;
          var c = this.blocks = f.blocks;
          this.bytecodes = f.bytecodes;
          this.blockStates = [];
          this.local = ["this"];
          this.parameters = [];
          this.hasDynamicScope && this.parameters.push("$0");
          for (var h = this.hasDynamicScope ? 1 : 0, g = this.methodInfo.parameters.length, m = 0;m < g;m++) {
            var d = this.methodInfo.parameters[m], l = this.getLocalName(m + 1);
            this.local.push(l);
            this.parameters.push(l);
            if (d.optional && d.isUsed) {
              var q = n(d.value);
              this.bodyEmitter.writeLn("arguments.length < " + (h + m + 1) + " && (" + l + " = " + q + ");");
            }
            d = w(l, d.type);
            d !== l && this.bodyEmitter.writeLn(l + " = " + d + ";");
          }
          l = this.methodInfo.localCount;
          if (l > g + 1) {
            d = "var ";
            for (m = g + 1;m < l;m++) {
              this.local.push(this.getLocalName(m)), d += this.local[m] + (m < l - 1 ? ", " : ";");
            }
            this.bodyEmitter.writeLn(d);
          }
          if (0 < this.methodInfo.maxStack) {
            l = "var ";
            for (m = 0;m < this.methodInfo.maxStack;m++) {
              l += this.getStack(m) + (m < this.methodInfo.maxStack - 1 ? ", " : ";");
            }
            this.bodyEmitter.writeLn(l);
          }
          l = this.methodInfo.maxScopeDepth - this.methodInfo.initScopeDepth + 1;
          m = this.hasDynamicScope ? 1 : 0;
          if (l - m) {
            for (d = "var ";m < l;m++) {
              d += this.getScope(m) + (m < l - 1 ? ", " : ";");
            }
            this.bodyEmitter.writeLn(d);
          }
          this.bodyEmitter.writeLn("var mi = " + this.globalMiName + ";");
          this.hasDynamicScope || this.bodyEmitter.writeLn("$0 = mi.classScope;");
          this.bodyEmitter.writeLn("var label;");
          (this.methodInfo.needsRest() || this.methodInfo.needsArguments()) && this.bodyEmitter.writeLn(this.local[g + 1] + " = sliceArguments(arguments, " + (h + (this.methodInfo.needsRest() ? g : 0)) + ");");
          g = this.relooperEntryBlock = Relooper.addBlock("// Entry Block");
          for (m = 0;m < c.length;m++) {
            h = c[m], h.relooperBlock = Relooper.addBlock("// Block: " + h.bid);
          }
          if (b) {
            for (h = this.methodInfo.exceptions, m = 0;m < h.length;m++) {
              l = h[m].target, this.propagateBlockState(null, l, 1, 0), Relooper.addBranch(g, l.relooperBlock, "pc === " + l.pc);
            }
          }
          Relooper.addBranch(g, c[0].relooperBlock);
          this.propagateBlockState(null, c[0], 0, 0);
          this.emitBlocks();
          if (0 < this.hasNext2Infos) {
            h = "var ";
            for (m = 0;m < this.hasNext2Infos;m++) {
              h += "hasNext" + m + " = new HasNext2Info()", h += m < this.hasNext2Infos - 1 ? ", " : ";";
            }
            this.bodyEmitter.writeLn(h);
          }
          b && (this.bodyEmitter.enter("while(1) {"), this.bodyEmitter.enter("try {"));
          h = Relooper.render(this.relooperEntryBlock);
          for (m = 0;m < c.length;m++) {
            g = c[m].bid, l = this.blockBodies[g], h = h.split("\"'\"'" + g + "\"'\"'").join(l);
          }
          this.bodyEmitter.writeLns(h);
          if (b) {
            this.bodyEmitter.leaveAndEnter("} catch (ex) {");
            h = this.methodInfo.exceptions;
            for (m = 0;m < h.length;m++) {
              b = h[m], c = "", b.typeName && (this.bodyEmitter.writeLn("var mn = mi.abc.constantPool.multinames[" + b.typeNameIndex + "];"), this.bodyEmitter.writeLn("var type = mi.abc.applicationDomain.getType(mn);"), c = " && type.isType(ex)"), this.bodyEmitter.writeLn("if (pc >= " + b.start_pc + " && pc <= " + b.end_pc + c + ") { pc = " + b.target_pc + "; continue; }");
            }
            this.bodyEmitter.leave("}");
            this.bodyEmitter.leave("}");
          }
          m = this.bodyEmitter.toString();
          a = performance.now() - a;
          I += a;
          p++;
          e && e.writeLn("Compiled: PASS: " + p + ", FAIL: " + C + ", TIME: " + a.toFixed(2) + ", RATIO: " + (p / r).toFixed(4) + " (" + I.toFixed(2) + " total)");
          k.BytecodePool.releaseList(f.bytecodes);
          Relooper.cleanup();
          return {body:m, parameters:this.parameters};
        };
        a.prototype.emitBlocks = function() {
          for (var b = this.blocks, a = 0;a < b.length;a++) {
            this.emitBlock(b[a]);
          }
        };
        a.prototype.setCurrentBlockState = function(b) {
          var a = this.blockStates[b.bid];
          f(a, "No state exists for " + b.bid);
          this.stack = a.stack;
          this.scopeIndex = a.scopeIndex;
        };
        a.prototype.propagateBlockState = function(b, a, e, c) {
          (b = this.blockStates[a.bid]) ? (f(b.stack === e, "Stack heights don't match, stack: " + e + ", was: " + b.stack), f(b.scopeIndex === c, "Scope index doesn't match, scopeIndex: " + c + ", was: " + b.scopeIndex)) : this.blockStates[a.bid] = {stack:e, scopeIndex:c};
        };
        a.prototype.getHandler = function(b) {
          if (!k.opcodeTable[b.op].canThrow) {
            return null;
          }
          b = b.pc;
          for (var a = this.methodInfo.exceptions, e = 0;e < a.length;e++) {
            var f = a[e];
            if (f.start_pc >= b && b <= f.end_pc) {
              return f;
            }
          }
          return null;
        };
        a.prototype.getStack = function(b) {
          return b >= a.stackNames.length ? "s" + (b - a.stackNames.length) : a.stackNames[b];
        };
        a.prototype.getLocalName = function(b) {
          return b >= a.localNames.length ? "l" + (b - a.localNames.length) : a.localNames[b];
        };
        a.prototype.getScope = function(b) {
          return "$" + b;
        };
        a.prototype.getLocal = function(b) {
          if (0 > b || b >= this.local.length) {
            throw Error("Out of bounds local read: " + b + " > " + (this.local.length - 1));
          }
          return this.local[b];
        };
        a.prototype.peek = function() {
          return this.getStack(this.stack - 1);
        };
        a.prototype.emitPopTemporaries = function(b) {
          for (var a = 0;a < b;a++) {
            this.blockEmitter.writeLn("var t" + a + " = " + this.pop() + ";");
          }
        };
        a.prototype.emitPushTemporary = function() {
          for (var b = [], a = 0;a < arguments.length;a++) {
            b[a - 0] = arguments[a];
          }
          for (a = 0;a < b.length;a++) {
            this.emitPush("t" + b[a]);
          }
        };
        a.prototype.pop = function() {
          this.stack--;
          return this.getStack(this.stack);
        };
        a.prototype.emitBlock = function(b) {
          this.setCurrentBlockState(b);
          this.blockEmitter.reset();
          for (var a = this.bytecodes, e, f = b.position, c = b.end.position;f <= c;f++) {
            e = a[f], this.emitBytecode(b, e);
          }
          this.blockBodies[b.bid] = this.blockEmitter.toString();
          Relooper.setBlockCode(b.relooperBlock, "\"'\"'" + b.bid + "\"'\"'");
          (a = c + 1 < a.length ? a[c + 1] : null) && !e.isBlockEnd() && (Relooper.addBranch(b.relooperBlock, a.relooperBlock), this.propagateBlockState(b, a, this.stack, this.scopeIndex));
        };
        a.prototype.peekScope = function() {
          return this.getScope(this.scopeIndex);
        };
        a.prototype.emitBytecode = function(b, a) {
          this.getHandler(a) && this.blockEmitter.writeLn("pc = " + a.pc + ";");
          var e = a.op;
          switch(e) {
            case 98:
              this.emitLoadLocal(a.index);
              break;
            case 208:
            ;
            case 209:
            ;
            case 210:
            ;
            case 211:
              this.emitLoadLocal(e - 208);
              break;
            case 99:
              this.emitStoreLocal(a.index);
              break;
            case 212:
            ;
            case 213:
            ;
            case 214:
            ;
            case 215:
              this.emitStoreLocal(e - 212);
              break;
            case 104:
            ;
            case 97:
              this.emitSetProperty(a.index);
              break;
            case 5:
              this.emitSetSuper(a.index);
              break;
            case 102:
              this.emitGetProperty(a.index);
              break;
            case 4:
              this.emitGetSuper(a.index);
              break;
            case 106:
              this.emitDeleteProperty(a.index);
              break;
            case 94:
              this.emitFindProperty(a.index, !1);
              break;
            case 93:
              this.emitFindProperty(a.index, !0);
              break;
            case 70:
            ;
            case 79:
            ;
            case 76:
              this.emitCallProperty(a);
              break;
            case 69:
            ;
            case 78:
              this.emitCallSuper(a);
              break;
            case 65:
              this.emitCall(a);
              break;
            case 96:
              this.emitGetLex(a.index);
              break;
            case 89:
              this.emitGetDescendants(a.index);
              break;
            case 120:
              this.emitCheckFilter();
              break;
            case 28:
              this.emitPushScope(!0);
              break;
            case 48:
              this.emitPushScope(!1);
              break;
            case 29:
              this.popScope();
              break;
            case 100:
              this.emitGetGlobalScope();
              break;
            case 101:
              this.emitGetScopeObject();
              break;
            case 108:
              this.emitGetSlot(a.index);
              break;
            case 109:
              this.emitSetSlot(a.index);
              break;
            case 87:
              this.emitPush("Object.create(mi.activationPrototype)");
              break;
            case 85:
              this.emitNewObject(a);
              break;
            case 86:
              this.emitNewArray(a);
              break;
            case 88:
              this.emitNewClass(a);
              break;
            case 64:
              this.emitNewFunction(a);
              break;
            case 90:
              this.emitNewCatch(a);
              break;
            case 66:
              this.emitConstruct(a);
              break;
            case 74:
              this.emitConstructProperty(a);
              break;
            case 3:
              this.emitThrow();
              break;
            case 50:
              this.emitHasNext2(a);
              break;
            case 30:
              this.emitNextName();
              break;
            case 35:
              this.emitNextValue();
              break;
            case 16:
              this.emitJump(b, a);
              break;
            case 12:
              this.emitBinaryIf(b, a, "<", !0);
              break;
            case 15:
              this.emitBinaryIf(b, a, ">=", !0);
              break;
            case 14:
              this.emitBinaryIf(b, a, ">", !0);
              break;
            case 13:
              this.emitBinaryIf(b, a, "<=", !0);
              break;
            case 24:
              this.emitBinaryIf(b, a, ">=", !1);
              break;
            case 23:
              this.emitBinaryIf(b, a, ">", !1);
              break;
            case 22:
              this.emitBinaryIf(b, a, "<=", !1);
              break;
            case 21:
              this.emitBinaryIf(b, a, "<", !1);
              break;
            case 19:
              this.emitIfEq(b, a, !1);
              break;
            case 20:
              this.emitIfEq(b, a, !0);
              break;
            case 25:
              this.emitBinaryIf(b, a, "===", !1);
              break;
            case 26:
              this.emitBinaryIf(b, a, "!==", !1);
              break;
            case 17:
              this.emitUnaryIf(b, a, "!!");
              break;
            case 18:
              this.emitUnaryIf(b, a, "!");
              break;
            case 27:
              this.emitLookupSwitch(b, a);
              break;
            case 44:
              this.emitPushString(a);
              break;
            case 47:
              this.emitPushDouble(a);
              break;
            case 45:
              this.emitPush(this.constantPool.ints[a.index]);
              break;
            case 46:
              this.emitPush(this.constantPool.uints[a.index]);
              break;
            case 36:
            ;
            case 37:
              this.emitPush(a.value);
              break;
            case 32:
              this.emitPush(null);
              break;
            case 33:
              this.emitPush(void 0);
              break;
            case 38:
              this.emitPush(!0);
              break;
            case 39:
              this.emitPush(!1);
              break;
            case 40:
              this.emitPush("NaN");
              break;
            case 41:
              0 < this.stack && this.stack--;
              break;
            case 8:
              0 < a.index && this.emitReplaceLocal(a.index, "undefined");
              break;
            case 73:
              this.emitConstructSuper(a);
              break;
            case 145:
              this.emitLine(this.peek() + "++;");
              break;
            case 192:
              this.emitReplace("(" + this.peek() + "|0) + 1");
              break;
            case 147:
              this.emitLine(this.peek() + "--;");
              break;
            case 193:
              this.emitReplace("(" + this.peek() + "|0) - 1");
              break;
            case 146:
              this.emitLine(this.getLocal(a.index) + "++;");
              break;
            case 194:
              this.emitReplaceLocal(a.index, "(" + this.getLocal(a.index) + "|0) + 1");
              break;
            case 148:
              this.emitLine(this.getLocal(a.index) + "--;");
              break;
            case 195:
              this.emitReplaceLocal(a.index, "(" + this.getLocal(a.index) + "|0) - 1");
              break;
            case 150:
              this.emitUnaryOp("!");
              break;
            case 151:
              this.emitUnaryOp("~");
              break;
            case 144:
              this.emitUnaryOp("-");
              break;
            case 196:
              this.emitUnaryOp_i();
              break;
            case 122:
              this.emitUnaryOp("+");
              break;
            case 171:
              this.emitEquals();
              break;
            case 160:
              this.emitAddExpression();
              break;
            case 197:
              this.emitBinaryExpression_i(" + ");
              break;
            case 161:
              this.emitBinaryExpression(" - ");
              break;
            case 198:
              this.emitBinaryExpression_i(" - ");
              break;
            case 162:
              this.emitBinaryExpression(" * ");
              break;
            case 199:
              this.emitBinaryExpression_i(" * ");
              break;
            case 163:
              this.emitBinaryExpression(" / ");
              break;
            case 164:
              this.emitBinaryExpression(" % ");
              break;
            case 165:
              this.emitBinaryExpression(" << ");
              break;
            case 166:
              this.emitBinaryExpression(" >> ");
              break;
            case 167:
              this.emitBinaryExpression(" >>> ");
              break;
            case 168:
              this.emitBinaryExpression(" & ");
              break;
            case 169:
              this.emitBinaryExpression(" | ");
              break;
            case 170:
              this.emitBinaryExpression(" ^ ");
              break;
            case 172:
              this.emitBinaryExpression(" === ");
              break;
            case 174:
              this.emitBinaryExpression(" <= ");
              break;
            case 173:
              this.emitBinaryExpression(" < ");
              break;
            case 176:
              this.emitBinaryExpression(" >= ");
              break;
            case 175:
              this.emitBinaryExpression(" > ");
              break;
            case 128:
              this.emitCoerce(a);
              break;
            case 130:
              break;
            case 131:
            ;
            case 115:
              this.emitCoerceInt();
              break;
            case 136:
            ;
            case 116:
              this.emitCoerceUint();
              break;
            case 132:
            ;
            case 117:
              this.emitCoerceNumber();
              break;
            case 129:
            ;
            case 118:
              this.emitCoerceBoolean();
              break;
            case 137:
            ;
            case 119:
              this.emitCoerceObject(a);
              break;
            case 133:
            ;
            case 112:
              this.emitCoerceString(a);
              break;
            case 177:
              this.emitInstanceof();
              break;
            case 178:
              this.emitIsType(a.index);
              break;
            case 179:
              this.emitIsTypeLate();
              break;
            case 135:
              this.emitAsTypeLate();
              break;
            case 83:
              this.emitApplyType(a);
              break;
            case 180:
              this.emitIn();
              break;
            case 149:
              this.emitReplace("asTypeOf(" + this.peek() + ")");
              break;
            case 42:
              this.emitDup();
              break;
            case 43:
              this.emitSwap();
              break;
            case 71:
              this.emitReturnVoid();
              break;
            case 72:
              this.emitReturnValue();
              break;
            case 239:
            ;
            case 241:
            ;
            case 240:
              break;
            default:
              throw "Not Implemented: " + k.OP[e];;
          }
        };
        a.prototype.emitLoadLocal = function(b) {
          this.emitPush(this.getLocal(b));
        };
        a.prototype.emitStoreLocal = function(b) {
          this.blockEmitter.writeLn(this.getLocal(b) + " = " + this.pop() + ";");
        };
        a.prototype.emitReplaceLocal = function(b, a) {
          this.blockEmitter.writeLn(this.getLocal(b) + " = " + a + ";");
        };
        a.prototype.emitSetProperty = function(b) {
          var a = this.pop();
          b = this.emitMultiname(b);
          this.blockEmitter.writeLn(this.pop() + ".asSetProperty(" + b + ", " + a + ");");
        };
        a.prototype.emitSetSuper = function(b) {
          var a = this.pop(), e = this.constantPool.multinames[b];
          e.isSimpleStatic() ? (b = h.qualifyName(e.namespaces[0], e.name), "s" + b in this.methodInfo.classScope.object.baseClass.traitsPrototype ? this.emitLine("mi.classScope.object.baseClass.traitsPrototype.s" + b + ".call(" + this.pop() + ", " + a + ");") : this.emitLine(this.pop() + "." + b + " = " + a + ";")) : (b = this.emitMultiname(b), this.emitLine(this.pop() + ".asSetSuper(mi.classScope, " + b + ", " + a + ");"));
        };
        a.prototype.emitGetProperty = function(b) {
          b = this.emitMultiname(b);
          this.emitReplace(this.peek() + ".asGetProperty(" + b + ", false)");
        };
        a.prototype.emitGetSuper = function(b) {
          var a = this.constantPool.multinames[b];
          a.isSimpleStatic() ? (b = h.qualifyName(a.namespaces[0], a.name), "g" + b in this.methodInfo.classScope.object.baseClass.traitsPrototype ? this.emitReplace("mi.classScope.object.baseClass.traitsPrototype.g" + b + ".call(this)") : this.emitReplace(this.peek() + "." + b)) : (b = this.emitMultiname(b), a = this.peek(), this.emitReplace(a + ".asGetSuper(mi.classScope, " + b + ")"));
        };
        a.prototype.emitDeleteProperty = function(b) {
          b = this.emitMultiname(b);
          this.emitReplace(this.peek() + ".asDeleteProperty(" + b + ", false)");
        };
        a.prototype.emitFindProperty = function(b, a) {
          var e = this.getScope(this.scopeIndex), f = this.emitMultiname(b);
          this.emitPush(e + ".findScopeProperty(" + f + ", mi, " + a + ")");
          return f;
        };
        a.prototype.emitCallProperty = function(b) {
          var a = this.popArgs(b.argCount), e = 76 === b.op, a = ".asCallProperty(" + this.emitMultiname(b.index) + ", " + e + ", [" + a + "])";
          79 !== b.op ? this.emitReplace(this.peek() + a) : this.blockEmitter.writeLn(this.pop() + a + ";");
        };
        a.prototype.emitCallSuper = function(b) {
          var a = this.popArgs(b.argCount), e = this.constantPool.multinames[b.index];
          e.isSimpleStatic() && (f = "mi.classScope.object.baseClass.traitsPrototype.m" + h.qualifyName(e.namespaces[0], e.name) + ".call(" + this.peek() + (a.length ? ", " + a : "") + ")");
          if (!f) {
            var e = this.emitMultiname(b.index), f = this.peek() + ".asCallSuper(mi.classScope, " + e + ", [" + a + "])"
          }
          78 !== b.op ? this.emitReplace(f) : (this.stack--, this.blockEmitter.writeLn(f + ";"));
        };
        a.prototype.emitCall = function(b) {
          b = this.popArgs(b.argCount);
          b = b.length ? ", " + b.join(", ") : "";
          var a = this.pop(), e = this.peek();
          this.emitReplace(e + ".asCall(" + a + b + ")");
        };
        a.prototype.emitConstruct = function(b) {
          b = this.popArgs(b.argCount);
          var a = this.peek();
          this.emitReplace("new " + a + ".instanceConstructor(" + b + ")");
        };
        a.prototype.emitConstructProperty = function(b) {
          var a = this.popArgs(b.argCount);
          this.emitGetProperty(b.index);
          b = this.peek();
          this.blockEmitter.writeLn(b + " = new " + b + ".instanceConstructor(" + a + ");");
        };
        a.prototype.emitGetLex = function(b) {
          var a = this.emitFindProperty(b, !0);
          b = this.constantPool.multinames[b];
          b.isSimpleStatic() ? (a = h.qualifyName(b.namespaces[0], b.name), this.emitReplace(this.peek() + "." + a)) : this.emitReplace(this.peek() + ".asGetProperty(" + a + ", false)");
        };
        a.prototype.emitGetDescendants = function(b) {
          b = this.constantPool.multinames[b];
          b = b.isRuntime() ? this.pop() : b.name;
          this.emitReplace(this.peek() + ".descendants('" + b + "')");
        };
        a.prototype.emitCheckFilter = function() {
          this.emitReplace("checkFilter(" + this.peek() + ")");
        };
        a.prototype.emitMultiname = function(b) {
          var a = this.constantPool.multinames[b];
          this.blockEmitter.writeLn("var mn = mi.abc.constantPool.multinames[" + b + "]; // ");
          b = a.isRuntimeName() ? this.pop() : '"' + (a.name || "*") + '"';
          return (a.isRuntimeNamespace() ? "[" + this.pop() + "]" : "mn.namespaces") + ", " + b + ", " + a.flags;
        };
        a.prototype.emitBinaryIf = function(b, a, e, f) {
          var c = this.pop();
          e = this.pop() + " " + e + " " + c;
          f && (e = "!(" + e + ")");
          this.emitIf(b, a, e);
        };
        a.prototype.emitIfEq = function(b, a, e) {
          var f = this.pop(), f = "asEquals(" + this.pop() + ", " + f + ")";
          e && (f = "!" + f);
          this.emitIf(b, a, f);
        };
        a.prototype.emitUnaryIf = function(b, a, e) {
          var f = this.pop();
          this.emitIf(b, a, e + f);
        };
        a.prototype.emitIf = function(b, a, e) {
          var f = this.bytecodes[a.position + 1];
          a = a.target;
          Relooper.addBranch(b.relooperBlock, f.relooperBlock);
          this.propagateBlockState(b, f, this.stack, this.scopeIndex);
          f !== a && (Relooper.addBranch(b.relooperBlock, a.relooperBlock, e), this.propagateBlockState(b, a, this.stack, this.scopeIndex));
        };
        a.prototype.emitJump = function(b, a) {
          Relooper.addBranch(b.relooperBlock, a.target.relooperBlock);
          this.propagateBlockState(b, a.target, this.stack, this.scopeIndex);
        };
        a.prototype.emitHasNext2 = function(b) {
          var a = "hasNext" + this.hasNext2Infos++, e = this.local[b.object];
          b = this.local[b.index];
          this.emitLine(a + ".object = " + e + ";");
          this.emitLine(a + ".index = " + b + ";");
          this.emitLine("Object(" + e + ").asHasNext2(" + a + ");");
          this.emitLine(e + " = " + a + ".object;");
          this.emitPush(b + " = " + a + ".index");
        };
        a.prototype.emitNextName = function() {
          var b = this.pop();
          this.emitReplace(this.peek() + ".asNextName(" + b + ")");
        };
        a.prototype.emitNextValue = function() {
          var b = this.pop();
          this.emitReplace(this.peek() + ".asNextValue(" + b + ")");
        };
        a.prototype.emitThrow = function() {
          this.emitLine("throw " + this.pop() + ";");
        };
        a.prototype.emitLookupSwitch = function(b, a) {
          var e = this.pop(), e = Relooper.addBlock("// Lookup Switch", String(e));
          Relooper.addBranch(b.relooperBlock, e);
          var f = a.targets[a.targets.length - 1], c = f.relooperBlock;
          this.propagateBlockState(b, f, this.stack, this.scopeIndex);
          for (f = 0;f < a.targets.length - 1;f++) {
            var h = a.targets[f], g = h.relooperBlock, p = Relooper.addBlock();
            Relooper.addBranch(e, p, "case " + f + ":");
            Relooper.addBranch(p, g);
            this.propagateBlockState(b, h, this.stack, this.scopeIndex);
          }
          Relooper.addBranch(e, c);
        };
        a.prototype.emitPush = function(b) {
          this.blockEmitter.writeLn(this.getStack(this.stack) + " = " + b + ";");
          this.stack++;
        };
        a.prototype.emitReplace = function(b) {
          this.blockEmitter.writeLn(this.getStack(this.stack - 1) + " = " + b + ";");
        };
        a.prototype.emitLine = function(b) {
          this.blockEmitter.writeLn(b);
        };
        a.prototype.emitPushDouble = function(b) {
          b = this.constantPool.doubles[b.index];
          this.emitPush(0 === b && 0 > 1 / b ? "-0" : b);
        };
        a.prototype.emitPushString = function(a) {
          this.pushedStrings[this.stack] = a.index;
          var e = this.constantPool.strings[a.index];
          40 < e.length || -1 < e.indexOf("\n") || -1 < e.indexOf("\r") || -1 < e.indexOf('"') ? this.emitPush("mi.abc.constantPool.strings[" + a.index + "]") : this.emitPush(b(e));
        };
        a.prototype.emitPushScope = function(b) {
          b = "new Scope(" + this.getScope(this.scopeIndex) + ", " + this.pop() + ", " + b + ")";
          this.scopeIndex++;
          this.blockEmitter.writeLn(this.getScope(this.scopeIndex) + " = " + b + ";");
        };
        a.prototype.popScope = function() {
          this.scopeIndex--;
        };
        a.prototype.emitGetGlobalScope = function() {
          this.emitPush(this.peekScope() + ".global.object");
        };
        a.prototype.emitGetScopeObject = function() {
          this.emitPush(this.peekScope() + ".object");
        };
        a.prototype.emitGetSlot = function(b) {
          this.emitReplace("asGetSlot(" + this.peek() + ", " + b + ")");
        };
        a.prototype.emitSetSlot = function(b) {
          var a = this.pop(), e = this.pop();
          this.emitLine("asSetSlot(" + e + ", " + b + ", " + a + ")");
        };
        a.prototype.emitNewClass = function(b) {
          this.emitPush("createClass(mi.abc.classes[" + b.index + "], " + this.pop() + ", " + this.peekScope() + ")");
        };
        a.prototype.emitNewObject = function(a) {
          for (var e = [], f = 0;f < a.argCount;f++) {
            var c = this.pop();
            this.pop();
            var h = this.constantPool.strings[this.pushedStrings[this.stack]];
            e.push((d.isNumeric(h) ? h : b("$Bg" + h)) + ": " + c);
          }
          this.emitPush("{ " + e.join(", ") + " }");
        };
        a.prototype.emitNewArray = function(b) {
          for (var a = [], e = 0;e < b.argCount;e++) {
            a.push(this.pop());
          }
          this.emitPush("[" + a.reverse() + "]");
        };
        a.prototype.emitNewFunction = function(b) {
          this.emitPush("createFunction(mi.abc.methods[" + b.index + "], " + this.peekScope() + ", true)");
        };
        a.prototype.emitNewCatch = function(b) {
          this.emitPush("mi.exceptions[" + b.index + "].scopeObject");
        };
        a.prototype.emitConstructSuper = function(b) {
          var a = "mi.classScope.object.baseClass.instanceConstructorNoInitialize.call(";
          b = this.popArgs(b.argCount);
          a += this.pop();
          b.length && (a += ", " + b.join(", "));
          this.blockEmitter.writeLn(a + ");");
        };
        a.prototype.emitCoerce = function(b) {
          switch(this.constantPool.multinames[b.index]) {
            case h.Int:
              this.emitCoerceInt();
              return;
            case h.Uint:
              this.emitCoerceUint();
              return;
            case h.Number:
              this.emitCoerceNumber();
              return;
            case h.Boolean:
              this.emitCoerceBoolean();
              return;
            case h.Object:
              this.emitCoerceObject(b);
              return;
            case h.String:
              this.emitCoerceString(b);
              return;
          }
          b.ti && b.ti.noCoercionNeeded || (b = "asCoerce(mi.abc.applicationDomain.getType(mi.abc.constantPool.multinames[" + b.index + "]), " + this.pop() + ")", this.emitPush(b));
        };
        a.prototype.emitCoerceInt = function() {
          var b = this.peek();
          this.blockEmitter.writeLn(b + " |= 0;");
        };
        a.prototype.emitCoerceUint = function() {
          var b = this.peek();
          this.blockEmitter.writeLn(b + " >>>= 0;");
        };
        a.prototype.emitCoerceNumber = function() {
          var b = this.peek();
          this.blockEmitter.writeLn(b + "= +" + b);
        };
        a.prototype.emitCoerceBoolean = function() {
          var b = this.peek();
          this.blockEmitter.writeLn(b + " = !!" + b + ";");
        };
        a.prototype.emitCoerceObject = function(b) {
          b.ti && b.ti.noCoercionNeeded || (b = this.peek(), this.blockEmitter.writeLn(b + " = asCoerceObject(" + b + ");"));
        };
        a.prototype.emitCoerceString = function(b) {
          b.ti && b.ti.noCoercionNeeded || (b = this.peek(), this.blockEmitter.writeLn(b + " = asCoerceString(" + b + ");"));
        };
        a.prototype.emitInstanceof = function() {
          var b = this.pop();
          this.emitReplace(b + ".isInstanceOf(" + this.peek() + ")");
        };
        a.prototype.emitIsType = function(b) {
          this.emitLine("var mn = mi.abc.constantPool.multinames[" + b + "];");
          this.emitReplace("mi.abc.applicationDomain.getType(mn).isType(" + this.peek() + ")");
        };
        a.prototype.emitIsTypeLate = function() {
          var b = this.pop();
          this.emitReplace("asIsType(" + b + ", " + this.peek() + ")");
        };
        a.prototype.emitAsTypeLate = function() {
          var b = this.pop();
          this.emitReplace("asAsType(" + b + ", " + this.peek() + ")");
        };
        a.prototype.emitApplyType = function(b) {
          b = this.popArgs(b.argCount);
          var a = this.peek();
          this.emitReplace("applyType(mi, " + a + ", [" + b + "])");
        };
        a.prototype.emitIn = function() {
          var b = this.pop();
          this.emitReplace(b + ".asHasProperty(null, " + this.peek() + ")");
        };
        a.prototype.emitDup = function() {
          this.emitPush(this.peek());
        };
        a.prototype.emitSwap = function() {
          var b = this.getStack(this.stack - 1), a = this.getStack(this.stack - 2);
          this.blockEmitter.writeLn("var $t = " + b + ";");
          this.blockEmitter.writeLn(b + " = " + a + ";");
          this.blockEmitter.writeLn(a + " = $t;");
        };
        a.prototype.emitEquals = function() {
          var b = this.pop();
          this.emitReplace("asEquals(" + this.peek() + ", " + b + ")");
        };
        a.prototype.emitUnaryOp = function(b) {
          this.emitReplace(b + this.peek());
        };
        a.prototype.emitUnaryOp_i = function() {
          this.emitReplace("-" + this.peek() + "|0");
        };
        a.prototype.emitAddExpression = function() {
          var b = this.pop(), a = this.peek();
          this.blockEmitter.writeLn(a + " = asAdd(" + a + ", " + b + ");");
        };
        a.prototype.emitBinaryExpression = function(b) {
          var a = this.pop(), e = this.peek();
          this.blockEmitter.writeLn(e + " = " + e + b + a + ";");
        };
        a.prototype.emitBinaryExpression_i = function(b) {
          var a = this.pop(), e = this.peek();
          this.blockEmitter.writeLn(e + " = " + e + "|0" + b + a + "|0;");
        };
        a.prototype.emitReturnVoid = function() {
          this.blockEmitter.writeLn("return;");
        };
        a.prototype.emitReturnValue = function() {
          var b = this.pop();
          this.blockEmitter.writeLn("return " + w(b, this.methodInfo.returnType) + ";");
        };
        a.prototype.popArgs = function(b) {
          for (var a = [], e = this.stack, f = b = e - b;f < e;f++) {
            a.push(this.getStack(f));
          }
          this.stack = b;
          return a;
        };
        a.localNames = "this a b c d e f g h i j k l m n o p q r s t u v w x y z".split(" ");
        a.stackNames = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
        return a;
      }();
      a.baselineCompileMethod = v;
      var M = [];
      a.baselineCompileABCs = function(b, a) {
        e && e.writeLn("Compiling LIBs: " + b);
        e && e.writeLn("Compiling ABCs: " + a);
        M.push.apply(M, b);
        M.push.apply(M, a);
        for (var f = 0;f < a.length;f++) {
          var h = a[f];
          e && e.writeLn("Compiling ABC: " + h);
          for (var p = new B(!0), m = 0;m < h.scripts.length;m++) {
            var r = p, d = h.scripts[m];
            d.abc.hash;
            r.writeLn("// Script: " + d.name);
            g(r, u(d), d.traits);
            r.enter("function " + u(d) + "() {");
            c(r, d.traits);
            r.leave("}");
          }
          for (m = 0;m < h.classes.length;m++) {
            q(p, h.classes[m]);
          }
        }
      };
    })(k.Compiler || (k.Compiler = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      function n(c) {
        k.enterTimeline("executeScript", {name:c.name});
        new a.Global(c);
        c.executing = !0;
        var f = new a.Scope(null, c.global);
        a.createFunction(c.init, f, !1, !1).call(c.global, !1);
        c.executed = !0;
        k.leaveTimeline();
      }
      function w(a, f) {
        a.executed || a.executing || n(a);
      }
      function v(c) {
        if (!a.playerglobal) {
          return null;
        }
        for (var f = 0;f < c.namespaces.length;f++) {
          var b = a.playerglobal.map[c.namespaces[f].uri + ":" + c.name];
          if (b) {
            break;
          }
        }
        return b ? (c = b, c = (f = a.playerglobal.scripts[c]) ? new u(new Uint8Array(a.playerglobal.abcs, f.offset, f.length), c) : null, c) : null;
      }
      var u = d.AVM2.ABC.AbcFile, l = d.AVM2.ABC.Multiname, c = d.Callback, g = d.IndentingWriter;
      a.executeScript = n;
      a.ensureScriptIsExecuted = w;
      (function(a) {
        a[a.PUBLIC_PROPERTIES = 1] = "PUBLIC_PROPERTIES";
        a[a.PUBLIC_METHODS = 2] = "PUBLIC_METHODS";
        a[a.ALL = 3] = "ALL";
      })(a.Glue || (a.Glue = {}));
      a.playerglobalLoadedPromise;
      a.playerglobal;
      var q;
      (function(a) {
        a[a.SpiderMonkey = 0] = "SpiderMonkey";
        a[a.V8 = 1] = "V8";
      })(q || (q = {}));
      var t = function() {
        function c(a, b) {
          this.systemDomain = new m(this, null, a, !0);
          this.applicationDomain = new m(this, this.systemDomain, b, !1);
          this.findDefiningAbc = v;
          this.exception = {value:void 0};
          this.exceptions = [];
          this.globals = Object.create(null);
        }
        c.initialize = function(a, b) {
          c.instance = new c(a, b);
        };
        c.currentAbc = function() {
          for (var a = Error().stack.split("\n"), b = 0 === a[1].indexOf("    at ") ? 1 : 0, e = 0;e < a.length;e++) {
            var c = a[e];
            if ((c = (c = 0 === b ? c.substr(0, c.indexOf("@")) : c.substr(7, c.indexOf(" ", 8))) && jsGlobal[c]) && c.methodInfo) {
              return c.methodInfo.abc;
            }
          }
          return null;
        };
        c.currentDomain = function() {
          var a = c.currentAbc();
          return null === a ? c.instance.systemDomain : a.applicationDomain;
        };
        c.isPlayerglobalLoaded = function() {
          return !!a.playerglobal;
        };
        c.loadPlayerglobal = function() {
          return a.playerglobalLoadedPromise ? Promise.reject("Playerglobal is already loaded") : Promise.all([d.SystemResourcesLoadingService.instance.load(1), d.SystemResourcesLoadingService.instance.load(2)]).then(function(f) {
            a.playerglobal = {abcs:f[0], map:Object.create(null), scripts:Object.create(null)};
            f = f[1];
            for (var b = 0;b < f.length;b++) {
              var e = f[b];
              a.playerglobal.scripts[e.name] = e;
              if ("string" === typeof e.defs) {
                a.playerglobal.map[e.defs] = e.name;
              } else {
                for (var c = 0;c < e.defs.length;c++) {
                  a.playerglobal.map[e.defs[c]] = e.name;
                }
              }
            }
          });
        };
        return c;
      }();
      a.AVM2 = t;
      var m = function() {
        function h(a, b, e, h) {
          this.vm = a;
          this.abcs = [];
          this.loadedAbcs = {};
          this.loadedClasses = [];
          this.classCache = Object.create(null);
          this.scriptCache = Object.create(null);
          this.classInfoCache = Object.create(null);
          this.base = b;
          this.allowNatives = h;
          this.mode = e;
          this.onMessage = new c;
          this.system = b ? b.system : this;
        }
        h.passthroughCallable = function(a) {
          return {call:function(b) {
            Array.prototype.shift.call(arguments);
            return a.asApply(b, arguments);
          }, apply:function(b, e) {
            return a.asApply(b, e);
          }};
        };
        h.coerceCallable = function(f) {
          return {call:function(b, e) {
            return a.asCoerce(f, e);
          }, apply:function(b, e) {
            return a.asCoerce(f, e[0]);
          }};
        };
        h.prototype.getType = function(a) {
          return this.getProperty(a, !0, !0);
        };
        h.prototype.getProperty = function(a, b, e) {
          if (e = this.findDefiningScript(a, e)) {
            return e.script.executing ? e.script.global[l.getQualifiedName(e.trait.name)] : void 0;
          }
          if (b) {
            return d.Debug.unexpected("Cannot find property " + a);
          }
        };
        h.prototype.getClass = function(a, b) {
          void 0 === b && (b = !0);
          var e = this.classCache, c = e[a];
          c || (c = e[a] = this.getProperty(l.fromSimpleName(a), b, !0));
          return c;
        };
        h.prototype.findDomainProperty = function(a, b, e) {
          if (e = this.findDefiningScript(a, e)) {
            return e.script.global;
          }
          if (b) {
            return d.Debug.unexpected("Cannot find property " + a);
          }
        };
        h.prototype.findClassInfo = function(a) {
          var b;
          if (l.isQName(a)) {
            b = l.getQualifiedName(a);
            var e = this.classInfoCache[b];
          } else {
            e = this.classInfoCache[a.runtimeId];
          }
          return e || this.base && (e = this.base.findClassInfo(a)) ? e : this.findClassInfoSlow(a, b);
        };
        h.prototype.findClassInfoSlow = function(a, b) {
          for (var e = this.abcs, c = 0;c < e.length;c++) {
            for (var h = e[c], h = h.scripts, g = 0;g < h.length;g++) {
              for (var m = h[g].traits, d = 0;d < m.length;d++) {
                var q = m[d];
                if (q.isClass()) {
                  var t = l.getQualifiedName(q.name);
                  if (b) {
                    if (t === b) {
                      return this.classInfoCache[b] = q.classInfo;
                    }
                  } else {
                    for (var n = 0, k = a.namespaces.length;n < k;n++) {
                      var v = a.getQName(n);
                      if (t === l.getQualifiedName(v)) {
                        return this.classInfoCache[v] = q.classInfo;
                      }
                    }
                  }
                }
              }
            }
          }
          if (!this.base && this.vm.findDefiningAbc && (h = this.vm.findDefiningAbc(a), null !== h && !this.loadedAbcs[h.name])) {
            return this.loadedAbcs[h.name] = !0, this.loadAbc(h), this.findClassInfo(a);
          }
        };
        h.prototype.findDefiningScript = function(a, b) {
          var e = this.scriptCache[a.runtimeId];
          return e && (e.script.executed || !b) || this.base && (e = this.base.findDefiningScript(a, b)) ? e : this.findDefiningScriptSlow(a, b);
        };
        h.prototype.findDefiningScriptSlow = function(a, b) {
          k.countTimeline("ApplicationDomain: findDefiningScriptSlow");
          for (var e = this.abcs, c = 0;c < e.length;c++) {
            for (var h = e[c], h = h.scripts, g = 0;g < h.length;g++) {
              var m = h[g], d = m.traits;
              if (a instanceof l) {
                for (var q = 0;q < d.length;q++) {
                  var t = d[q];
                  if (a.hasQName(t.name)) {
                    return b && w(m, ""), this.scriptCache[a.runtimeId] = {script:m, trait:t};
                  }
                }
              }
            }
          }
          if (!this.base && this.vm.findDefiningAbc && (h = this.vm.findDefiningAbc(a), null !== h && !this.loadedAbcs[h.name])) {
            return this.loadedAbcs[h.name] = !0, this.loadAbc(h), this.findDefiningScript(a, b);
          }
        };
        h.prototype.compileAbc = function(a, b) {
          d.AVM2.Compiler.compileAbc(a, b);
        };
        h.prototype.executeAbc = function(a) {
          this.loadAbc(a);
          n(a.lastScript);
        };
        h.prototype.loadAbc = function(f) {
          d.AVM2.Runtime.traceExecution.value && console.log("Loading: " + f.name);
          f.applicationDomain = this;
          a.GlobalMultinameResolver.loadAbc(f);
          this.abcs.push(f);
          this.base || (k.AS.initialize(this), d.AVM2.Verifier.Type.initializeTypes(this));
        };
        h.prototype.broadcastMessage = function(a, b, e) {
          try {
            this.onMessage.notify1(a, {data:b, origin:e, source:this});
          } catch (c) {
            throw t.instance.exceptions.push({source:a, message:c.message, stack:c.stack}), c;
          }
        };
        h.prototype.traceLoadedClasses = function() {
          var a = new g;
          [d.ArrayUtilities.last(this.loadedClasses)].forEach(function(b) {
            b !== d.AVM2.AS.ASClass && b.trace(a);
          });
        };
        return h;
      }();
      a.ApplicationDomain = m;
      q = function() {
        function a(f) {
          this.compartment = newGlobal("new-compartment");
          this.compartment.homePath = homePath;
          this.compartment.release = !0;
          this.compartment.eval(snarf(f));
        }
        a.prototype.initializeShell = function(a, b) {
          var e = this.compartment;
          e.AVM2.initialize(a, b);
          e.AVM2.instance.systemDomain.executeAbc(e.grabAbc(homePath + "build/libs/builtin.abc"));
          e.AVM2.instance.systemDomain.executeAbc(e.grabAbc(homePath + "build/libs/shell.abc"));
          this.systemDomain = e.AVM2.instance.systemDomain;
          this.applicationDomain = e.AVM2.instance.applicationDomain;
        };
        return a;
      }();
      a.SecurityDomain = q;
    })(k.Runtime || (k.Runtime = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
var Glue = Shumway.AVM2.Runtime.Glue, ApplicationDomain = Shumway.AVM2.Runtime.ApplicationDomain, AVM2 = Shumway.AVM2.Runtime.AVM2, EXECUTION_MODE = Shumway.AVM2.Runtime.ExecutionMode;
(function(d) {
  (function(k) {
    (function(a) {
      function n(a) {
        return a.holder instanceof v ? "static " + a.holder.instanceInfo.name.getOriginalName() + "::" + a.name.getOriginalName() : a.holder instanceof u ? a.holder.name.getOriginalName() + "::" + a.name.getOriginalName() : a.name.getOriginalName();
      }
      var w = d.AVM2.ABC.Multiname, v = d.AVM2.ABC.ClassInfo, u = d.AVM2.ABC.InstanceInfo, l = d.ObjectUtilities.defineReadOnlyProperty, c = d.FunctionUtilities.bindSafely;
      a.getMethodOverrideKey = n;
      a.checkMethodOverrides = function(c) {
        if (c.name && (c = n(c), c in a.VM_METHOD_OVERRIDES)) {
          return a.VM_METHOD_OVERRIDES[c];
        }
      };
      a.checkCommonMethodPatterns = function(a) {
        var c = a.code;
        return c && 208 === c[0] && 48 === c[1] ? 71 === c[2] || a.holder instanceof u && 208 === c[2] && 73 === c[3] && 0 === c[4] && 71 === c[5] && w.getQualifiedName(a.holder.superName) === w.Object ? function() {
        } : null : null;
      };
      a.makeTrampoline = function(c, d, t, m, h, f) {
        function b() {
          e || b.trigger();
          return e.apply(this, arguments);
        }
        var e = null;
        b.trigger = function() {
          e = a.createFunction(c.methodInfo, d, !1, !1, !1);
          a.patch(m, e);
          c = d = m = null;
        };
        b.isTrampoline = !0;
        b.patchTargets = m;
        l(b, a.VM_LENGTH, h);
        return b;
      };
      a.makeMemoizer = function(g, q) {
        function t() {
          q.value.isTrampoline && q.value.trigger();
          var m = c(q.value, this);
          d.ObjectUtilities.defineReadOnlyProperty(m, "asLength", q.value.length);
          if (a.isNativePrototype(this)) {
            return k.countTimeline("Runtime: Method Closures"), m;
          }
          m.methodInfo = q.value.methodInfo;
          l(m, w.getPublicQualifiedName("prototype"), null);
          l(this, g, m);
          return m;
        }
        k.countTimeline("Runtime: Memoizers");
        t.isMemoizer = !0;
        return t;
      };
    })(k.Runtime || (k.Runtime = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    function a(b, a, e) {
      e.flags = a.flags;
      e.name = a.isRuntimeName() ? b.pop() : a.name;
      e.namespaces = a.isRuntimeNamespace() ? [b.pop()] : a.namespaces;
    }
    var n = d.AVM2.Runtime.Scope, w = d.AVM2.Runtime.asCoerceByMultiname, v = d.AVM2.Runtime.asGetSlot, u = d.AVM2.Runtime.asSetSlot, l = d.AVM2.Runtime.asCoerce, c = d.AVM2.Runtime.asCoerceString, g = d.AVM2.Runtime.asAsType, q = d.AVM2.Runtime.asTypeOf, t = d.AVM2.Runtime.asIsInstanceOf, m = d.AVM2.Runtime.asIsType, h = d.AVM2.Runtime.applyType, f = d.AVM2.Runtime.createFunction, b = d.AVM2.Runtime.createClass, e = d.AVM2.Runtime.checkFilter, r = d.AVM2.Runtime.asAdd, p = d.AVM2.Runtime.translateError, 
    C = d.AVM2.Runtime.asCreateActivation, I = d.AVM2.Runtime.sliceArguments, B = d.ObjectUtilities.boxValue, D = d.ArrayUtilities.popManyInto, M = d.AVM2.Runtime.construct, E = d.AVM2.ABC.Multiname, J = d.AVM2.Runtime.HasNext2Info, P = function() {
      function b(a) {
        this.parent = a;
        this.stack = [];
        this.isWith = [];
      }
      b.prototype.push = function(b, a) {
        this.stack.push(b);
        this.isWith.push(!!a);
      };
      b.prototype.get = function(b) {
        return this.stack[b];
      };
      b.prototype.clear = function() {
        this.stack.length = 0;
        this.isWith.length = 0;
      };
      b.prototype.pop = function() {
        this.isWith.pop();
        this.stack.pop();
      };
      b.prototype.topScope = function() {
        this.scopes || (this.scopes = []);
        for (var b = this.parent, a = 0;a < this.stack.length;a++) {
          var e = this.stack[a], c = this.isWith[a], f = this.scopes[a];
          f && f.parent === b && f.object === e && f.isWith === c || (f = this.scopes[a] = new n(b, e, c));
          b = f;
        }
        return b;
      };
      return b;
    }(), y = function() {
      function n() {
      }
      n.interpretMethod = function(n, y, K, G) {
        k.countTimeline("Interpret Method");
        var L = y.abc, F = L.constantPool.ints, S = L.constantPool.uints, U = L.constantPool.doubles, N = L.constantPool.strings, R = L.methods, T = L.constantPool.multinames, X = L.applicationDomain, da = y.exceptions;
        n = [n];
        for (var x = [], Y = new P(K), V = y.parameters.length, ba = G.length, Z, O = 0;O < V;O++) {
          var aa = y.parameters[O];
          Z = O < ba ? G[O] : aa.value;
          aa.type && !aa.type.isAnyName() && (Z = w(y, aa.type, Z));
          n.push(Z);
        }
        y.needsRest() ? n.push(I(G, V)) : y.needsArguments() && n.push(I(G, 0, G.asGetPublicProperty("callee")));
        G = y.analysis.bytecodes;
        var ea, ia, ja, ga, ca, fa, V = [], ba = E.TEMPORARY, aa = [], Q = 0, ma = G.length;
        a: for (;Q < ma;) {
          try {
            var W = G[Q], la = W.op;
            switch(la | 0) {
              case 3:
                throw x.pop();;
              case 4:
                a(x, T[W.index], ba);
                x.push(x.pop().asGetSuper(K, ba.namespaces, ba.name, ba.flags));
                break;
              case 5:
                Z = x.pop();
                a(x, T[W.index], ba);
                x.pop().asSetSuper(K, ba.namespaces, ba.name, ba.flags, Z);
                break;
              case 8:
                n[W.index] = void 0;
                break;
              case 12:
                fa = x.pop();
                ca = x.pop();
                Q = ca < fa ? Q + 1 : W.offset;
                continue;
              case 24:
                fa = x.pop();
                ca = x.pop();
                Q = ca >= fa ? W.offset : Q + 1;
                continue;
              case 13:
                fa = x.pop();
                ca = x.pop();
                Q = ca <= fa ? Q + 1 : W.offset;
                continue;
              case 23:
                fa = x.pop();
                ca = x.pop();
                Q = ca > fa ? W.offset : Q + 1;
                continue;
              case 14:
                fa = x.pop();
                ca = x.pop();
                Q = ca > fa ? Q + 1 : W.offset;
                continue;
              case 22:
                fa = x.pop();
                ca = x.pop();
                Q = ca <= fa ? W.offset : Q + 1;
                continue;
              case 15:
                fa = x.pop();
                ca = x.pop();
                Q = ca >= fa ? Q + 1 : W.offset;
                continue;
              case 21:
                fa = x.pop();
                ca = x.pop();
                Q = ca < fa ? W.offset : Q + 1;
                continue;
              case 16:
                Q = W.offset;
                continue;
              case 17:
                Q = x.pop() ? W.offset : Q + 1;
                continue;
              case 18:
                Q = x.pop() ? Q + 1 : W.offset;
                continue;
              case 19:
                fa = x.pop();
                ca = x.pop();
                Q = asEquals(ca, fa) ? W.offset : Q + 1;
                continue;
              case 20:
                fa = x.pop();
                ca = x.pop();
                Q = asEquals(ca, fa) ? Q + 1 : W.offset;
                continue;
              case 25:
                fa = x.pop();
                ca = x.pop();
                Q = ca === fa ? W.offset : Q + 1;
                continue;
              case 26:
                fa = x.pop();
                ca = x.pop();
                Q = ca !== fa ? W.offset : Q + 1;
                continue;
              case 27:
                ia = x.pop();
                if (0 > ia || ia >= W.offsets.length) {
                  ia = W.offsets.length - 1;
                }
                Q = W.offsets[ia];
                continue;
              case 28:
                Y.push(B(x.pop()), !0);
                break;
              case 29:
                Y.pop();
                break;
              case 30:
                ia = x.pop();
                x[x.length - 1] = B(x[x.length - 1]).asNextName(ia);
                break;
              case 35:
                ia = x.pop();
                x[x.length - 1] = B(x[x.length - 1]).asNextValue(ia);
                break;
              case 50:
                var na = aa[Q] || (aa[Q] = new J(null, 0));
                ea = n[W.object];
                ia = n[W.index];
                na.object = ea;
                na.index = ia;
                Object(ea).asHasNext2(na);
                n[W.object] = na.object;
                n[W.index] = na.index;
                x.push(!!na.index);
                break;
              case 32:
                x.push(null);
                break;
              case 33:
                x.push(void 0);
                break;
              case 36:
              ;
              case 37:
                x.push(W.value);
                break;
              case 44:
                x.push(N[W.index]);
                break;
              case 45:
                x.push(F[W.index]);
                break;
              case 46:
                x.push(S[W.index]);
                break;
              case 47:
                x.push(U[W.index]);
                break;
              case 38:
                x.push(!0);
                break;
              case 39:
                x.push(!1);
                break;
              case 40:
                x.push(NaN);
                break;
              case 41:
                x.pop();
                break;
              case 42:
                x.push(x[x.length - 1]);
                break;
              case 43:
                ea = x[x.length - 1];
                x[x.length - 1] = x[x.length - 2];
                x[x.length - 2] = ea;
                break;
              case 48:
                Y.push(B(x.pop()), !1);
                break;
              case 64:
                x.push(f(R[W.index], Y.topScope(), !0, !1));
                break;
              case 65:
                D(x, W.argCount, V);
                ea = x.pop();
                x[x.length - 1] = x[x.length - 1].asApply(ea, V);
                break;
              case 66:
                D(x, W.argCount, V);
                x[x.length - 1] = M(x[x.length - 1], V);
                break;
              case 71:
                return;
              case 72:
                return y.returnType ? w(y, y.returnType, x.pop()) : x.pop();
              case 73:
                D(x, W.argCount, V);
                ea = x.pop();
                K.object.baseClass.instanceConstructorNoInitialize.apply(ea, V);
                break;
              case 74:
                D(x, W.argCount, V);
                a(x, T[W.index], ba);
                ea = B(x[x.length - 1]);
                ea = ea.asConstructProperty(ba.namespaces, ba.name, ba.flags, V);
                x[x.length - 1] = ea;
                break;
              case 75:
                d.Debug.notImplemented("OP.callsuperid");
                break;
              case 76:
              ;
              case 70:
              ;
              case 79:
                D(x, W.argCount, V);
                a(x, T[W.index], ba);
                ga = B(x.pop()).asCallProperty(ba.namespaces, ba.name, ba.flags, 76 === la, V);
                79 !== la && x.push(ga);
                break;
              case 69:
              ;
              case 78:
                D(x, W.argCount, V);
                a(x, T[W.index], ba);
                ga = x.pop().asCallSuper(K, ba.namespaces, ba.name, ba.flags, V);
                78 !== la && x.push(ga);
                break;
              case 83:
                D(x, W.argCount, V);
                x[x.length - 1] = h(y, x[x.length - 1], V);
                break;
              case 85:
                ea = {};
                for (O = 0;O < W.argCount;O++) {
                  Z = x.pop(), ea[E.getPublicQualifiedName(x.pop())] = Z;
                }
                x.push(ea);
                break;
              case 86:
                ea = [];
                D(x, W.argCount, V);
                ea.push.apply(ea, V);
                x.push(ea);
                break;
              case 87:
                x.push(C(y));
                break;
              case 88:
                x[x.length - 1] = b(L.classes[W.index], x[x.length - 1], Y.topScope());
                break;
              case 89:
                a(x, T[W.index], ba);
                x[x.length - 1] = x[x.length - 1].descendants(ba.name);
                break;
              case 90:
                x.push(da[W.index].scopeObject);
                break;
              case 94:
              ;
              case 93:
                a(x, T[W.index], ba);
                x.push(Y.topScope().findScopeProperty(ba.namespaces, ba.name, ba.flags, y, 93 === la, !1));
                break;
              case 96:
                ja = T[W.index];
                ea = Y.topScope().findScopeProperty(ja.namespaces, ja.name, ja.flags, y, !0, !1);
                x.push(ea.asGetProperty(ja.namespaces, ja.name, ja.flags));
                break;
              case 104:
              ;
              case 97:
                Z = x.pop();
                a(x, T[W.index], ba);
                B(x.pop()).asSetProperty(ba.namespaces, ba.name, ba.flags, Z);
                break;
              case 98:
                x.push(n[W.index]);
                break;
              case 99:
                n[W.index] = x.pop();
                break;
              case 100:
                x.push(K.global.object);
                break;
              case 101:
                x.push(Y.get(W.index));
                break;
              case 102:
                a(x, T[W.index], ba);
                x[x.length - 1] = B(x[x.length - 1]).asGetProperty(ba.namespaces, ba.name, ba.flags);
                break;
              case 106:
                a(x, T[W.index], ba);
                x[x.length - 1] = B(x[x.length - 1]).asDeleteProperty(ba.namespaces, ba.name, ba.flags);
                break;
              case 108:
                x[x.length - 1] = v(x[x.length - 1], W.index);
                break;
              case 109:
                Z = x.pop();
                ea = x.pop();
                u(ea, W.index, Z);
                break;
              case 112:
                x[x.length - 1] = c(x[x.length - 1]);
                break;
              case 114:
                x[x.length - 1] = k.Runtime.escapeXMLAttribute(x[x.length - 1]);
                break;
              case 113:
                x[x.length - 1] = k.Runtime.escapeXMLElement(x[x.length - 1]);
                break;
              case 131:
              ;
              case 115:
                x[x.length - 1] |= 0;
                break;
              case 136:
              ;
              case 116:
                x[x.length - 1] >>>= 0;
                break;
              case 132:
              ;
              case 117:
                x[x.length - 1] = +x[x.length - 1];
                break;
              case 129:
              ;
              case 118:
                x[x.length - 1] = !!x[x.length - 1];
                break;
              case 120:
                x[x.length - 1] = e(x[x.length - 1]);
                break;
              case 128:
                x[x.length - 1] = l(X.getType(T[W.index]), x[x.length - 1]);
                break;
              case 130:
                break;
              case 133:
                x[x.length - 1] = c(x[x.length - 1]);
                break;
              case 134:
                x[x.length - 2] = g(X.getType(T[W.index]), x[x.length - 1]);
                break;
              case 135:
                x[x.length - 2] = g(x.pop(), x[x.length - 1]);
                break;
              case 137:
                ea = x[x.length - 1];
                x[x.length - 1] = void 0 == ea ? null : ea;
                break;
              case 144:
                x[x.length - 1] = -x[x.length - 1];
                break;
              case 145:
                ++x[x.length - 1];
                break;
              case 146:
                ++n[W.index];
                break;
              case 147:
                --x[x.length - 1];
                break;
              case 148:
                --n[W.index];
                break;
              case 149:
                x[x.length - 1] = q(x[x.length - 1]);
                break;
              case 150:
                x[x.length - 1] = !x[x.length - 1];
                break;
              case 151:
                x[x.length - 1] = ~x[x.length - 1];
                break;
              case 160:
                x[x.length - 2] = r(x[x.length - 2], x.pop());
                break;
              case 161:
                x[x.length - 2] -= x.pop();
                break;
              case 162:
                x[x.length - 2] *= x.pop();
                break;
              case 163:
                x[x.length - 2] /= x.pop();
                break;
              case 164:
                x[x.length - 2] %= x.pop();
                break;
              case 165:
                x[x.length - 2] <<= x.pop();
                break;
              case 166:
                x[x.length - 2] >>= x.pop();
                break;
              case 167:
                x[x.length - 2] >>>= x.pop();
                break;
              case 168:
                x[x.length - 2] &= x.pop();
                break;
              case 169:
                x[x.length - 2] |= x.pop();
                break;
              case 170:
                x[x.length - 2] ^= x.pop();
                break;
              case 171:
                x[x.length - 2] = asEquals(x[x.length - 2], x.pop());
                break;
              case 172:
                x[x.length - 2] = x[x.length - 2] === x.pop();
                break;
              case 173:
                x[x.length - 2] = x[x.length - 2] < x.pop();
                break;
              case 174:
                x[x.length - 2] = x[x.length - 2] <= x.pop();
                break;
              case 175:
                x[x.length - 2] = x[x.length - 2] > x.pop();
                break;
              case 176:
                x[x.length - 2] = x[x.length - 2] >= x.pop();
                break;
              case 177:
                x[x.length - 2] = t(x.pop(), x[x.length - 1]);
                break;
              case 178:
                x[x.length - 1] = m(X.getType(T[W.index]), x[x.length - 1]);
                break;
              case 179:
                x[x.length - 2] = m(x.pop(), x[x.length - 1]);
                break;
              case 180:
                x[x.length - 2] = B(x.pop()).asHasProperty(null, x[x.length - 1]);
                break;
              case 192:
                x[x.length - 1] = (x[x.length - 1] | 0) + 1;
                break;
              case 193:
                x[x.length - 1] = (x[x.length - 1] | 0) - 1;
                break;
              case 194:
                n[W.index] = (n[W.index] | 0) + 1;
                break;
              case 195:
                n[W.index] = (n[W.index] | 0) - 1;
                break;
              case 196:
                x[x.length - 1] = ~x[x.length - 1];
                break;
              case 197:
                x[x.length - 2] = x[x.length - 2] + x.pop() | 0;
                break;
              case 198:
                x[x.length - 2] = x[x.length - 2] - x.pop() | 0;
                break;
              case 199:
                x[x.length - 2] = x[x.length - 2] * x.pop() | 0;
                break;
              case 208:
              ;
              case 209:
              ;
              case 210:
              ;
              case 211:
                x.push(n[la - 208]);
                break;
              case 212:
              ;
              case 213:
              ;
              case 214:
              ;
              case 215:
                n[la - 212] = x.pop();
                break;
              case 6:
                d.AVM2.AS.ASXML.defaultNamespace = N[W.index];
                break;
              case 7:
                d.AVM2.AS.ASXML.defaultNamespace = x.pop();
                break;
              case 239:
              ;
              case 240:
              ;
              case 241:
                break;
              default:
                d.Debug.notImplemented(d.AVM2.opcodeName(la));
            }
            Q++;
          } catch (oa) {
            if (1 > da.length) {
              throw oa;
            }
            for (var oa = p(X, oa), O = 0, ta = da.length;O < ta;O++) {
              var pa = da[O];
              if (Q >= pa.start && Q <= pa.end && (!pa.typeName || X.getType(pa.typeName).isType(oa))) {
                x.length = 0;
                x.push(oa);
                Y.clear();
                Q = pa.offset;
                continue a;
              }
            }
            throw oa;
          }
        }
      };
      return n;
    }();
    k.Interpreter = y;
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      a.VM_METHOD_OVERRIDES["static mochi.as3.MochiServices::connect"] = function() {
      };
      a.VM_METHOD_OVERRIDES["static MochiBot::track"] = function() {
      };
      a.VM_METHOD_OVERRIDES["com.midasplayer.debug.DebugLog::trace"] = function(a) {
        console.log(a);
      };
      a.VM_METHOD_OVERRIDES["com.midasplayer.engine.comm.DebugGameComm::getGameData"] = function() {
        return '<gamedata randomseed="554884453" version="1">\n<musicOn>true</musicOn>\n<soundOn>true</soundOn>\n<isShortGame>false</isShortGame>\n<booster_1>0</booster_1>\n<booster_2>0</booster_2>\n<booster_3>0</booster_3>\n<booster_4>0</booster_4>\n<booster_5>0</booster_5>\n<bestScore>0</bestScore>\n<bestChain>0</bestChain>\n<bestLevel>0</bestLevel>\n<bestCrushed>0</bestCrushed>\n<bestMixed>0</bestMixed>\n<text id="outro.crushed">Candy crushed</text>\n<text id="outro.bestever">best ever</text>\n<text id="outro.trophy.two">scored {0} in one game</text>\n<text id="outro.combo_color_color">All Clear Created</text>\n<text id="outro.trophy.one">crushed {0} candy in one game</text>\n<text id="outro.score">Score</text>\n<text id="outro.opengame">Please register to play the full game</text>\n<text id="outro.chain">Longest chain</text>\n<text id="outro.time">Game ends in {0} seconds</text>\n<text id="outro.combo_color_line">Super Stripes Created</text>\n<text id="game.nomoves">No more moves!</text>\n<text id="outro.combo_wrapper_line">Mega-Candy Created</text>\n<text id="intro.time">Game starts in {0} seconds</text>\n<text id="outro.now">now</text>\n<text id="outro.level">Level reached</text>\n<text id="outro.title">Game Over</text>\n<text id="intro.info1">Match 3 Candy of the same colour to crush them. Matching 4 or 5 in different formations generates special sweets that are extra tasty.</text>\n<text id="intro.info2">You can also combine the special sweets for additional effects by switching them with each other. Try these combinations for a taste you will not forget: </text>\n<text id="outro.combo_color_wrapper">Double Colour Bombs Created</text>\n<text id="outro.trophy.three">made {0} combined candy in one game</text>\n<text id="intro.title">Play like this:</text>\n</gamedata>';
      };
      a.VM_METHOD_OVERRIDES["com.antkarlov.Preloader::com.antkarlov:Preloader.isUrl"] = function() {
        return !0;
      };
      a.VM_METHOD_OVERRIDES["static com.demonsters.debugger.MonsterDebugger::initialize"] = function() {
      };
      a.VM_METHOD_OVERRIDES["com.spilgames.api.core.tracking.TrackConfig::getTrackers"] = function() {
        return [];
      };
      a.VM_METHOD_OVERRIDES["org.robotlegs.base.CommandMap::org.robotlegs.base:CommandMap.verifyCommandClass"] = function() {
      };
      a.VM_METHOD_OVERRIDES["static utility.SWFUtils::getCompilationDate"] = function() {
        return new Date("Wed Oct 8 16:08:55 2014 UTC");
      };
      a.VM_METHOD_OVERRIDES["com.spilgames.api.components.TextFields.AutoFitTextFieldEx::com.spilgames.api.components.TextFields:AutoFitTextFieldEx.updateProperties"] = a.VM_METHOD_OVERRIDES["com.spilgames.api.components.TextFields.AutoFitTextFieldEx::com.spilgames.api.components.TextFields:AutoFitTextFieldEx.updateTextSize"] = function() {
      };
      a.VM_METHOD_OVERRIDES["Preloader::isNeedSite"] = function() {
        return !0;
      };
      a.VM_METHOD_OVERRIDES["facebook.utils.FBURI::isFacebookURI"] = function() {
        return !0;
      };
      a.VM_METHOD_OVERRIDES["facebook.utils.FBURI::is_facebook_cdn_url"] = function() {
        return !!this.asGetPublicProperty("authority");
      };
    })(d.Runtime || (d.Runtime = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    function a(b, a) {
      if (65535 < a.length) {
        throw "AMF short string exceeded";
      }
      if (a.length) {
        var e = d.StringUtilities.utf8decode(a);
        b.writeByte(e.length >> 8 & 255);
        b.writeByte(e.length & 255);
        for (var c = 0;c < e.length;c++) {
          b.writeByte(e[c]);
        }
      } else {
        b.writeByte(0), b.writeByte(0);
      }
    }
    function n(b) {
      var a = b.readByte() << 8 | b.readByte();
      if (!a) {
        return "";
      }
      for (var e = new Uint8Array(a), c = 0;c < a;c++) {
        e[c] = b.readByte();
      }
      return d.StringUtilities.utf8encode(e);
    }
    function w(b, a) {
      var e = new ArrayBuffer(8), c = new DataView(e);
      c.setFloat64(0, a, !1);
      for (var f = 0;f < e.byteLength;f++) {
        b.writeByte(c.getUint8(f));
      }
    }
    function v(b) {
      for (var a = new ArrayBuffer(8), e = new DataView(a), c = 0;c < a.byteLength;c++) {
        e.setUint8(c, b.readByte());
      }
      return e.getFloat64(0, !1);
    }
    function u(b) {
      var a = b.readByte();
      if (0 === (a & 128)) {
        return a;
      }
      var e = b.readByte();
      if (0 === (e & 128)) {
        return (a & 127) << 7 | e;
      }
      var c = b.readByte();
      if (0 === (c & 128)) {
        return (a & 127) << 14 | (e & 127) << 7 | c;
      }
      b = b.readByte();
      return (a & 127) << 22 | (e & 127) << 15 | (c & 127) << 8 | b;
    }
    function l(b, a) {
      if (0 === (a & 4294967168)) {
        b.writeByte(a & 127);
      } else {
        if (0 === (a & 4294950912)) {
          b.writeByte(128 | a >> 7 & 127), b.writeByte(a & 127);
        } else {
          if (0 === (a & 4292870144)) {
            b.writeByte(128 | a >> 14 & 127), b.writeByte(128 | a >> 7 & 127), b.writeByte(a & 127);
          } else {
            if (0 === (a & 3221225472)) {
              b.writeByte(128 | a >> 22 & 127), b.writeByte(128 | a >> 15 & 127), b.writeByte(128 | a >> 8 & 127), b.writeByte(a & 255);
            } else {
              throw "AMF3 U29 range";
            }
          }
        }
      }
    }
    function c(b, a) {
      var e = u(b);
      if (1 === e) {
        return "";
      }
      var c = a.stringsCache || (a.stringsCache = []);
      if (0 === (e & 1)) {
        return c[e >> 1];
      }
      for (var e = e >> 1, f = new Uint8Array(e), h = 0;h < e;h++) {
        f[h] = b.readByte();
      }
      e = d.StringUtilities.utf8encode(f);
      c.push(e);
      return e;
    }
    function g(b, a, e) {
      if ("" === a) {
        b.writeByte(1);
      } else {
        e = e.stringsCache || (e.stringsCache = []);
        var c = e.indexOf(a);
        if (0 <= c) {
          l(b, c << 1);
        } else {
          for (e.push(a), a = d.StringUtilities.utf8decode(a), l(b, 1 | a.length << 1), e = 0;e < a.length;e++) {
            b.writeByte(a[e]);
          }
        }
      }
    }
    function q(a, e) {
      var f = a.readByte();
      switch(f) {
        case 1:
          return null;
        case 0:
          break;
        case 2:
          return !1;
        case 3:
          return !0;
        case 4:
          return u(a);
        case 5:
          return v(a);
        case 6:
          return c(a, e);
        case 8:
          return new Date(v(a));
        case 10:
          var g = u(a);
          if (0 === (g & 1)) {
            return e.objectsCache[g >> 1];
          }
          if (0 !== (g & 4)) {
            throw "AMF3 Traits-Ext is not supported";
          }
          var m, d;
          if (0 === (g & 2)) {
            m = e.traitsCache[g >> 2], d = m.class;
          } else {
            m = {};
            f = c(a, e);
            d = (m.className = f) && k.aliasesCache.names[f];
            m.class = d;
            m.isDynamic = 0 !== (g & 8);
            m.members = [];
            for (var l = d && d.instanceBindings.slots, f = 0, g = g >> 4;f < g;f++) {
              for (var t = c(a, e), n = null, g = 1;l && g < l.length;g++) {
                if (l[g].name.name === t) {
                  n = l[g];
                  break;
                }
              }
              m.members.push(n ? h.getQualifiedName(n.name) : h.getPublicQualifiedName(t));
            }
            (e.traitsCache || (e.traitsCache = [])).push(m);
          }
          l = d ? b(d, []) : {};
          (e.objectsCache || (e.objectsCache = [])).push(l);
          for (f = 0;f < m.members.length;f++) {
            d = q(a, e), l[m.members[f]] = d;
          }
          if (m.isDynamic) {
            for (;;) {
              f = c(a, e);
              if (!f.length) {
                break;
              }
              d = q(a, e);
              l.asSetPublicProperty(f, d);
            }
          }
          return l;
        case 9:
          g = u(a);
          if (0 === (g & 1)) {
            return e.objectsCache[g >> 1];
          }
          m = [];
          (e.objectsCache || (e.objectsCache = [])).push(m);
          for (l = g >> 1;;) {
            f = c(a, e);
            if (!f.length) {
              break;
            }
            d = q(a, e);
            m.asSetPublicProperty(f, d);
          }
          for (f = 0;f < l;f++) {
            d = q(a, e), m.asSetPublicProperty(f, d);
          }
          return m;
        default:
          throw "AMF3 Unknown marker " + f;;
      }
    }
    function t(b, a, e) {
      e = e.objectsCache || (e.objectsCache = []);
      var c = e.indexOf(a);
      if (0 > c) {
        return e.push(a), !1;
      }
      l(b, c << 1);
      return !0;
    }
    function m(b, a, e) {
      switch(typeof a) {
        case "boolean":
          b.writeByte(a ? 3 : 2);
          break;
        case "number":
          a === (a | 0) ? (b.writeByte(4), l(b, a)) : (b.writeByte(5), w(b, a));
          break;
        case "undefined":
          b.writeByte(0);
          break;
        case "string":
          b.writeByte(6);
          g(b, a, e);
          break;
        case "object":
          if (null === a) {
            b.writeByte(1);
          } else {
            if (Array.isArray(a)) {
              b.writeByte(9);
              if (t(b, a, e)) {
                break;
              }
              for (var c = 0;c in a;) {
                ++c;
              }
              l(b, c << 1 | 1);
              f(a, function(a, f) {
                d.isNumeric(a) && 0 <= a && a < c || (g(b, a, e), m(b, f, e));
              });
              g(b, "", e);
              for (var q = 0;q < c;q++) {
                m(b, a[q], e);
              }
            } else {
              if (a instanceof Date) {
                b.writeByte(8);
                if (t(b, a, e)) {
                  break;
                }
                l(b, 1);
                w(b, a.valueOf());
              } else {
                b.writeByte(10);
                if (t(b, a, e)) {
                  break;
                }
                var q = !0, n = a.class;
                if (n) {
                  var q = !n.classInfo.instanceInfo.isSealed(), v = k.aliasesCache.classes.get(n) || "", u, J = e.traitsCache || (e.traitsCache = []), P = e.traitsInfos || (e.traitsInfos = []), y = J.indexOf(n);
                  if (0 > y) {
                    var K = n.instanceBindings.slots;
                    u = [];
                    for (var y = [], H = 1;H < K.length;H++) {
                      var A = K[H];
                      A.name.getNamespace().isPublic() && (u.push(h.getQualifiedName(A.name)), y.push(A.name.name));
                    }
                    J.push(n);
                    P.push(u);
                    n = y.length;
                    l(b, (q ? 11 : 3) + (n << 4));
                    g(b, v, e);
                    for (H = 0;H < n;H++) {
                      g(b, y[H], e);
                    }
                  } else {
                    u = P[y], n = u.length, l(b, 1 + (y << 2));
                  }
                  for (H = 0;H < n;H++) {
                    m(b, a[u[H]], e);
                  }
                } else {
                  l(b, 11), g(b, "", e);
                }
                q && (f(a, function(a, c) {
                  g(b, a, e);
                  m(b, c, e);
                }), g(b, "", e));
              }
            }
          }
        ;
      }
    }
    var h = d.AVM2.ABC.Multiname, f = d.AVM2.Runtime.forEachPublicProperty, b = d.AVM2.Runtime.construct;
    (function(b) {
      b[b.NUMBER = 0] = "NUMBER";
      b[b.BOOLEAN = 1] = "BOOLEAN";
      b[b.STRING = 2] = "STRING";
      b[b.OBJECT = 3] = "OBJECT";
      b[b.NULL = 5] = "NULL";
      b[b.UNDEFINED = 6] = "UNDEFINED";
      b[b.REFERENCE = 7] = "REFERENCE";
      b[b.ECMA_ARRAY = 8] = "ECMA_ARRAY";
      b[b.OBJECT_END = 9] = "OBJECT_END";
      b[b.STRICT_ARRAY = 10] = "STRICT_ARRAY";
      b[b.DATE = 11] = "DATE";
      b[b.LONG_STRING = 12] = "LONG_STRING";
      b[b.XML = 15] = "XML";
      b[b.TYPED_OBJECT = 16] = "TYPED_OBJECT";
      b[b.AVMPLUS = 17] = "AVMPLUS";
    })(k.AMF0Marker || (k.AMF0Marker = {}));
    var e = function() {
      function b() {
      }
      b.write = function(b, e) {
        switch(typeof e) {
          case "boolean":
            b.writeByte(1);
            b.writeByte(e ? 1 : 0);
            break;
          case "number":
            b.writeByte(0);
            w(b, e);
            break;
          case "undefined":
            b.writeByte(6);
            break;
          case "string":
            b.writeByte(2);
            a(b, e);
            break;
          case "object":
            null === e ? b.writeByte(5) : (Array.isArray(e) ? (b.writeByte(8), b.writeByte(e.length >>> 24 & 255), b.writeByte(e.length >> 16 & 255), b.writeByte(e.length >> 8 & 255), b.writeByte(e.length & 255), f(e, function(e, c) {
              a(b, e);
              this.write(b, c);
            }, this)) : (b.writeByte(3), f(e, function(e, c) {
              a(b, e);
              this.write(b, c);
            }, this)), b.writeByte(0), b.writeByte(0), b.writeByte(9));
        }
      };
      b.read = function(b) {
        var a = b.readByte();
        switch(a) {
          case 0:
            return v(b);
          case 1:
            return !!b.readByte();
          case 2:
            return n(b);
          case 3:
            for (var e = {};;) {
              a = n(b);
              if (!a.length) {
                break;
              }
              var c = this.read(b);
              e.asSetPublicProperty(a, c);
            }
            if (9 !== b.readByte()) {
              throw "AMF0 End marker is not found";
            }
            return e;
          case 5:
            return null;
          case 6:
            break;
          case 8:
            e = [];
            for (e.length = b.readByte() << 24 | b.readByte() << 16 | b.readByte() << 8 | b.readByte();;) {
              a = n(b);
              if (!a.length) {
                break;
              }
              c = this.read(b);
              e.asSetPublicProperty(a, c);
            }
            if (9 !== b.readByte()) {
              throw "AMF0 End marker is not found";
            }
            return e;
          case 10:
            e = [];
            e.length = b.readByte() << 24 | b.readByte() << 16 | b.readByte() << 8 | b.readByte();
            for (a = 0;a < e.length;a++) {
              e[a] = this.read(b);
            }
            return e;
          case 17:
            return q(b, {});
          default:
            throw "AMF0 Unknown marker " + a;;
        }
      };
      return b;
    }();
    k.AMF0 = e;
    (function(b) {
      b[b.UNDEFINED = 0] = "UNDEFINED";
      b[b.NULL = 1] = "NULL";
      b[b.FALSE = 2] = "FALSE";
      b[b.TRUE = 3] = "TRUE";
      b[b.INTEGER = 4] = "INTEGER";
      b[b.DOUBLE = 5] = "DOUBLE";
      b[b.STRING = 6] = "STRING";
      b[b.XML_DOC = 7] = "XML_DOC";
      b[b.DATE = 8] = "DATE";
      b[b.ARRAY = 9] = "ARRAY";
      b[b.OBJECT = 10] = "OBJECT";
      b[b.XML = 11] = "XML";
      b[b.BYTEARRAY = 12] = "BYTEARRAY";
      b[b.VECTOR_INT = 13] = "VECTOR_INT";
      b[b.VECTOR_UINT = 14] = "VECTOR_UINT";
      b[b.VECTOR_DOUBLE = 15] = "VECTOR_DOUBLE";
      b[b.VECTOR_OBJECT = 16] = "VECTOR_OBJECT";
      b[b.DICTIONARY = 17] = "DICTIONARY";
    })(k.AMF3Marker || (k.AMF3Marker = {}));
    k.aliasesCache = {classes:new WeakMap, names:Object.create(null)};
    e = function() {
      function b() {
      }
      b.write = function(b, a) {
        m(b, a, {});
      };
      b.read = function(b) {
        return q(b, {});
      };
      return b;
    }();
    k.AMF3 = e;
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
console.timeEnd("Load AVM2 Dependencies");
console.time("Load SWF Parser");
(function(d) {
  (function(k) {
    (function(a) {
      function n(a, c, d) {
        return k(a, c, d) << 32 - d >> 32 - d;
      }
      function k(a, c, d) {
        for (var m = c.bitBuffer, h = c.bitLength;d > h;) {
          m = m << 8 | a[c.pos++], h += 8;
        }
        h -= d;
        a = m >>> h & u[d];
        c.bitBuffer = m;
        c.bitLength = h;
        return a;
      }
      var v = Math.pow;
      a.readSi8 = function(a, c) {
        return c.getInt8(c.pos++);
      };
      a.readSi16 = function(a, c) {
        return c.getInt16(c.pos, c.pos += 2);
      };
      a.readSi32 = function(a, c) {
        return c.getInt32(c.pos, c.pos += 4);
      };
      a.readUi8 = function(a, c) {
        return a[c.pos++];
      };
      a.readUi16 = function(a, c) {
        return c.getUint16(c.pos, c.pos += 2);
      };
      a.readUi32 = function(a, c) {
        return c.getUint32(c.pos, c.pos += 4);
      };
      a.readFixed = function(a, c) {
        return c.getInt32(c.pos, c.pos += 4) / 65536;
      };
      a.readFixed8 = function(a, c) {
        return c.getInt16(c.pos, c.pos += 2) / 256;
      };
      a.readFloat16 = function(a, c) {
        var d = c.getUint16(c.pos);
        c.pos += 2;
        var m = d >> 15 ? -1 : 1, h = (d & 31744) >> 10, d = d & 1023;
        return h ? 31 === h ? d ? NaN : Infinity * m : m * v(2, h - 15) * (1 + d / 1024) : m * v(2, -14) * (d / 1024);
      };
      a.readFloat = function(a, c) {
        return c.getFloat32(c.pos, c.pos += 4);
      };
      a.readDouble = function(a, c) {
        return c.getFloat64(c.pos, c.pos += 8);
      };
      a.readEncodedU32 = function(a, c) {
        var d = a[c.pos++];
        if (!(d & 128)) {
          return d;
        }
        d = d & 127 | a[c.pos++] << 7;
        if (!(d & 16384)) {
          return d;
        }
        d = d & 16383 | a[c.pos++] << 14;
        if (!(d & 2097152)) {
          return d;
        }
        d = d & 2097151 | a[c.pos++] << 21;
        return d & 268435456 ? d & 268435455 | a[c.pos++] << 28 : d;
      };
      a.readBool = function(a, c) {
        return !!a[c.pos++];
      };
      a.align = function(a, c) {
        c.align();
      };
      a.readSb = n;
      for (var u = new Uint32Array(33), l = 1, c = 0;32 >= l;++l) {
        u[l] = c = c << 1 | 1;
      }
      a.readUb = k;
      a.readFb = function(a, c, d) {
        return n(a, c, d) / 65536;
      };
      a.readString = function(a, c, l) {
        var m = c.pos;
        if (-1 < l) {
          a = a.subarray(m, m += l);
        } else {
          l = 0;
          for (var h = m;a[h];h++) {
            l++;
          }
          a = a.subarray(m, m += l);
          m++;
        }
        c.pos = m;
        c = d.StringUtilities.utf8encode(a);
        0 <= c.indexOf("\x00") && (c = c.split("\x00").join(""));
        return c;
      };
    })(k.Parser || (k.Parser = {}));
  })(d.SWF || (d.SWF = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(n) {
        function k(b, c, f, h, g) {
          f || (f = {});
          f.id = a.readUi16(b, c);
          var p = f.lineBounds = {};
          e(b, c, p, h, g);
          if (p = f.isMorph = 46 === g || 84 === g) {
            var m = f.lineBoundsMorph = {};
            e(b, c, m, h, g);
          }
          if (m = f.canHaveStrokes = 83 === g || 84 === g) {
            var d = f.fillBounds = {};
            e(b, c, d, h, g);
            p && (d = f.fillBoundsMorph = {}, e(b, c, d, h, g));
            f.flags = a.readUi8(b, c);
          }
          if (p) {
            f.offsetMorph = a.readUi32(b, c);
            var r = f, l, q, d = D(b, c, r, h, g, p, m), t = d.lineBits, n = d.fillBits, C = r.records = [];
            do {
              var v = {}, d = B(b, c, v, h, g, p, n, t, m, q);
              l = d.eos;
              n = d.fillBits;
              t = d.lineBits;
              q = d.bits;
              C.push(v);
            } while (!l);
            d = M(b, c);
            n = d.fillBits;
            t = d.lineBits;
            r = r.recordsMorph = [];
            do {
              C = {}, d = B(b, c, C, h, g, p, n, t, m, q), l = d.eos, n = d.fillBits, t = d.lineBits, q = d.bits, r.push(C);
            } while (!l);
          } else {
            n = f;
            q = D(b, c, n, h, g, p, m);
            d = q.fillBits;
            t = q.lineBits;
            r = n.records = [];
            do {
              C = {}, q = B(b, c, C, h, g, p, d, t, m, l), n = q.eos, d = q.fillBits, t = q.lineBits, l = q.bits, r.push(C);
            } while (!n);
          }
          return f;
        }
        function v(b, e, c, f, h, g) {
          var p;
          c || (c = {});
          if (4 === h) {
            return c.symbolId = a.readUi16(b, e), c.depth = a.readUi16(b, e), c.flags |= 4, c.matrix = C(b, e), e.pos < g && (c.flags |= 8, f = c.cxform = {}, I(b, e, f, h)), c;
          }
          p = c.flags = 26 < h ? a.readUi16(b, e) : a.readUi8(b, e);
          c.depth = a.readUi16(b, e);
          p & 2048 && (c.className = a.readString(b, e, -1));
          p & 2 && (c.symbolId = a.readUi16(b, e));
          p & 4 && (c.matrix = C(b, e));
          if (p & 8) {
            var m = c.cxform = {};
            I(b, e, m, h);
          }
          p & 16 && (c.ratio = a.readUi16(b, e));
          p & 32 && (c.name = a.readString(b, e, -1));
          p & 64 && (c.clipDepth = a.readUi16(b, e));
          if (p & 256) {
            for (m = a.readUi8(b, e), h = c.filters = [];m--;) {
              var d = {};
              J(b, e, d);
              h.push(d);
            }
          }
          p & 512 && (c.blendMode = a.readUi8(b, e));
          p & 1024 && (c.bmpCache = a.readUi8(b, e));
          p & 8192 && (c.visibility = a.readUi8(b, e));
          p & 16384 && (h = c, m = a.readUi8(b, e) | a.readUi8(b, e) << 24 | a.readUi8(b, e) << 16 | a.readUi8(b, e) << 8, h.backgroundColor = m);
          if (p & 128) {
            a.readUi16(b, e);
            6 <= f ? a.readUi32(b, e) : a.readUi16(b, e);
            p = c.events = [];
            do {
              h = {};
              var m = b, d = e, r = h, l = f, q = r.flags = 6 <= l ? a.readUi32(m, d) : a.readUi16(m, d);
              q ? (6 === l && (q &= -262145), l = r.length = a.readUi32(m, d), q & 131072 && (r.keyCode = a.readUi8(m, d), l--), q = d.pos + l, r.actionsData = m.subarray(d.pos, q), d.pos = q, m = !1) : m = !0;
              if (m) {
                break;
              }
              if (e.pos > g) {
                e.pos = g;
                break;
              }
              p.push(h);
            } while (1);
          }
          return c;
        }
        function u(b, e, c, f, h) {
          c || (c = {});
          5 === h && (c.symbolId = a.readUi16(b, e));
          c.depth = a.readUi16(b, e);
          return c;
        }
        function l(b, e, c, f, h, g, p) {
          f = c || {};
          f.id = a.readUi16(b, e);
          if (21 < h) {
            var m = a.readUi32(b, e);
            90 === h && (f.deblock = a.readFixed8(b, e));
            m += e.pos;
            c = f.imgData = b.subarray(e.pos, m);
            f.alphaData = b.subarray(m, g);
          } else {
            c = f.imgData = b.subarray(e.pos, g);
          }
          e.pos = g;
          switch(c[0] << 8 | c[1]) {
            case 65496:
            ;
            case 65497:
              f.mimeType = "image/jpeg";
              break;
            case 35152:
              f.mimeType = "image/png";
              break;
            case 18249:
              f.mimeType = "image/gif";
              break;
            default:
              f.mimeType = "application/octet-stream";
          }
          f.jpegTables = 6 === h ? p : null;
          return f;
        }
        function c(b, e, c, f, h, g) {
          var p;
          c || (c = {});
          c.id = a.readUi16(b, e);
          if (7 == h) {
            var m = c.characters = [];
            do {
              var d = {};
              p = b;
              var r = e, l = d, q = f, t = h, n = a.readUi8(p, r), k = l.eob = !n;
              l.flags = 8 <= q ? (n >> 5 & 1 ? 512 : 0) | (n >> 4 & 1 ? 256 : 0) : 0;
              l.stateHitTest = n >> 3 & 1;
              l.stateDown = n >> 2 & 1;
              l.stateOver = n >> 1 & 1;
              l.stateUp = n & 1;
              k || (l.symbolId = a.readUi16(p, r), l.depth = a.readUi16(p, r), l.matrix = C(p, r), 34 === t && (q = l.cxform = {}, I(p, r, q, t)), l.flags & 256 && (l.filterCount = a.readUi8(p, r), t = l.filters = {}, J(p, r, t)), l.flags & 512 && (l.blendMode = a.readUi8(p, r)));
              p = k;
              m.push(d);
            } while (!p);
            c.actionsData = b.subarray(e.pos, g);
            e.pos = g;
          } else {
            m = a.readUi8(b, e);
            c.trackAsMenu = m >> 7 & 1;
            d = a.readUi16(b, e);
            m = c.characters = [];
            do {
              r = {};
              l = a.readUi8(b, e);
              p = r.eob = !l;
              r.flags = 8 <= f ? (l >> 5 & 1 ? 512 : 0) | (l >> 4 & 1 ? 256 : 0) : 0;
              r.stateHitTest = l >> 3 & 1;
              r.stateDown = l >> 2 & 1;
              r.stateOver = l >> 1 & 1;
              r.stateUp = l & 1;
              if (!p) {
                r.symbolId = a.readUi16(b, e);
                r.depth = a.readUi16(b, e);
                r.matrix = C(b, e);
                34 === h && (l = r.cxform = {}, I(b, e, l, h));
                if (r.flags & 256) {
                  for (k = a.readUi8(b, e), l = c.filters = [];k--;) {
                    t = {}, J(b, e, t), l.push(t);
                  }
                }
                r.flags & 512 && (r.blendMode = a.readUi8(b, e));
              }
              m.push(r);
            } while (!p);
            if (d) {
              for (f = c.buttonActions = [];e.pos < g;) {
                h = b;
                m = e;
                p = g;
                d = m.pos;
                p = (r = a.readUi16(h, m)) ? d + r : p;
                r = a.readUi16(h, m);
                m.pos = p;
                if (e.pos > g) {
                  break;
                }
                f.push({keyCode:(r & 65024) >> 9, stateTransitionFlags:r & 511, actionsData:h.subarray(d + 4, p)});
              }
              e.pos = g;
            }
          }
          return c;
        }
        function g(b, e, c, f, h) {
          c || (c = {});
          c.id = a.readUi16(b, e);
          for (var g = a.readUi16(b, e), p = c.glyphCount = g / 2, m = [], d = p - 1;d--;) {
            m.push(a.readUi16(b, e));
          }
          c.offsets = [g].concat(m);
          for (g = c.glyphs = [];p--;) {
            m = {}, P(b, e, m, f, h), g.push(m);
          }
          return c;
        }
        function q(b, c, f, h, g) {
          var m;
          f || (f = {});
          f.id = a.readUi16(b, c);
          var d = f.bbox = {};
          e(b, c, d, h, g);
          f.matrix = C(b, c);
          h = f.glyphBits = a.readUi8(b, c);
          var d = f.advanceBits = a.readUi8(b, c), l = f.records = [];
          do {
            var q = {};
            m = b;
            var t = c, n = q, k = g, v = h, u = d, I = void 0;
            a.align(m, t);
            var w = a.readUb(m, t, 8), B = n.eot = !w, I = m, D = t, M = n, E = w, w = M.hasFont = E >> 3 & 1, J = M.hasColor = E >> 2 & 1, P = M.hasMoveY = E >> 1 & 1, E = M.hasMoveX = E & 1;
            w && (M.fontId = a.readUi16(I, D));
            J && (M.color = 33 === k ? p(I, D) : r(I, D));
            E && (M.moveX = a.readSi16(I, D));
            P && (M.moveY = a.readSi16(I, D));
            w && (M.fontHeight = a.readUi16(I, D));
            if (!B) {
              for (I = a.readUi8(m, t), I = n.glyphCount = I, n = n.entries = [];I--;) {
                D = {}, M = m, k = t, w = D, J = u, w.glyphIndex = a.readUb(M, k, v), w.advance = a.readSb(M, k, J), n.push(D);
              }
            }
            m = B;
            l.push(q);
          } while (!m);
          return f;
        }
        function t(b, e, c, f, h) {
          c || (c = {});
          15 == h && (c.soundId = a.readUi16(b, e));
          89 == h && (c.soundClassName = a.readString(b, e, -1));
          f = c;
          h = {};
          a.readUb(b, e, 2);
          h.stop = a.readUb(b, e, 1);
          h.noMultiple = a.readUb(b, e, 1);
          var g = h.hasEnvelope = a.readUb(b, e, 1), p = h.hasLoops = a.readUb(b, e, 1), m = h.hasOutPoint = a.readUb(b, e, 1);
          if (h.hasInPoint = a.readUb(b, e, 1)) {
            h.inPoint = a.readUi32(b, e);
          }
          m && (h.outPoint = a.readUi32(b, e));
          p && (h.loopCount = a.readUi16(b, e));
          if (g) {
            for (p = h.envelopeCount = a.readUi8(b, e), g = h.envelopes = [];p--;) {
              var m = {}, d = b, r = e, l = m;
              l.pos44 = a.readUi32(d, r);
              l.volumeLeft = a.readUi16(d, r);
              l.volumeRight = a.readUi16(d, r);
              g.push(m);
            }
          }
          f.soundInfo = h;
          return c;
        }
        function m(b, e, c, f, h, g) {
          c = c || {};
          c.id = a.readUi16(b, e);
          f = c.format = a.readUi8(b, e);
          c.width = a.readUi16(b, e);
          c.height = a.readUi16(b, e);
          c.hasAlpha = 36 === h;
          3 === f && (c.colorTableSize = a.readUi8(b, e));
          c.bmpData = b.subarray(e.pos, g);
          e.pos = g;
          return c;
        }
        function h(b, c, f, h, g, p) {
          f || (f = {});
          f.id = a.readUi16(b, c);
          var m = a.readUi8(b, c), d = f.hasLayout = m & 128 ? 1 : 0;
          f.shiftJis = 5 < h && m & 64 ? 1 : 0;
          f.smallText = m & 32 ? 1 : 0;
          f.ansi = m & 16 ? 1 : 0;
          var r = f.wideOffset = m & 8 ? 1 : 0, l = f.wide = m & 4 ? 1 : 0;
          f.italic = m & 2 ? 1 : 0;
          f.bold = m & 1 ? 1 : 0;
          5 < h ? f.language = a.readUi8(b, c) : (a.readUi8(b, c), f.language = 0);
          m = a.readUi8(b, c);
          f.name = a.readString(b, c, m);
          75 === g && (f.resolution = 20);
          m = f.glyphCount = a.readUi16(b, c);
          if (0 === m) {
            return f;
          }
          var q = c.pos;
          if (r) {
            for (var r = f.offsets = [], t = m;t--;) {
              r.push(a.readUi32(b, c));
            }
            f.mapOffset = a.readUi32(b, c);
          } else {
            r = f.offsets = [];
            for (t = m;t--;) {
              r.push(a.readUi16(b, c));
            }
            f.mapOffset = a.readUi16(b, c);
          }
          r = f.glyphs = [];
          for (t = m;t--;) {
            var n = {};
            1 === f.offsets[m - t] + q - c.pos ? (a.readUi8(b, c), r.push({records:[{type:0, eos:!0, hasNewStyles:0, hasLineStyle:0, hasFillStyle1:0, hasFillStyle0:0, move:0}]})) : (P(b, c, n, h, g), r.push(n));
          }
          if (l) {
            for (q = f.codes = [], r = m;r--;) {
              q.push(a.readUi16(b, c));
            }
          } else {
            for (q = f.codes = [], r = m;r--;) {
              q.push(a.readUi8(b, c));
            }
          }
          if (d) {
            f.ascent = a.readUi16(b, c);
            f.descent = a.readUi16(b, c);
            f.leading = a.readSi16(b, c);
            d = f.advance = [];
            for (q = m;q--;) {
              d.push(a.readSi16(b, c));
            }
            for (d = f.bbox = [];m--;) {
              q = {}, e(b, c, q, h, g), d.push(q);
            }
            g = a.readUi16(b, c);
            for (h = f.kerning = [];g-- && p - c.pos >= (l ? 4 : 2) + 2;) {
              m = {}, d = b, q = c, r = m, l ? (r.code1 = a.readUi16(d, q), r.code2 = a.readUi16(d, q)) : (r.code1 = a.readUi8(d, q), r.code2 = a.readUi8(d, q)), r.adjustment = a.readUi16(d, q), h.push(m);
            }
          }
          return f;
        }
        function f(b, e, c, f, h, g) {
          c || (c = {});
          c.id = a.readUi16(b, e);
          f = a.readUi8(b, e);
          h = c.hasFontData = f & 4 ? 1 : 0;
          c.italic = f & 2 ? 1 : 0;
          c.bold = f & 1 ? 1 : 0;
          c.name = a.readString(b, e, -1);
          h && (c.data = b.subarray(e.pos, g), e.pos = g);
          return c;
        }
        function b(b, e, c) {
          c || (c = {});
          for (var f = a.readEncodedU32(b, e), h = c.scenes = [];f--;) {
            var g = {};
            g.offset = a.readEncodedU32(b, e);
            g.name = a.readString(b, e, -1);
            h.push(g);
          }
          f = a.readEncodedU32(b, e);
          for (h = c.labels = [];f--;) {
            g = {}, g.frame = a.readEncodedU32(b, e), g.name = a.readString(b, e, -1), h.push(g);
          }
          return c;
        }
        function e(b, e, c, f, h) {
          a.align(b, e);
          var g = a.readUb(b, e, 5);
          f = a.readSb(b, e, g);
          h = a.readSb(b, e, g);
          var p = a.readSb(b, e, g), g = a.readSb(b, e, g);
          c.xMin = f;
          c.xMax = h;
          c.yMin = p;
          c.yMax = g;
          a.align(b, e);
        }
        function r(b, e) {
          return (a.readUi8(b, e) << 24 | a.readUi8(b, e) << 16 | a.readUi8(b, e) << 8 | 255) >>> 0;
        }
        function p(b, e) {
          return a.readUi8(b, e) << 24 | a.readUi8(b, e) << 16 | a.readUi8(b, e) << 8 | a.readUi8(b, e);
        }
        function C(b, e) {
          var c = {};
          a.align(b, e);
          if (a.readUb(b, e, 1)) {
            var f = a.readUb(b, e, 5);
            c.a = a.readFb(b, e, f);
            c.d = a.readFb(b, e, f);
          } else {
            c.a = 1, c.d = 1;
          }
          a.readUb(b, e, 1) ? (f = a.readUb(b, e, 5), c.b = a.readFb(b, e, f), c.c = a.readFb(b, e, f)) : (c.b = 0, c.c = 0);
          var f = a.readUb(b, e, 5), h = a.readSb(b, e, f), f = a.readSb(b, e, f);
          c.tx = h;
          c.ty = f;
          a.align(b, e);
          return c;
        }
        function I(b, e, c, f) {
          a.align(b, e);
          var h = a.readUb(b, e, 1), g = a.readUb(b, e, 1), p = a.readUb(b, e, 4);
          g ? (c.redMultiplier = a.readSb(b, e, p), c.greenMultiplier = a.readSb(b, e, p), c.blueMultiplier = a.readSb(b, e, p), c.alphaMultiplier = 4 < f ? a.readSb(b, e, p) : 256) : (c.redMultiplier = 256, c.greenMultiplier = 256, c.blueMultiplier = 256, c.alphaMultiplier = 256);
          h ? (c.redOffset = a.readSb(b, e, p), c.greenOffset = a.readSb(b, e, p), c.blueOffset = a.readSb(b, e, p), c.alphaOffset = 4 < f ? a.readSb(b, e, p) : 0) : (c.redOffset = 0, c.greenOffset = 0, c.blueOffset = 0, c.alphaOffset = 0);
          a.align(b, e);
        }
        function B(b, e, c, f, h, g, p, m, d, r) {
          var l, q = c.type = a.readUb(b, e, 1), t = a.readUb(b, e, 5);
          l = c.eos = !(q || t);
          if (q) {
            f = (t & 15) + 2, (c.isStraight = t >> 4) ? (c.isGeneral = a.readUb(b, e, 1)) ? (c.deltaX = a.readSb(b, e, f), c.deltaY = a.readSb(b, e, f)) : (c.isVertical = a.readUb(b, e, 1)) ? c.deltaY = a.readSb(b, e, f) : c.deltaX = a.readSb(b, e, f) : (c.controlDeltaX = a.readSb(b, e, f), c.controlDeltaY = a.readSb(b, e, f), c.anchorDeltaX = a.readSb(b, e, f), c.anchorDeltaY = a.readSb(b, e, f)), b = f;
          } else {
            var n = c.hasNewStyles = 2 < h ? t >> 4 : 0, k = c.hasLineStyle = t >> 3 & 1, C = c.hasFillStyle1 = t >> 2 & 1, v = c.hasFillStyle0 = t >> 1 & 1;
            if (c.move = t & 1) {
              r = a.readUb(b, e, 5), c.moveX = a.readSb(b, e, r), c.moveY = a.readSb(b, e, r);
            }
            v && (c.fillStyle0 = a.readUb(b, e, p));
            C && (c.fillStyle1 = a.readUb(b, e, p));
            k && (c.lineStyle = a.readUb(b, e, m));
            n && (b = D(b, e, c, f, h, g, d), m = b.lineBits, p = b.fillBits);
            b = r;
          }
          return {type:q, flags:t, eos:l, fillBits:p, lineBits:m, bits:b};
        }
        function D(b, e, c, f, h, g, m) {
          var d, l = a.readUi8(b, e);
          d = 2 < h && 255 === l ? a.readUi16(b, e) : l;
          for (l = c.fillStyles = [];d--;) {
            var q = {};
            E(b, e, q, f, h, g);
            l.push(q);
          }
          l = a.readUi8(b, e);
          l = 2 < h && 255 === l ? a.readUi16(b, e) : l;
          for (c = c.lineStyles = [];l--;) {
            d = {};
            var q = b, t = e, n = d, k = f, C = h, v = g, u = m;
            n.width = a.readUi16(q, t);
            v && (n.widthMorph = a.readUi16(q, t));
            if (u) {
              a.align(q, t);
              n.startCapsStyle = a.readUb(q, t, 2);
              var u = n.jointStyle = a.readUb(q, t, 2), I = n.hasFill = a.readUb(q, t, 1);
              n.noHscale = a.readUb(q, t, 1);
              n.noVscale = a.readUb(q, t, 1);
              n.pixelHinting = a.readUb(q, t, 1);
              a.readUb(q, t, 5);
              n.noClose = a.readUb(q, t, 1);
              n.endCapsStyle = a.readUb(q, t, 2);
              2 === u && (n.miterLimitFactor = a.readFixed8(q, t));
              I ? (n = n.fillStyle = {}, E(q, t, n, k, C, v)) : (n.color = p(q, t), v && (n.colorMorph = p(q, t)));
            } else {
              n.color = 22 < C ? p(q, t) : r(q, t), v && (n.colorMorph = p(q, t));
            }
            c.push(d);
          }
          b = M(b, e);
          return {fillBits:b.fillBits, lineBits:b.lineBits};
        }
        function M(b, e) {
          a.align(b, e);
          var c = a.readUb(b, e, 4), f = a.readUb(b, e, 4);
          return {fillBits:c, lineBits:f};
        }
        function E(b, e, c, f, h, g) {
          f = c.type = a.readUi8(b, e);
          switch(f) {
            case 0:
              c.color = 22 < h || g ? p(b, e) : r(b, e);
              g && (c.colorMorph = p(b, e));
              break;
            case 16:
            ;
            case 18:
            ;
            case 19:
              c.matrix = C(b, e);
              g && (c.matrixMorph = C(b, e));
              83 === h ? (c.spreadMode = a.readUb(b, e, 2), c.interpolationMode = a.readUb(b, e, 2)) : a.readUb(b, e, 4);
              for (var m = c.count = a.readUb(b, e, 4), d = c.records = [];m--;) {
                var l = {}, q = b, t = e, n = l, k = h, v = g;
                n.ratio = a.readUi8(q, t);
                n.color = 22 < k ? p(q, t) : r(q, t);
                v && (n.ratioMorph = a.readUi8(q, t), n.colorMorph = p(q, t));
                d.push(l);
              }
              19 === f && (c.focalPoint = a.readSi16(b, e), g && (c.focalPointMorph = a.readSi16(b, e)));
              break;
            case 64:
            ;
            case 65:
            ;
            case 66:
            ;
            case 67:
              c.bitmapId = a.readUi16(b, e), c.condition = 64 === f || 67 === f, c.matrix = C(b, e), g && (c.matrixMorph = C(b, e));
          }
        }
        function J(b, e, c) {
          var f = c.type = a.readUi8(b, e);
          switch(f) {
            case 0:
            ;
            case 2:
            ;
            case 3:
            ;
            case 4:
            ;
            case 7:
              var h;
              h = 4 === f || 7 === f ? a.readUi8(b, e) : 1;
              for (var g = c.colors = [], m = h;m--;) {
                g.push(p(b, e));
              }
              3 === f && (c.hightlightColor = p(b, e));
              if (4 === f || 7 === f) {
                for (g = c.ratios = [];h--;) {
                  g.push(a.readUi8(b, e));
                }
              }
              c.blurX = a.readFixed(b, e);
              c.blurY = a.readFixed(b, e);
              2 !== f && (c.angle = a.readFixed(b, e), c.distance = a.readFixed(b, e));
              c.strength = a.readFixed8(b, e);
              c.inner = a.readUb(b, e, 1);
              c.knockout = a.readUb(b, e, 1);
              c.compositeSource = a.readUb(b, e, 1);
              3 === f || 4 === f || 7 === f ? (c.onTop = a.readUb(b, e, 1), c.quality = a.readUb(b, e, 4)) : c.quality = a.readUb(b, e, 5);
              break;
            case 1:
              c.blurX = a.readFixed(b, e);
              c.blurY = a.readFixed(b, e);
              c.quality = a.readUb(b, e, 5);
              a.readUb(b, e, 3);
              break;
            case 5:
              h = c.matrixX = a.readUi8(b, e);
              g = c.matrixY = a.readUi8(b, e);
              c.divisor = a.readFloat(b, e);
              c.bias = a.readFloat(b, e);
              f = c.matrix = [];
              for (h *= g;h--;) {
                f.push(a.readFloat(b, e));
              }
              c.color = p(b, e);
              a.readUb(b, e, 6);
              c.clamp = a.readUb(b, e, 1);
              c.preserveAlpha = a.readUb(b, e, 1);
              break;
            case 6:
              for (c = c.matrix = [], f = 20;f--;) {
                c.push(a.readFloat(b, e));
              }
            ;
          }
        }
        function P(b, a, e, c, f) {
          var h, g;
          g = M(b, a);
          var p = g.fillBits, m = g.lineBits, d = e.records = [];
          do {
            var r = {};
            g = B(b, a, r, c, f, !1, p, m, !1, h);
            e = g.eos;
            p = g.fillBits;
            m = g.lineBits;
            h = g.bits;
            d.push(r);
          } while (!e);
        }
        n.defineImage = l;
        n.defineFont = g;
        n.soundStreamHead = function(b, e, c) {
          var f = {}, h = a.readUi8(b, e);
          f.playbackRate = h >> 2 & 3;
          f.playbackSize = h >> 1 & 1;
          f.playbackType = h & 1;
          var h = a.readUi8(b, e), g = f.streamCompression = h >> 4 & 15;
          f.streamRate = h >> 2 & 3;
          f.streamSize = h >> 1 & 1;
          f.streamType = h & 1;
          f.samplesCount = a.readUi16(b, e);
          2 == g && 2 <= c - e.pos && (f.latencySeek = a.readSi16(b, e));
          return f;
        };
        n.defineBitmap = m;
        n.defineFont2 = h;
        n.defineFont4 = f;
        n.defineScene = b;
        n.rgb = r;
        n.tagHandlers = {0:void 0, 1:void 0, 2:k, 4:v, 5:u, 6:l, 7:c, 8:void 0, 9:void 0, 10:g, 11:q, 12:void 0, 13:void 0, 14:function(b, e, c, f, h, g) {
          c || (c = {});
          c.id = a.readUi16(b, e);
          f = a.readUi8(b, e);
          c.soundFormat = f >> 4 & 15;
          c.soundRate = f >> 2 & 3;
          c.soundSize = f >> 1 & 1;
          c.soundType = f & 1;
          c.samplesCount = a.readUi32(b, e);
          c.soundData = b.subarray(e.pos, g);
          e.pos = g;
          return c;
        }, 15:t, 17:void 0, 18:void 0, 19:void 0, 20:m, 21:l, 22:k, 23:void 0, 24:void 0, 26:v, 28:u, 32:k, 33:q, 34:c, 35:l, 36:m, 37:function(b, c, f, h, g) {
          f || (f = {});
          f.id = a.readUi16(b, c);
          var m = f.bbox = {};
          e(b, c, m, h, g);
          h = a.readUi16(b, c);
          g = f.hasText = h >> 7 & 1;
          f.wordWrap = h >> 6 & 1;
          f.multiline = h >> 5 & 1;
          f.password = h >> 4 & 1;
          f.readonly = h >> 3 & 1;
          var m = f.hasColor = h >> 2 & 1, d = f.hasMaxLength = h >> 1 & 1, r = f.hasFont = h & 1, l = f.hasFontClass = h >> 15 & 1;
          f.autoSize = h >> 14 & 1;
          var q = f.hasLayout = h >> 13 & 1;
          f.noSelect = h >> 12 & 1;
          f.border = h >> 11 & 1;
          f.wasStatic = h >> 10 & 1;
          f.html = h >> 9 & 1;
          f.useOutlines = h >> 8 & 1;
          r && (f.fontId = a.readUi16(b, c));
          l && (f.fontClass = a.readString(b, c, -1));
          r && (f.fontHeight = a.readUi16(b, c));
          m && (f.color = p(b, c));
          d && (f.maxLength = a.readUi16(b, c));
          q && (f.align = a.readUi8(b, c), f.leftMargin = a.readUi16(b, c), f.rightMargin = a.readUi16(b, c), f.indent = a.readSi16(b, c), f.leading = a.readSi16(b, c));
          f.variableName = a.readString(b, c, -1);
          g && (f.initialText = a.readString(b, c, -1));
          return f;
        }, 39:void 0, 43:void 0, 45:void 0, 46:k, 48:h, 56:void 0, 57:void 0, 58:void 0, 59:void 0, 60:void 0, 61:void 0, 62:void 0, 64:void 0, 65:void 0, 66:void 0, 69:void 0, 70:v, 71:void 0, 72:void 0, 73:void 0, 74:void 0, 75:h, 76:void 0, 77:void 0, 78:function(b, c, f, h, g) {
          f || (f = {});
          f.symbolId = a.readUi16(b, c);
          var p = f.splitter = {};
          e(b, c, p, h, g);
          return f;
        }, 82:void 0, 83:k, 84:k, 86:b, 87:function(b, e, c, f, h, g) {
          c || (c = {});
          c.id = a.readUi16(b, e);
          a.readUi32(b, e);
          c.data = b.subarray(e.pos, g);
          e.pos = g;
          return c;
        }, 88:void 0, 89:t, 90:l, 91:f};
        n.readHeader = function(b, e) {
          var c = a.readUb(b, e, 5), f = a.readSb(b, e, c), h = a.readSb(b, e, c), g = a.readSb(b, e, c), c = a.readSb(b, e, c);
          a.align(b, e);
          var p = a.readUi8(b, e), p = a.readUi8(b, e) + p / 256, m = a.readUi16(b, e);
          return {frameRate:p, frameCount:m, bounds:new d.Bounds(f, g, h, c)};
        };
      })(a.LowLevel || (a.LowLevel = {}));
    })(k.Parser || (k.Parser = {}));
  })(d.SWF || (d.SWF = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var n = d.IntegerUtilities.roundToMultipleOfFour, w = d.ArrayUtilities.Inflate;
      (function(a) {
        a[a.FORMAT_COLORMAPPED = 3] = "FORMAT_COLORMAPPED";
        a[a.FORMAT_15BPP = 4] = "FORMAT_15BPP";
        a[a.FORMAT_24BPP = 5] = "FORMAT_24BPP";
      })(a.BitmapFormat || (a.BitmapFormat = {}));
      a.defineBitmap = function(a) {
        k.enterTimeline("defineBitmap");
        var u, l = 0;
        switch(a.format) {
          case 3:
            u = a.width;
            var l = a.height, c = a.hasAlpha, g = n(u) - u, q = c ? 4 : 3, t = n((a.colorTableSize + 1) * q), m = w.inflate(a.bmpData, t + (u + g) * l, !0), h = new Uint32Array(u * l), f = 0, b = 0;
            if (c) {
              for (c = 0;c < l;c++) {
                for (var e = 0;e < u;e++) {
                  var b = m[t++] << 2, r = m[b + 3], p = m[b + 0], C = m[b + 1], b = m[b + 2];
                  h[f++] = b << 24 | C << 16 | p << 8 | r;
                }
                t += g;
              }
            } else {
              for (c = 0;c < l;c++) {
                for (e = 0;e < u;e++) {
                  b = m[t++] * q, r = 255, p = m[b + 0], C = m[b + 1], b = m[b + 2], h[f++] = b << 24 | C << 16 | p << 8 | r;
                }
                t += g;
              }
            }
            u = new Uint8Array(h.buffer);
            l = 1;
            break;
          case 5:
            g = a.width;
            q = a.height;
            l = a.hasAlpha;
            u = w.inflate(a.bmpData, q * g * 4, !0);
            if (!l) {
              l = new Uint32Array(g * q);
              g *= q;
              for (m = q = 0;m < g;m++) {
                q++, h = u[q++], t = u[q++], f = u[q++], l[m] = f << 24 | t << 16 | h << 8 | 255;
              }
              u = new Uint8Array(l.buffer);
            }
            l = 1;
            break;
          case 4:
            d.Debug.notImplemented("parse15BPP"), u = null, l = 1;
        }
        k.leaveTimeline();
        return {definition:{type:"image", id:a.id, width:a.width, height:a.height, mimeType:"application/octet-stream", data:u, dataType:l, image:null}, type:"image"};
      };
    })(k.Parser || (k.Parser = {}));
  })(d.SWF || (d.SWF = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      a.defineButton = function(a, d) {
        for (var k = a.characters, u = {up:[], over:[], down:[], hitTest:[]}, l = 0, c;(c = k[l++]) && !c.eob;) {
          var g = d[c.symbolId];
          g && (g = {symbolId:g.id, code:4, depth:c.depth, flags:c.matrix ? 4 : 0, matrix:c.matrix}, c.stateUp && u.up.push(g), c.stateOver && u.over.push(g), c.stateDown && u.down.push(g), c.stateHitTest && u.hitTest.push(g));
        }
        return {type:"button", id:a.id, buttonActions:a.buttonActions, states:u};
      };
    })(d.Parser || (d.Parser = {}));
  })(d.SWF || (d.SWF = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      function d(a) {
        for (var c = 0;2 <= a;) {
          a /= 2, ++c;
        }
        return l(2, c);
      }
      function k(a) {
        return t(a >> 8 & 255, a & 255);
      }
      function v(a) {
        return k(a >> 16) + k(a);
      }
      function u(a) {
        for (var c = 0, f = 0, b = 0, e = 0, g = 0;g < a.length;g++) {
          var p = a[g];
          if (p) {
            for (var p = p.records, d, l = 0, q = 0, t = 0;t < p.length;t++) {
              d = p[t];
              if (d.type) {
                d.isStraight ? (l += d.deltaX || 0, q += -(d.deltaY || 0)) : (l += d.controlDeltaX, q += -d.controlDeltaY, l += d.anchorDeltaX, q += -d.anchorDeltaY);
              } else {
                if (d.eos) {
                  break;
                }
                d.move && (l = d.moveX, q = -d.moveY);
              }
              c > l && (c = l);
              f > q && (f = q);
              b < l && (b = l);
              e < q && (e = q);
            }
          }
        }
        return 5E3 < Math.max(b - c, e - f);
      }
      var l = Math.pow, c = Math.min, g = Math.max, q = Math.log, t = String.fromCharCode;
      a.defineFont = function(a) {
        var h = "swf-font-" + a.id, f = a.name || h, b = {type:"font", id:a.id, name:f, bold:1 === a.bold, italic:1 === a.italic, codes:null, metrics:null, data:a.data, originalSize:!1}, e = a.glyphs, r = e ? a.glyphCount = e.length : 0;
        if (!r) {
          return b;
        }
        var p = {}, l = [], t = {}, B = [], D, M = !("advance" in a), E = 48 === a.code, J = 75 === a.code;
        M && (a.advance = []);
        D = Math.max.apply(null, a.codes) || 35;
        if (a.codes) {
          for (var P = 0;P < a.codes.length;P++) {
            var y = a.codes[P];
            if (32 > y || y in t) {
              D++, 8232 == D && (D = 8240), y = D;
            }
            l.push(y);
            t[y] = P;
          }
          D = l.concat();
          l.sort(function(b, a) {
            return b - a;
          });
          for (var P = 0, K;void 0 !== (y = l[P++]);) {
            var H = y, A = H;
            for (K = [P - 1];void 0 !== (y = l[P]) && A + 1 === y;) {
              ++A, K.push(P), ++P;
            }
            B.push([H, A, K]);
          }
        } else {
          K = [];
          for (P = 0;P < r;P++) {
            y = 57344 + P, l.push(y), t[y] = P, K.push(P);
          }
          B.push([57344, 57344 + r - 1, K]);
          D = l.concat();
        }
        var z = a.resolution || 1;
        E && u(e) && (z = 20, b.originalSize = !0);
        E = Math.ceil(a.ascent / z) || 1024;
        K = -Math.ceil(a.descent / z) || 0;
        for (var G = a.leading / z || 0, L = p["OS/2"] = "", F = "", S = "", U = "", P = 0, N;N = B[P++];) {
          H = N[0], A = N[1], y = N[2][0], L += k(H), F += k(A), S += k(y - H + 1 & 65535), U += k(0);
        }
        F += "\u00ff\u00ff";
        L += "\u00ff\u00ff";
        S += "\x00\u0001";
        U += "\x00\x00";
        B = B.length + 1;
        P = 2 * d(B);
        H = 2 * B - P;
        P = "\x00\x00" + k(2 * B) + k(P) + k(q(B) / q(2)) + k(H) + F + "\x00\x00" + L + S + U;
        p.cmap = "\x00\x00\x00\u0001\x00\u0003\x00\u0001\x00\x00\x00\f\x00\u0004" + k(P.length + 4) + P;
        var R = "\x00\u0001\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x001\x00", L = "\x00\x00", B = 16, F = 0, U = [], H = [], A = [];
        N = [];
        for (var P = S = 0, T = {};void 0 !== (y = l[P++]);) {
          for (var X = e[t[y]], da = X.records, x = 0, Y = 0, V = "", ba = "", Z = 0, O = [], Z = -1, X = 0;X < da.length;X++) {
            V = da[X];
            if (V.type) {
              0 > Z && (Z = 0, O[Z] = {data:[], commands:[], xMin:0, xMax:0, yMin:0, yMax:0});
              if (V.isStraight) {
                O[Z].commands.push(2);
                var aa = (V.deltaX || 0) / z, ea = -(V.deltaY || 0) / z;
              } else {
                O[Z].commands.push(3), aa = V.controlDeltaX / z, ea = -V.controlDeltaY / z, x += aa, Y += ea, O[Z].data.push(x, Y), aa = V.anchorDeltaX / z, ea = -V.anchorDeltaY / z;
              }
              x += aa;
              Y += ea;
              O[Z].data.push(x, Y);
            } else {
              if (V.eos) {
                break;
              }
              if (V.move) {
                Z++;
                O[Z] = {data:[], commands:[], xMin:0, xMax:0, yMin:0, yMax:0};
                O[Z].commands.push(1);
                var ia = V.moveX / z, V = -V.moveY / z, aa = ia - x, ea = V - Y, x = ia, Y = V;
                O[Z].data.push(x, Y);
              }
            }
            -1 < Z && (O[Z].xMin > x && (O[Z].xMin = x), O[Z].yMin > Y && (O[Z].yMin = Y), O[Z].xMax < x && (O[Z].xMax = x), O[Z].yMax < Y && (O[Z].yMax = Y));
          }
          J || O.sort(function(b, a) {
            return (a.xMax - a.xMin) * (a.yMax - a.yMin) - (b.xMax - b.xMin) * (b.yMax - b.yMin);
          });
          T[y] = O;
        }
        for (P = 0;void 0 !== (y = l[P++]);) {
          for (var X = e[t[y]], da = X.records, O = T[y], ja = 1, Z = 0, aa = Y = V = x = "", y = Y = x = 0, da = -1024, ia = 0, ga = -1024, ba = V = "", Z = 0, Z = -1, ca = [], fa = [], X = 0;X < O.length;X++) {
            ca = ca.concat(O[X].data), fa = fa.concat(O[X].commands);
          }
          for (var Q = Y = x = 0, ma = 0, W = "", O = "", la = 0, Z = 0, ja = 1, ba = "", X = 0;X < fa.length;X++) {
            aa = fa[X], 1 === aa ? (Z && (++ja, ba += k(Z - 1)), Q = ca[la++], ma = ca[la++], aa = Q - x, ea = ma - Y, V += "\u0001", W += k(aa), O += k(ea), x = Q, Y = ma) : 2 === aa ? (Q = ca[la++], ma = ca[la++], aa = Q - x, ea = ma - Y, V += "\u0001", W += k(aa), O += k(ea), x = Q, Y = ma) : 3 === aa && (Q = ca[la++], ma = ca[la++], aa = Q - x, ea = ma - Y, V += "\x00", W += k(aa), O += k(ea), x = Q, Y = ma, Z++, Q = ca[la++], ma = ca[la++], aa = Q - x, ea = ma - Y, V += "\u0001", W += k(aa), 
            O += k(ea), x = Q, Y = ma), Z++, Z > F && (F = Z), y > x && (y = x), ia > Y && (ia = Y), da < x && (da = x), ga < Y && (ga = Y);
          }
          x = ba += k((Z || 1) - 1);
          Y = W;
          aa = O;
          X || (y = da = ia = ga = 0, V += "1");
          X = k(ja) + k(y) + k(ia) + k(da) + k(ga) + x + "\x00\x00" + V + Y + aa;
          X.length & 1 && (X += "\x00");
          R += X;
          L += k(B / 2);
          B += X.length;
          U.push(y);
          H.push(da);
          A.push(ia);
          N.push(ga);
          ja > S && (S = ja);
          Z > F && (F = Z);
          M && a.advance.push((da - y) * z * 1.3);
        }
        L += k(B / 2);
        p.glyf = R;
        J || (P = Math.min.apply(null, A), 0 > P && (K = K || P));
        p["OS/2"] = "\x00\u0001\x00\x00" + k(a.bold ? 700 : 400) + "\x00\u0005\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00ALF " + k((a.italic ? 1 : 0) | (a.bold ? 32 : 0)) + k(l[0]) + k(l[l.length - 1]) + k(E) + k(K) + k(G) + k(E) + k(-K) + "\x00\x00\x00\x00\x00\x00\x00\x00";
        p.head = "\x00\u0001\x00\x00\x00\u0001\x00\x00\x00\x00\x00\x00_\u000f<\u00f5\x00\x0B\u0004\x00\x00\x00\x00\x00" + v(Date.now()) + "\x00\x00\x00\x00" + v(Date.now()) + k(c.apply(null, U)) + k(c.apply(null, A)) + k(g.apply(null, H)) + k(g.apply(null, N)) + k((a.italic ? 2 : 0) | (a.bold ? 1 : 0)) + "\x00\b\x00\u0002\x00\x00\x00\x00";
        l = a.advance;
        p.hhea = "\x00\u0001\x00\x00" + k(E) + k(K) + k(G) + k(l ? g.apply(null, l) : 1024) + "\x00\x00\x00\x00\u0003\u00b8\x00\u0001\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + k(r + 1);
        e = "\x00\x00\x00\x00";
        for (P = 0;P < r;++P) {
          e += k(l ? l[P] / z : 1024) + "\x00\x00";
        }
        p.hmtx = e;
        if (a.kerning && a.kerning.length) {
          l = a.kerning;
          z = l.length;
          P = 2 * d(z);
          z = "\x00\x00\x00\u0001\x00\x00" + k(14 + 6 * z) + "\x00\u0001" + k(z) + k(P) + k(q(z) / q(2)) + k(2 * z - P);
          for (P = 0;V = l[P++];) {
            z += k(t[V.code1]) + k(t[V.code2]) + k(V.adjustment);
          }
          p.kern = z;
        }
        p.loca = L;
        p.maxp = "\x00\u0001\x00\x00" + k(r + 1) + k(F) + k(S) + "\x00\x00\x00\x00\x00\u0001\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";
        P = f.replace(/ /g, "");
        h = [a.copyright || "Original licence", f, "Unknown", h, f, "1.0", P, "Unknown", "Unknown", "Unknown"];
        P = h.length;
        a = "\x00\x00" + k(P) + k(12 * P + 6);
        for (P = B = 0;f = h[P++];) {
          a += "\x00\u0001\x00\x00\x00\x00" + k(P - 1) + k(f.length) + k(B), B += f.length;
        }
        p.name = a + h.join("");
        p.post = "\x00\u0003\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";
        h = Object.keys(p);
        P = h.length;
        f = "\x00\u0001\x00\x00" + k(P) + "\x00\u0080\x00\u0003\x00 ";
        r = "";
        B = 16 * P + f.length;
        for (P = 0;a = h[P++];) {
          t = p[a];
          l = t.length;
          for (f += a + "\x00\x00\x00\x00" + v(B) + v(l);l & 3;) {
            t += "\x00", ++l;
          }
          for (r += t;B & 3;) {
            ++B;
          }
          B += l;
        }
        p = f + r;
        E = {ascent:E / 1024, descent:-K / 1024, leading:G / 1024};
        K = new Uint8Array(p.length);
        for (P = 0;P < p.length;P++) {
          K[P] = p.charCodeAt(P) & 255;
        }
        b.codes = D;
        b.metrics = E;
        b.data = K;
        return b;
      };
    })(d.Parser || (d.Parser = {}));
  })(d.SWF || (d.SWF = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      function n(a, g) {
        return a[g] << 8 | a[g + 1];
      }
      function w(a, g, d) {
        var l = 0, m = g.length, h;
        do {
          for (var f = l;l < m && 255 !== g[l];) {
            ++l;
          }
          for (;l < m && 255 === g[l];) {
            ++l;
          }
          h = g[l++];
          if (218 === h) {
            l = m;
          } else {
            if (217 === h) {
              l += 2;
              continue;
            } else {
              if (208 > h || 216 < h) {
                var b = n(g, l);
                192 <= h && 195 >= h && (a.height = n(g, l + 3), a.width = n(g, l + 5));
                l += b;
              }
            }
          }
          d.push(g.subarray(f, l));
        } while (l < m);
        return d;
      }
      function v(a, g) {
        if (73 === g[12] && 72 === g[13] && 68 === g[14] && 82 === g[15]) {
          a.width = g[16] << 24 | g[17] << 16 | g[18] << 8 | g[19];
          a.height = g[20] << 24 | g[21] << 16 | g[22] << 8 | g[23];
          var d = g[26];
          a.hasAlpha = 4 === d || 6 === d;
        }
      }
      function u(a) {
        for (var g = 0, d = 0;d < a.length;d++) {
          g += a[d].length;
        }
        for (var g = new Uint8Array(g), l = 0, d = 0;d < a.length;d++) {
          var m = a[d];
          g.set(m, l);
          l += m.length;
        }
        return g;
      }
      var l = d.ArrayUtilities.Inflate;
      a.parseJpegChunks = w;
      a.parsePngHeaders = v;
      a.defineImage = function(a) {
        k.enterTimeline("defineImage");
        var g = {type:"image", id:a.id, mimeType:a.mimeType}, q = a.imgData;
        if ("image/jpeg" === a.mimeType) {
          var t = a.alphaData;
          if (t) {
            a = new d.JPEG.JpegImage;
            a.parse(u(w(g, q, [])));
            var m = g.width, q = m * g.height, h;
            try {
              h = l.inflate(t, q, !0);
            } catch (f) {
              h = new Uint8Array(m);
            }
            t = g.data = new Uint8ClampedArray(4 * q);
            a.copyToImageData(g);
            a = 0;
            for (m = 3;a < q;a++, m += 4) {
              t[m] = h[a];
            }
            g.mimeType = "application/octet-stream";
            g.dataType = 3;
          } else {
            h = [], a.jpegTables && h.push(a.jpegTables), w(g, q, h), a.jpegTables && 0 < a.jpegTables.byteLength && (h[1] = h[1].subarray(2)), g.data = u(h), g.dataType = 4;
          }
        } else {
          v(g, q), g.data = q, g.dataType = 5;
        }
        k.leaveTimeline();
        return g;
      };
    })(k.Parser || (k.Parser = {}));
  })(d.SWF || (d.SWF = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      a.defineLabel = function(a) {
        return {type:"label", id:a.id, fillBounds:a.bbox, matrix:a.matrix, tag:{hasText:!0, initialText:"", html:!0, readonly:!0}, records:a.records, coords:null, static:!0, require:null};
      };
    })(d.Parser || (d.Parser = {}));
  })(d.SWF || (d.SWF = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      function n(b, a, e, c) {
        if (b) {
          if (a.fill0) {
            if (c = c[a.fill0 - 1], a.fill1 || a.line) {
              c.addSegment(b.toReversed());
            } else {
              b.isReversed = !0;
              return;
            }
          }
          a.line && a.fill1 && (c = e[a.line - 1], c.addSegment(b.clone()));
        }
      }
      function k(a, e, c, f) {
        c && (a.morph = v(a, e, f));
        if (e) {
          a.miterLimit = 2 * (a.miterLimitFactor || 1.5);
          if (!a.color && a.hasFill) {
            var h = k(a.fillStyle, !1, !1, f);
            a.type = h.type;
            a.transform = h.transform;
            a.colors = h.colors;
            a.ratios = h.ratios;
            a.focalPoint = h.focalPoint;
            a.bitmapId = h.bitmapId;
            a.bitmapIndex = h.bitmapIndex;
            a.repeat = h.repeat;
            a.fillStyle = null;
          } else {
            a.type = 0;
          }
          return a;
        }
        if (void 0 === a.type || 0 === a.type) {
          return a;
        }
        switch(a.type) {
          case 16:
          ;
          case 18:
          ;
          case 19:
            h = a.records;
            e = a.colors = [];
            c = a.ratios = [];
            for (f = 0;f < h.length;f++) {
              var g = h[f];
              e.push(g.color);
              c.push(g.ratio);
            }
            h = 819.2;
            break;
          case 64:
          ;
          case 65:
          ;
          case 66:
          ;
          case 67:
            a.smooth = 66 !== a.type && 67 !== a.type, a.repeat = 65 !== a.type && 67 !== a.type, a.bitmapIndex = f.length, f.push(a.bitmapId), h = .05;
        }
        if (!a.matrix) {
          return a.transform = b, a;
        }
        e = a.matrix;
        a.transform = {a:e.a * h, b:e.b * h, c:e.c * h, d:e.d * h, tx:e.tx / 20, ty:e.ty / 20};
        a.matrix = null;
        return a;
      }
      function v(a, e, c) {
        var f = Object.create(a);
        if (e) {
          return f.width = a.widthMorph, !a.color && a.hasFill ? (a = v(a.fillStyle, !1, c), f.transform = a.transform, f.colors = a.colors, f.ratios = a.ratios) : f.color = a.colorMorph, f;
        }
        if (void 0 === a.type) {
          return f;
        }
        if (0 === a.type) {
          return f.color = a.colorMorph, f;
        }
        var h;
        switch(a.type) {
          case 16:
          ;
          case 18:
          ;
          case 19:
            h = a.records;
            e = f.colors = [];
            c = f.ratios = [];
            for (var g = 0;g < h.length;g++) {
              var m = h[g];
              e.push(m.colorMorph);
              c.push(m.ratioMorph);
            }
            h = 819.2;
            break;
          case 64:
          ;
          case 65:
          ;
          case 66:
          ;
          case 67:
            h = .05;
        }
        if (!a.matrix) {
          return f.transform = b, f;
        }
        a = a.matrixMorph;
        f.transform = {a:a.a * h, b:a.b * h, c:a.c * h, d:a.d * h, tx:a.tx / 20, ty:a.ty / 20};
        return f;
      }
      function u(b, a, e, c) {
        for (var f = [], h = 0;h < b.length;h++) {
          var g = k(b[h], a, e, c);
          f[h] = a ? new r(null, g) : new r(g, null);
        }
        return f;
      }
      function l(b, a) {
        var e = b.noHscale ? b.noVscale ? 0 : 2 : b.noVscale ? 3 : 1, c = m(b.width, 0, 5100) | 0;
        a.lineStyle(c, b.color, b.pixelHinting, e, b.endCapsStyle, b.jointStyle, b.miterLimit);
      }
      function c(b, a) {
        var e = m(b.width, 0, 5100) | 0;
        a.writeMorphLineStyle(e, b.color);
      }
      function g(b, a, e) {
        e.beginGradient(b, a.colors, a.ratios, 16 === a.type ? 16 : 18, a.transform, a.spreadMethod, a.interpolationMode, a.focalPoint / 2 | 0);
      }
      var q = d.ArrayUtilities.DataBuffer, t = d.ShapeData, m = d.NumberUtilities.clamp, h = Array.prototype.push, f;
      (function(b) {
        b[b.Solid = 0] = "Solid";
        b[b.LinearGradient = 16] = "LinearGradient";
        b[b.RadialGradient = 18] = "RadialGradient";
        b[b.FocalRadialGradient = 19] = "FocalRadialGradient";
        b[b.RepeatingBitmap = 64] = "RepeatingBitmap";
        b[b.ClippedBitmap = 65] = "ClippedBitmap";
        b[b.NonsmoothedRepeatingBitmap = 66] = "NonsmoothedRepeatingBitmap";
        b[b.NonsmoothedClippedBitmap = 67] = "NonsmoothedClippedBitmap";
      })(f || (f = {}));
      var b = {a:1, b:0, c:0, d:1, tx:0, ty:0};
      a.defineShape = function(b) {
        for (var a = [], c = u(b.fillStyles, !1, !!b.recordsMorph, a), f = u(b.lineStyles, !0, !!b.recordsMorph, a), g = b.records, m = f, d = b.recordsMorph || null, f = null !== d, l = {fill0:0, fill1:0, line:0}, v = null, y, K, H = g.length - 1, A = 0, z = 0, G = 0, L = 0, F, S = 0, U = 0;S < H;S++) {
          var N = g[S], R;
          f && (R = d[U++]);
          if (0 === N.type) {
            v && n(v, l, m, c), N.hasNewStyles && (y || (y = []), h.apply(y, c), c = u(N.fillStyles, !1, f, a), h.apply(y, m), m = u(N.lineStyles, !0, f, a), K && (y.push(K), K = null), l = {fill0:0, fill1:0, line:0}), N.hasFillStyle0 && (l.fill0 = N.fillStyle0), N.hasFillStyle1 && (l.fill1 = N.fillStyle1), N.hasLineStyle && (l.line = N.lineStyle), l.fill1 ? F = c[l.fill1 - 1] : l.line ? F = m[l.line - 1] : l.fill0 && (F = c[l.fill0 - 1]), N.move && (A = N.moveX | 0, z = N.moveY | 0), F && (v = e.FromDefaults(f), 
            F.addSegment(v), f ? (0 === R.type ? (G = R.moveX | 0, L = R.moveY | 0) : (G = A, L = z, U--), v.morphMoveTo(A, z, G, L)) : v.moveTo(A, z));
          } else {
            v || (K || (K = new r(null, k({color:{red:0, green:0, blue:0, alpha:0}, width:20}, !0, f, a))), v = e.FromDefaults(f), K.addSegment(v), f ? v.morphMoveTo(A, z, G, L) : v.moveTo(A, z));
            if (f) {
              for (;R && 0 === R.type;) {
                R = d[U++];
              }
              R || (R = N);
            }
            if (!N.isStraight || f && !R.isStraight) {
              var T, X, da;
              N.isStraight ? (da = N.deltaX | 0, N = N.deltaY | 0, T = A + (da >> 1), X = z + (N >> 1), A += da, z += N) : (T = A + N.controlDeltaX | 0, X = z + N.controlDeltaY | 0, A = T + N.anchorDeltaX | 0, z = X + N.anchorDeltaY | 0);
              if (f) {
                if (R.isStraight) {
                  da = R.deltaX | 0, N = R.deltaY | 0, x = G + (da >> 1), Y = L + (N >> 1), G += da, L += N;
                } else {
                  var x = G + R.controlDeltaX | 0, Y = L + R.controlDeltaY | 0, G = x + R.anchorDeltaX | 0, L = Y + R.anchorDeltaY | 0
                }
                v.morphCurveTo(T, X, A, z, x, Y, G, L);
              } else {
                v.curveTo(T, X, A, z);
              }
            } else {
              A += N.deltaX | 0, z += N.deltaY | 0, f ? (G += R.deltaX | 0, L += R.deltaY | 0, v.morphLineTo(A, z, G, L)) : v.lineTo(A, z);
            }
          }
        }
        n(v, l, m, c);
        y ? h.apply(y, c) : y = c;
        h.apply(y, m);
        K && y.push(K);
        g = new t;
        f && (g.morphCoordinates = new Int32Array(g.coordinates.length), g.morphStyles = new q(16));
        for (S = 0;S < y.length;S++) {
          y[S].serialize(g);
        }
        return {type:b.isMorph ? "morphshape" : "shape", id:b.id, fillBounds:b.fillBounds, lineBounds:b.lineBounds, morphFillBounds:b.fillBoundsMorph || null, morphLineBounds:b.lineBoundsMorph || null, shape:g.toPlainObject(), transferables:g.buffers, require:a.length ? a : null};
      };
      var e = function() {
        function b(a, e, c, f, h, g) {
          this.commands = a;
          this.data = e;
          this.morphData = c;
          this.prev = f;
          this.next = h;
          this.isReversed = g;
          this.id = b._counter++;
        }
        b.FromDefaults = function(a) {
          var e = new q, c = new q;
          e.endian = c.endian = "auto";
          var f = null;
          a && (f = new q, f.endian = "auto");
          return new b(e, c, f, null, null, !1);
        };
        b.prototype.moveTo = function(b, a) {
          this.commands.writeUnsignedByte(9);
          this.data.write2Ints(b, a);
        };
        b.prototype.morphMoveTo = function(b, a, e, c) {
          this.moveTo(b, a);
          this.morphData.write2Ints(e, c);
        };
        b.prototype.lineTo = function(b, a) {
          this.commands.writeUnsignedByte(10);
          this.data.write2Ints(b, a);
        };
        b.prototype.morphLineTo = function(b, a, e, c) {
          this.lineTo(b, a);
          this.morphData.write2Ints(e, c);
        };
        b.prototype.curveTo = function(b, a, e, c) {
          this.commands.writeUnsignedByte(11);
          this.data.write4Ints(b, a, e, c);
        };
        b.prototype.morphCurveTo = function(b, a, e, c, f, h, g, m) {
          this.curveTo(b, a, e, c);
          this.morphData.write4Ints(f, h, g, m);
        };
        b.prototype.toReversed = function() {
          return new b(this.commands, this.data, this.morphData, null, null, !0);
        };
        b.prototype.clone = function() {
          return new b(this.commands, this.data, this.morphData, null, null, this.isReversed);
        };
        b.prototype.storeStartAndEnd = function() {
          var b = this.data.ints, a = b[0] + "," + b[1], e = (this.data.length >> 2) - 2, b = b[e] + "," + b[e + 1];
          this.isReversed ? (this.startPoint = b, this.endPoint = a) : (this.startPoint = a, this.endPoint = b);
        };
        b.prototype.connectsTo = function(b) {
          return this.endPoint === b.startPoint;
        };
        b.prototype.startConnectsTo = function(b) {
          return this.startPoint === b.startPoint;
        };
        b.prototype.flipDirection = function() {
          var b = "", b = this.startPoint;
          this.startPoint = this.endPoint;
          this.endPoint = b;
          this.isReversed = !this.isReversed;
        };
        b.prototype.serialize = function(b, a) {
          if (this.isReversed) {
            this._serializeReversed(b, a);
          } else {
            var e = this.commands.bytes, c = this.data.length >> 2, f = this.morphData ? this.morphData.ints : null, h = this.data.ints, g = 0;
            h[0] === a.x && h[1] === a.y && g++;
            for (var m = this.commands.length, p = 2 * g;g < m;g++) {
              p = this._writeCommand(e[g], p, h, f, b);
            }
            a.x = h[c - 2];
            a.y = h[c - 1];
          }
        };
        b.prototype._serializeReversed = function(b, a) {
          var e = this.commands.length, c = (this.data.length >> 2) - 2, f = this.commands.bytes, h = this.data.ints, g = this.morphData ? this.morphData.ints : null;
          h[c] === a.x && h[c + 1] === a.y || this._writeCommand(9, c, h, g, b);
          if (1 !== e) {
            for (;1 < e--;) {
              var c = c - 2, m = f[e];
              b.writeCommandAndCoordinates(m, h[c], h[c + 1]);
              g && b.writeMorphCoordinates(g[c], g[c + 1]);
              11 === m && (c -= 2, b.writeCoordinates(h[c], h[c + 1]), g && b.writeMorphCoordinates(g[c], g[c + 1]));
            }
          }
          a.x = h[0];
          a.y = h[1];
        };
        b.prototype._writeCommand = function(b, a, e, c, f) {
          f.writeCommandAndCoordinates(b, e[a++], e[a++]);
          c && f.writeMorphCoordinates(c[a - 2], c[a - 1]);
          11 === b && (f.writeCoordinates(e[a++], e[a++]), c && f.writeMorphCoordinates(c[a - 2], c[a - 1]));
          return a;
        };
        b._counter = 0;
        return b;
      }(), r = function() {
        function b(a, e) {
          this.fillStyle = a;
          this.lineStyle = e;
          this._head = null;
        }
        b.prototype.addSegment = function(b) {
          var a = this._head;
          a && (a.next = b, b.prev = a);
          this._head = b;
        };
        b.prototype.removeSegment = function(b) {
          b.prev && (b.prev.next = b.next);
          b.next && (b.next.prev = b.prev);
        };
        b.prototype.insertSegment = function(b, a) {
          var e = a.prev;
          b.prev = e;
          b.next = a;
          e && (e.next = b);
          a.prev = b;
        };
        b.prototype.head = function() {
          return this._head;
        };
        b.prototype.serialize = function(b) {
          var a = this.head();
          if (a) {
            for (;a;) {
              a.storeStartAndEnd(), a = a.prev;
            }
            for (var e = this.head(), f = e, h = a = null, m = e.prev;e;) {
              for (;m;) {
                m.startConnectsTo(e) && m.flipDirection(), m.connectsTo(e) ? (m.next !== e && (this.removeSegment(m), this.insertSegment(m, e)), e = m, m = e.prev) : (m.startConnectsTo(f) && m.flipDirection(), f.connectsTo(m) ? (this.removeSegment(m), f.next = m, m = m.prev, f.next.prev = f, f.next.next = null, f = f.next) : m = m.prev);
              }
              m = e.prev;
              a ? (h.next = e, e.prev = h, h = f, h.next = null) : (a = e, h = f);
              if (!m) {
                break;
              }
              e = f = m;
              m = e.prev;
            }
            if (this.fillStyle) {
              switch(m = this.fillStyle, e = m.morph, m.type) {
                case 0:
                  b.beginFill(m.color);
                  e && b.writeMorphFill(e.color);
                  break;
                case 16:
                ;
                case 18:
                ;
                case 19:
                  g(2, m, b);
                  e && b.writeMorphGradient(e.colors, e.ratios, e.transform);
                  break;
                case 65:
                ;
                case 64:
                ;
                case 67:
                ;
                case 66:
                  b.beginBitmap(3, m.bitmapIndex, m.transform, m.repeat, m.smooth), e && b.writeMorphBitmap(e.transform);
              }
            } else {
              switch(m = this.lineStyle, e = m.morph, m.type) {
                case 0:
                  l(m, b);
                  e && c(e, b);
                  break;
                case 16:
                ;
                case 18:
                ;
                case 19:
                  l(m, b);
                  g(6, m, b);
                  e && (c(e, b), b.writeMorphGradient(e.colors, e.ratios, e.transform));
                  break;
                case 65:
                ;
                case 64:
                ;
                case 67:
                ;
                case 66:
                  l(m, b), b.beginBitmap(7, m.bitmapIndex, m.transform, m.repeat, m.smooth), e && (c(e, b), b.writeMorphBitmap(e.transform));
              }
            }
            e = {x:0, y:0};
            for (m = a;m;) {
              m.serialize(b, e), m = m.next;
            }
            this.fillStyle ? b.endFill() : b.endLine();
            return b;
          }
        };
        return b;
      }();
    })(k.Parser || (k.Parser = {}));
  })(d.SWF || (d.SWF = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      function d(b, a, c, f, h) {
        var g = f >> 3, m = c * a * g, g = c * g, l = b.length + (b.length & 1), t = new ArrayBuffer(q.length + l), n = new Uint8Array(t);
        n.set(q);
        if (h) {
          h = 0;
          for (var k = q.length;h < b.length;h += 2, k += 2) {
            n[k] = b[h + 1], n[k + 1] = b[h];
          }
        } else {
          n.set(b, q.length);
        }
        b = new DataView(t);
        b.setUint32(4, l + 36, !0);
        b.setUint16(22, c, !0);
        b.setUint32(24, a, !0);
        b.setUint32(28, m, !0);
        b.setUint16(32, g, !0);
        b.setUint16(34, f, !0);
        b.setUint32(40, l, !0);
        return {data:n, mimeType:"audio/wav"};
      }
      function k(b, a, c) {
        function f(a) {
          for (;d < a;) {
            g = g << 8 | b[h++], d += 8;
          }
          d -= a;
          return g >>> d & (1 << a) - 1;
        }
        for (var h = 0, g = 0, d = 0, l = 0, q = f(2), n = t[q];l < a.length;) {
          var v = a[l++] = f(16) << 16 >> 16, u, w = f(6), K;
          1 < c && (u = a[l++] = f(16) << 16 >> 16, K = f(6));
          for (var H = 1 << q + 1, A = 0;4095 > A;A++) {
            for (var z = f(q + 2), G = m[w], L = 0, F = H >> 1;F;F >>= 1, G >>= 1) {
              z & F && (L += G);
            }
            v += (z & H ? -1 : 1) * (L + G);
            a[l++] = v = -32768 > v ? -32768 : 32767 < v ? 32767 : v;
            w += n[z & ~H];
            w = 0 > w ? 0 : 88 < w ? 88 : w;
            if (1 < c) {
              z = f(q + 2);
              G = m[K];
              L = 0;
              for (F = H >> 1;F;F >>= 1, G >>= 1) {
                z & F && (L += G);
              }
              u += (z & H ? -1 : 1) * (L + G);
              a[l++] = u = -32768 > u ? -32768 : 32767 < u ? 32767 : u;
              K += n[z & ~H];
              K = 0 > K ? 0 : 88 < K ? 88 : K;
            }
          }
        }
      }
      function v(b) {
        for (var a = new Float32Array(b.length), c = 0;c < a.length;c++) {
          a[c] = (b[c] - 128) / 128;
        }
        this.currentSample += a.length / this.channels;
        return {streamId:this.streamId, samplesCount:a.length / this.channels, pcm:a};
      }
      function u(b) {
        for (var a = new Float32Array(b.length / 2), c = 0, f = 0;c < a.length;c++, f += 2) {
          a[c] = (b[f] << 24 | b[f + 1] << 16) / 2147483648;
        }
        this.currentSample += a.length / this.channels;
        return {streamId:this.streamId, samplesCount:a.length / this.channels, pcm:a};
      }
      function l(b) {
        for (var a = new Float32Array(b.length / 2), c = 0, f = 0;c < a.length;c++, f += 2) {
          a[c] = (b[f + 1] << 24 | b[f] << 16) / 2147483648;
        }
        this.currentSample += a.length / this.channels;
        return {streamId:this.streamId, samplesCount:a.length / this.channels, pcm:a};
      }
      function c(b) {
        var a = b[1] << 8 | b[0], c = b[3] << 8 | b[2];
        this.currentSample += a;
        return {streamId:this.streamId, samplesCount:a, data:new Uint8Array(b.subarray(4)), seek:c};
      }
      var g = [5512, 11250, 22500, 44100], q = new Uint8Array([82, 73, 70, 70, 0, 0, 0, 0, 87, 65, 86, 69, 102, 109, 116, 32, 16, 0, 0, 0, 1, 0, 2, 0, 68, 172, 0, 0, 16, 177, 2, 0, 4, 0, 16, 0, 100, 97, 116, 97, 0, 0, 0, 0]);
      a.defineSound = function(b) {
        var a = 1 == b.soundType ? 2 : 1, c = b.samplesCount, f = g[b.soundRate], h = b.soundData, m, l;
        switch(b.soundFormat) {
          case 0:
            m = new Float32Array(c * a);
            if (1 == b.soundSize) {
              for (l = c = 0;c < m.length;c++, l += 2) {
                m[c] = (h[l] << 24 | h[l + 1] << 16) / 2147483648;
              }
              l = d(h, f, a, 16, !0);
            } else {
              for (c = 0;c < m.length;c++) {
                m[c] = (h[c] - 128) / 128;
              }
              l = d(h, f, a, 8, !1);
            }
            break;
          case 3:
            m = new Float32Array(c * a);
            if (1 == b.soundSize) {
              for (l = c = 0;c < m.length;c++, l += 2) {
                m[c] = (h[l + 1] << 24 | h[l] << 16) / 2147483648;
              }
              l = d(h, f, a, 16, !1);
            } else {
              for (c = 0;c < m.length;c++) {
                m[c] = (h[c] - 128) / 128;
              }
              l = d(h, f, a, 8, !1);
            }
            break;
          case 2:
            l = {data:new Uint8Array(h.subarray(2)), mimeType:"audio/mpeg"};
            break;
          case 1:
            l = new Int16Array(c * a);
            k(h, l, a);
            m = new Float32Array(c * a);
            for (c = 0;c < m.length;c++) {
              m[c] = l[c] / 32768;
            }
            l = d(new Uint8Array(l.buffer), f, a, 16, !(new Uint8Array((new Uint16Array([1])).buffer))[0]);
        }
        b = {type:"sound", id:b.id, sampleRate:f, channels:a, pcm:m, packaged:null};
        l && (b.packaged = l);
        return b;
      };
      var t = [[-1, 2], [-1, -1, 2, 4], [-1, -1, -1, -1, 2, 4, 6, 8], [-1, -1, -1, -1, -1, -1, -1, -1, 1, 2, 4, 6, 8, 10, 13, 16]], m = [7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19, 21, 23, 25, 28, 31, 34, 37, 41, 45, 50, 55, 60, 66, 73, 80, 88, 97, 107, 118, 130, 143, 157, 173, 190, 209, 230, 253, 279, 307, 337, 371, 408, 449, 494, 544, 598, 658, 724, 796, 876, 963, 1060, 1166, 1282, 1411, 1552, 1707, 1878, 2066, 2272, 2499, 2749, 3024, 3327, 3660, 4026, 4428, 4871, 5358, 5894, 6484, 7132, 7845, 8630, 
      9493, 10442, 11487, 12635, 13899, 15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767], h = 0, f = function() {
        function b(b, a, c) {
          this.streamId = h++;
          this.samplesCount = b;
          this.sampleRate = a;
          this.channels = c;
          this.format = null;
          this.currentSample = 0;
        }
        b.FromTag = function(a) {
          var f = new b(a.samplesCount, g[a.streamRate], 1 == a.streamType ? 2 : 1);
          switch(a.streamCompression) {
            case 0:
            ;
            case 3:
              f.format = "wave";
              f.decode = 1 == a.soundSize ? 0 === a.streamCompression ? u : l : v;
              break;
            case 2:
              f.format = "mp3";
              f.decode = c;
              break;
            default:
              return null;
          }
          return f;
        };
        return b;
      }();
      a.SoundStream = f;
    })(d.Parser || (d.Parser = {}));
  })(d.SWF || (d.SWF = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      a.defineText = function(a) {
        return {type:"text", id:a.id, fillBounds:a.bbox, variableName:a.variableName, tag:a, bold:!1, italic:!1};
      };
    })(d.Parser || (d.Parser = {}));
  })(d.SWF || (d.SWF = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    k.timelineBuffer = new d.Tools.Profiler.TimelineBuffer("Parser");
    k.enterTimeline = function(a, d) {
    };
    k.leaveTimeline = function(a) {
    };
  })(d.SWF || (d.SWF = {}));
})(Shumway || (Shumway = {}));
var Shumway$$inline_720 = Shumway || (Shumway = {}), SWF$$inline_721 = Shumway$$inline_720.SWF || (Shumway$$inline_720.SWF = {}), Option$$inline_722 = Shumway$$inline_720.Options.Option;
SWF$$inline_721.parserOptions = Shumway$$inline_720.Settings.shumwayOptions.register(new Shumway$$inline_720.Options.OptionSet("Parser Options"));
SWF$$inline_721.traceLevel = SWF$$inline_721.parserOptions.register(new Option$$inline_722("parsertracelevel", "Parser Trace Level", "number", 0, "Parser Trace Level"));
(function(d) {
  (function(d) {
    function a(a, g) {
      for (var d = 0, l = [], m, h, f = 16;0 < f && !a[f - 1];) {
        f--;
      }
      l.push({children:[], index:0});
      var b = l[0], e;
      for (m = 0;m < f;m++) {
        for (h = 0;h < a[m];h++) {
          b = l.pop();
          for (b.children[b.index] = g[d];0 < b.index;) {
            b = l.pop();
          }
          b.index++;
          for (l.push(b);l.length <= m;) {
            l.push(e = {children:[], index:0}), b.children[b.index] = e.children, b = e;
          }
          d++;
        }
        m + 1 < f && (l.push(e = {children:[], index:0}), b.children[b.index] = e.children, b = e);
      }
      return l[0].children;
    }
    function n(a, g, d, l, m, h, f, b, e) {
      function r() {
        if (0 < H) {
          return H--, K >> H & 1;
        }
        K = a[g++];
        if (255 == K && a[g++]) {
          return H = 31, K = 0, g -= 2, 0;
        }
        H = 7;
        return K >>> 7;
      }
      function p(b) {
        for (var a;null !== (a = r());) {
          b = b[a];
          if ("number" === typeof b) {
            return b;
          }
          if ("object" !== typeof b) {
            return 0;
          }
        }
        return null;
      }
      function n(b) {
        for (var a = 0;0 < b;) {
          var e = r();
          if (null === e) {
            return;
          }
          a = a << 1 | e;
          b--;
        }
        return a;
      }
      function k(b) {
        if (1 === b) {
          return 1 === r() ? 1 : -1;
        }
        var a = n(b);
        return a >= 1 << b - 1 ? a : a + (-1 << b) + 1;
      }
      function v(b, a) {
        var e = p(b.huffmanTableDC), e = 0 === e ? 0 : k(e);
        b.blockData[a] = b.pred += e;
        for (e = 1;64 > e;) {
          var c = p(b.huffmanTableAC), f = c & 15, c = c >> 4;
          if (0 === f) {
            if (15 > c) {
              break;
            }
            e += 16;
          } else {
            e += c, b.blockData[a + u[e]] = k(f), e++;
          }
        }
      }
      function w(b, a) {
        var c = p(b.huffmanTableDC), c = 0 === c ? 0 : k(c) << e;
        b.blockData[a] = b.pred += c;
      }
      function M(b, a) {
        b.blockData[a] |= r() << e;
      }
      function E(b, a) {
        if (0 < A) {
          A--;
        } else {
          for (var c = h;c <= f;) {
            var g = p(b.huffmanTableAC), m = g & 15, g = g >> 4;
            if (0 === m) {
              if (15 > g) {
                A = n(g) + (1 << g) - 1;
                break;
              }
              c += 16;
            } else {
              c += g, b.blockData[a + u[c]] = k(m) * (1 << e), c++;
            }
          }
        }
      }
      function J(b, a) {
        for (var c = h, g = 0, m;c <= f;) {
          m = u[c];
          switch(z) {
            case 0:
              g = p(b.huffmanTableAC);
              m = g & 15;
              g >>= 4;
              if (0 === m) {
                15 > g ? (A = n(g) + (1 << g), z = 4) : (g = 16, z = 1);
              } else {
                if (1 !== m) {
                  throw "invalid ACn encoding";
                }
                G = k(m);
                z = g ? 2 : 3;
              }
              continue;
            case 1:
            ;
            case 2:
              b.blockData[a + m] ? b.blockData[a + m] += r() << e : (g--, 0 === g && (z = 2 == z ? 3 : 0));
              break;
            case 3:
              b.blockData[a + m] ? b.blockData[a + m] += r() << e : (b.blockData[a + m] = G << e, z = 0);
              break;
            case 4:
              b.blockData[a + m] && (b.blockData[a + m] += r() << e);
          }
          c++;
        }
        4 === z && (A--, 0 === A && (z = 0));
      }
      var P = d.mcusPerLine, y = g, K = 0, H = 0, A = 0, z = 0, G, L = l.length, F, S, U, N, R;
      b = d.progressive ? 0 === h ? 0 === b ? w : M : 0 === b ? E : J : v;
      var T = 0;
      d = 1 == L ? l[0].blocksPerLine * l[0].blocksPerColumn : P * d.mcusPerColumn;
      m || (m = d);
      for (var X, da;T < d;) {
        for (S = 0;S < L;S++) {
          l[S].pred = 0;
        }
        A = 0;
        if (1 == L) {
          for (F = l[0], R = 0;R < m;R++) {
            b(F, 64 * ((F.blocksPerLine + 1) * (T / F.blocksPerLine | 0) + T % F.blocksPerLine)), T++;
          }
        } else {
          for (R = 0;R < m;R++) {
            for (S = 0;S < L;S++) {
              for (F = l[S], X = F.h, da = F.v, U = 0;U < da;U++) {
                for (N = 0;N < X;N++) {
                  b(F, 64 * ((F.blocksPerLine + 1) * ((T / P | 0) * F.v + U) + (T % P * F.h + N)));
                }
              }
            }
            T++;
          }
        }
        H = 0;
        F = a[g] << 8 | a[g + 1];
        if (65280 >= F) {
          throw "marker was not found";
        }
        if (65488 <= F && 65495 >= F) {
          g += 2;
        } else {
          break;
        }
      }
      return g - y;
    }
    function w(a, g) {
      for (var d = g.blocksPerLine, l = g.blocksPerColumn, m = new Int32Array(64), h = 0;h < l;h++) {
        for (var f = 0;f < d;f++) {
          for (var b = g, e = 64 * ((g.blocksPerLine + 1) * h + f), r = m, p = b.quantizationTable, n = void 0, k = void 0, v = void 0, u = void 0, w = void 0, E = void 0, J = void 0, P = void 0, y = void 0, K = void 0, K = 0;64 > K;K++) {
            r[K] = b.blockData[e + K] * p[K];
          }
          for (K = 0;8 > K;++K) {
            p = 8 * K, 0 === r[1 + p] && 0 === r[2 + p] && 0 === r[3 + p] && 0 === r[4 + p] && 0 === r[5 + p] && 0 === r[6 + p] && 0 === r[7 + p] ? (y = 5793 * r[0 + p] + 512 >> 10, r[0 + p] = y, r[1 + p] = y, r[2 + p] = y, r[3 + p] = y, r[4 + p] = y, r[5 + p] = y, r[6 + p] = y, r[7 + p] = y) : (n = 5793 * r[0 + p] + 128 >> 8, k = 5793 * r[4 + p] + 128 >> 8, v = r[2 + p], u = r[6 + p], w = 2896 * (r[1 + p] - r[7 + p]) + 128 >> 8, P = 2896 * (r[1 + p] + r[7 + p]) + 128 >> 8, E = r[3 + p] << 4, J = 
            r[5 + p] << 4, y = n - k + 1 >> 1, n = n + k + 1 >> 1, k = y, y = 3784 * v + 1567 * u + 128 >> 8, v = 1567 * v - 3784 * u + 128 >> 8, u = y, y = w - J + 1 >> 1, w = w + J + 1 >> 1, J = y, y = P + E + 1 >> 1, E = P - E + 1 >> 1, P = y, y = n - u + 1 >> 1, n = n + u + 1 >> 1, u = y, y = k - v + 1 >> 1, k = k + v + 1 >> 1, v = y, y = 2276 * w + 3406 * P + 2048 >> 12, w = 3406 * w - 2276 * P + 2048 >> 12, P = y, y = 799 * E + 4017 * J + 2048 >> 12, E = 4017 * E - 799 * J + 2048 >> 12, J = 
            y, r[0 + p] = n + P, r[7 + p] = n - P, r[1 + p] = k + J, r[6 + p] = k - J, r[2 + p] = v + E, r[5 + p] = v - E, r[3 + p] = u + w, r[4 + p] = u - w);
          }
          for (K = 0;8 > K;++K) {
            p = K, 0 === r[8 + p] && 0 === r[16 + p] && 0 === r[24 + p] && 0 === r[32 + p] && 0 === r[40 + p] && 0 === r[48 + p] && 0 === r[56 + p] ? (y = 5793 * r[K + 0] + 8192 >> 14, r[0 + p] = y, r[8 + p] = y, r[16 + p] = y, r[24 + p] = y, r[32 + p] = y, r[40 + p] = y, r[48 + p] = y, r[56 + p] = y) : (n = 5793 * r[0 + p] + 2048 >> 12, k = 5793 * r[32 + p] + 2048 >> 12, v = r[16 + p], u = r[48 + p], w = 2896 * (r[8 + p] - r[56 + p]) + 2048 >> 12, P = 2896 * (r[8 + p] + r[56 + p]) + 2048 >> 12, 
            E = r[24 + p], J = r[40 + p], y = n - k + 1 >> 1, n = n + k + 1 >> 1, k = y, y = 3784 * v + 1567 * u + 2048 >> 12, v = 1567 * v - 3784 * u + 2048 >> 12, u = y, y = w - J + 1 >> 1, w = w + J + 1 >> 1, J = y, y = P + E + 1 >> 1, E = P - E + 1 >> 1, P = y, y = n - u + 1 >> 1, n = n + u + 1 >> 1, u = y, y = k - v + 1 >> 1, k = k + v + 1 >> 1, v = y, y = 2276 * w + 3406 * P + 2048 >> 12, w = 3406 * w - 2276 * P + 2048 >> 12, P = y, y = 799 * E + 4017 * J + 2048 >> 12, E = 4017 * E - 799 * 
            J + 2048 >> 12, J = y, r[0 + p] = n + P, r[56 + p] = n - P, r[8 + p] = k + J, r[48 + p] = k - J, r[16 + p] = v + E, r[40 + p] = v - E, r[24 + p] = u + w, r[32 + p] = u - w);
          }
          for (K = 0;64 > K;++K) {
            n = e + K, k = r[K], k = -2056 >= k ? 0 : 2024 <= k ? 255 : k + 2056 >> 4, b.blockData[n] = k;
          }
        }
      }
      return g.blockData;
    }
    function v(a) {
      return 0 >= a ? 0 : 255 <= a ? 255 : a;
    }
    var u = new Int32Array([0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51, 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63]), l = function() {
      function c() {
      }
      c.prototype.parse = function(c) {
        function d() {
          var b = c[h] << 8 | c[h + 1];
          h += 2;
          return b;
        }
        function l() {
          var b = d(), b = c.subarray(h, h + b - 2);
          h += b.length;
          return b;
        }
        function m(b) {
          for (var a = Math.ceil(b.samplesPerLine / 8 / b.maxH), e = Math.ceil(b.scanLines / 8 / b.maxV), c = 0;c < b.components.length;c++) {
            H = b.components[c];
            var f = Math.ceil(Math.ceil(b.samplesPerLine / 8) * H.h / b.maxH), h = Math.ceil(Math.ceil(b.scanLines / 8) * H.v / b.maxV);
            H.blockData = new Int16Array(64 * e * H.v * (a * H.h + 1));
            H.blocksPerLine = f;
            H.blocksPerColumn = h;
          }
          b.mcusPerLine = a;
          b.mcusPerColumn = e;
        }
        var h = 0, f = null, b = null, e, r, p = [], k = [], v = [], B = d();
        if (65496 != B) {
          throw "SOI not found";
        }
        for (B = d();65497 != B;) {
          var D;
          switch(B) {
            case 65504:
            ;
            case 65505:
            ;
            case 65506:
            ;
            case 65507:
            ;
            case 65508:
            ;
            case 65509:
            ;
            case 65510:
            ;
            case 65511:
            ;
            case 65512:
            ;
            case 65513:
            ;
            case 65514:
            ;
            case 65515:
            ;
            case 65516:
            ;
            case 65517:
            ;
            case 65518:
            ;
            case 65519:
            ;
            case 65534:
              D = l();
              65504 === B && 74 === D[0] && 70 === D[1] && 73 === D[2] && 70 === D[3] && 0 === D[4] && (f = {version:{major:D[5], minor:D[6]}, densityUnits:D[7], xDensity:D[8] << 8 | D[9], yDensity:D[10] << 8 | D[11], thumbWidth:D[12], thumbHeight:D[13], thumbData:D.subarray(14, 14 + 3 * D[12] * D[13])});
              65518 === B && 65 === D[0] && 100 === D[1] && 111 === D[2] && 98 === D[3] && 101 === D[4] && 0 === D[5] && (b = {version:D[6], flags0:D[7] << 8 | D[8], flags1:D[9] << 8 | D[10], transformCode:D[11]});
              break;
            case 65499:
              for (var B = d() + h - 2, M;h < B;) {
                var E = c[h++], J = new Int32Array(64);
                if (0 === E >> 4) {
                  for (D = 0;64 > D;D++) {
                    M = u[D], J[M] = c[h++];
                  }
                } else {
                  if (1 === E >> 4) {
                    for (D = 0;64 > D;D++) {
                      M = u[D], J[M] = d();
                    }
                  } else {
                    throw "DQT: invalid table spec";
                  }
                }
                p[E & 15] = J;
              }
              break;
            case 65472:
            ;
            case 65473:
            ;
            case 65474:
              if (e) {
                throw "Only single frame JPEGs supported";
              }
              d();
              e = {};
              e.extended = 65473 === B;
              e.progressive = 65474 === B;
              e.precision = c[h++];
              e.scanLines = d();
              e.samplesPerLine = d();
              e.components = [];
              e.componentIds = {};
              M = c[h++];
              for (var P = J = 0, B = 0;B < M;B++) {
                var E = c[h], y = c[h + 1] >> 4, K = c[h + 1] & 15;
                J < y && (J = y);
                P < K && (P = K);
                D = c[h + 2];
                D = e.components.push({h:y, v:K, quantizationTableId:D});
                e.componentIds[E] = D - 1;
                h += 3;
              }
              e.maxH = J;
              e.maxV = P;
              m(e);
              break;
            case 65476:
              M = d();
              for (B = 2;B < M;) {
                E = c[h++];
                J = new Uint8Array(16);
                for (D = P = 0;16 > D;D++, h++) {
                  P += J[D] = c[h];
                }
                y = new Uint8Array(P);
                for (D = 0;D < P;D++, h++) {
                  y[D] = c[h];
                }
                B += 17 + P;
                (0 === E >> 4 ? v : k)[E & 15] = a(J, y);
              }
              break;
            case 65501:
              d();
              r = d();
              break;
            case 65498:
              d();
              E = c[h++];
              M = [];
              for (var H, B = 0;B < E;B++) {
                D = e.componentIds[c[h++]], H = e.components[D], D = c[h++], H.huffmanTableDC = v[D >> 4], H.huffmanTableAC = k[D & 15], D = H.quantizationTableId, H.quantizationTable = p[D], M.push(H);
              }
              B = c[h++];
              D = c[h++];
              E = c[h++];
              B = n(c, h, e, M, r, B, D, E >> 4, E & 15);
              h += B;
              break;
            default:
              if (255 == c[h - 3] && 192 <= c[h - 2] && 254 >= c[h - 2]) {
                h -= 3;
                break;
              }
              for (;h < c.length && 255 !== c[h];) {
                h++;
              }
            ;
          }
          B = d();
        }
        this.width = e.samplesPerLine;
        this.height = e.scanLines;
        this.jfif = f;
        this.adobe = b;
        this.components = [];
        for (B = 0;B < e.components.length;B++) {
          H = e.components[B], this.components.push({output:w(e, H), scaleX:H.h / e.maxH, scaleY:H.v / e.maxV, blocksPerLine:H.blocksPerLine, blocksPerColumn:H.blocksPerColumn});
        }
        this.numComponents = this.components.length;
      };
      c.prototype._getLinearizedBlockData = function(a, c) {
        var d = this.width / a, m = this.height / c, h, f, b, e, l, p, n = 0, k, v = this.components.length, u = a * c * v, w = new Uint8Array(u), E = new Uint32Array(a);
        for (p = 0;p < v;p++) {
          h = this.components[p];
          f = h.scaleX * d;
          b = h.scaleY * m;
          n = p;
          k = h.output;
          e = h.blocksPerLine + 1 << 3;
          for (l = 0;l < a;l++) {
            h = 0 | l * f, E[l] = (h & 4294967288) << 3 | h & 7;
          }
          for (f = 0;f < c;f++) {
            for (h = 0 | f * b, h = e * (h & 4294967288) | (h & 7) << 3, l = 0;l < a;l++) {
              w[n] = k[h + E[l]], n += v;
            }
          }
        }
        if (m = this.decodeTransform) {
          for (p = 0;p < u;) {
            for (d = h = 0;h < v;h++, p++, d += 2) {
              w[p] = (w[p] * m[d] >> 8) + m[d + 1];
            }
          }
        }
        return w;
      };
      c.prototype._isColorConversionNeeded = function() {
        return this.adobe && this.adobe.transformCode ? !0 : 3 == this.numComponents ? !0 : !1;
      };
      c.prototype._convertYccToRgb = function(a) {
        for (var c, d, m, h = 0, f = a.length;h < f;h += 3) {
          c = a[h], d = a[h + 1], m = a[h + 2], a[h] = v(c - 179.456 + 1.402 * m), a[h + 1] = v(c + 135.459 - .344 * d - .714 * m), a[h + 2] = v(c - 226.816 + 1.772 * d);
        }
        return a;
      };
      c.prototype._convertYcckToRgb = function(a) {
        for (var c, d, m, h, f, b, e, l, p, n, k, u, w, M, E = 0, J = 0, P = a.length;J < P;J += 4) {
          c = a[J];
          d = a[J + 1];
          m = a[J + 2];
          h = a[J + 3];
          f = d * d;
          b = d * m;
          e = d * c;
          l = d * h;
          p = m * m;
          n = m * h;
          k = m * c;
          u = c * c;
          w = c * h;
          M = h * h;
          var y = -122.67195406894 - 6.60635669420364E-5 * f + 4.37130475926232E-4 * b - 5.4080610064599E-5 * e + 4.8449797120281E-4 * l - .154362151871126 * d - 9.57964378445773E-4 * p + 8.17076911346625E-4 * k - .00477271405408747 * n + 1.53380253221734 * m + 9.61250184130688E-4 * u - .00266257332283933 * w + .48357088451265 * c - 3.36197177618394E-4 * M + .484791561490776 * h, K = 107.268039397724 + 2.19927104525741E-5 * f - 6.40992018297945E-4 * b + 6.59397001245577E-4 * e + 4.26105652938837E-4 * 
          l - .176491792462875 * d - 7.78269941513683E-4 * p + .00130872261408275 * k + 7.70482631801132E-4 * n - .151051492775562 * m + .00126935368114843 * u - .00265090189010898 * w + .25802910206845 * c - 3.18913117588328E-4 * M - .213742400323665 * h;
          c = -20.810012546947 - 5.70115196973677E-4 * f - 2.63409051004589E-5 * b + .0020741088115012 * e - .00288260236853442 * l + .814272968359295 * d - 1.53496057440975E-5 * p - 1.32689043961446E-4 * k + 5.60833691242812E-4 * n - .195152027534049 * m + .00174418132927582 * u - .00255243321439347 * w + .116935020465145 * c - 3.43531996510555E-4 * M + .24165260232407 * h;
          a[E++] = v(y);
          a[E++] = v(K);
          a[E++] = v(c);
        }
        return a;
      };
      c.prototype._convertYcckToCmyk = function(a) {
        for (var c, d, m, h = 0, f = a.length;h < f;h += 4) {
          c = a[h], d = a[h + 1], m = a[h + 2], a[h] = v(434.456 - c - 1.402 * m), a[h + 1] = v(119.541 - c + .344 * d + .714 * m), a[h + 2] = v(481.816 - c - 1.772 * d);
        }
        return a;
      };
      c.prototype._convertCmykToRgb = function(a) {
        for (var c, d, m, h, f = 0, b = 1 / 255 / 255, e = 0, l = a.length;e < l;e += 4) {
          c = a[e];
          d = a[e + 1];
          m = a[e + 2];
          h = a[e + 3];
          var p = c * (-4.387332384609988 * c + 54.48615194189176 * d + 18.82290502165302 * m + 212.25662451639585 * h - 72734.4411664936) + d * (1.7149763477362134 * d - 5.6096736904047315 * m - 17.873870861415444 * h - 1401.7366389350734) + m * (-2.5217340131683033 * m - 21.248923337353073 * h + 4465.541406466231) - h * (21.86122147463605 * h + 48317.86113160301), n = c * (8.841041422036149 * c + 60.118027045597366 * d + 6.871425592049007 * m + 31.159100130055922 * h - 20220.756542821975) + d * 
          (-15.310361306967817 * d + 17.575251261109482 * m + 131.35250912493976 * h - 48691.05921601825) + m * (4.444339102852739 * m + 9.8632861493405 * h - 6341.191035517494) - h * (20.737325471181034 * h + 47890.15695978492);
          c = c * (.8842522430003296 * c + 8.078677503112928 * d + 30.89978309703729 * m - .23883238689178934 * h - 3616.812083916688) + d * (10.49593273432072 * d + 63.02378494754052 * m + 50.606957656360734 * h - 28620.90484698408) + m * (.03296041114873217 * m + 115.60384449646641 * h - 49363.43385999684) - h * (22.33816807309886 * h + 45932.16563550634);
          a[f++] = 0 <= p ? 255 : -16581375 >= p ? 0 : 255 + p * b | 0;
          a[f++] = 0 <= n ? 255 : -16581375 >= n ? 0 : 255 + n * b | 0;
          a[f++] = 0 <= c ? 255 : -16581375 >= c ? 0 : 255 + c * b | 0;
        }
        return a;
      };
      c.prototype.getData = function(a, c, d) {
        if (4 < this.numComponents) {
          throw "Unsupported color mode";
        }
        a = this._getLinearizedBlockData(a, c);
        return 3 === this.numComponents ? this._convertYccToRgb(a) : 4 === this.numComponents ? this._isColorConversionNeeded() ? d ? this._convertYcckToRgb(a) : this._convertYcckToCmyk(a) : this._convertCmykToRgb(a) : a;
      };
      c.prototype.copyToImageData = function(a) {
        var c = a.width, d = a.height, m = c * d * 4;
        a = a.data;
        var c = this.getData(c, d, !0), h = d = 0, f, b, e, l;
        switch(this.components.length) {
          case 1:
            for (;h < m;) {
              f = c[d++], a[h++] = f, a[h++] = f, a[h++] = f, a[h++] = 255;
            }
            break;
          case 3:
            for (;h < m;) {
              e = c[d++], l = c[d++], f = c[d++], a[h++] = e, a[h++] = l, a[h++] = f, a[h++] = 255;
            }
            break;
          case 4:
            for (;h < m;) {
              e = c[d++], l = c[d++], f = c[d++], b = c[d++], e = 255 - v(e * (1 - b / 255) + b), l = 255 - v(l * (1 - b / 255) + b), f = 255 - v(f * (1 - b / 255) + b), a[h++] = e, a[h++] = l, a[h++] = f, a[h++] = 255;
            }
            break;
          default:
            throw "Unsupported color mode";;
        }
      };
      return c;
    }();
    d.JpegImage = l;
  })(d.JPEG || (d.JPEG = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    function a() {
      this.bitBuffer = this.bitLength = 0;
    }
    function n(a) {
      if (this.pos + a > this.end) {
        throw d.StreamNoDataError;
      }
    }
    function w() {
      return this.end - this.pos;
    }
    function v(a, g) {
      var d = new l(this.bytes);
      d.pos = a;
      d.end = g;
      return d;
    }
    function u(a) {
      var g = this.bytes, d = this.end + a.length;
      if (d > g.length) {
        throw "stream buffer overfow";
      }
      g.set(a, this.end);
      this.end = d;
    }
    d.StreamNoDataError = {};
    var l = function() {
      return function(c, g, d, l) {
        void 0 === g && (g = 0);
        c.buffer instanceof ArrayBuffer && (g += c.byteOffset, c = c.buffer);
        void 0 === d && (d = c.byteLength - g);
        void 0 === l && (l = d);
        var m = new Uint8Array(c, g, l);
        c = new DataView(c, g, l);
        c.bytes = m;
        c.pos = 0;
        c.end = d;
        c.bitBuffer = 0;
        c.bitLength = 0;
        c.align = a;
        c.ensure = n;
        c.remaining = w;
        c.substream = v;
        c.push = u;
        return c;
      };
    }();
    d.Stream = l;
  })(d.SWF || (d.SWF = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    function a() {
      n || (n = new Worker(k.MP3WORKER_PATH), n.addEventListener("message", function(a) {
        "console" === a.data.action && console[a.data.method].call(console, a.data.message);
      }));
      return n;
    }
    k.MP3WORKER_PATH = "../../lib/mp3/mp3worker.js";
    var n = null, w = 0, v = function() {
      function n() {
        this._sessionId = w++;
        this._onworkermessageBound = this.onworkermessage.bind(this);
        this._worker = a();
        this._worker.addEventListener("message", this._onworkermessageBound, !1);
        this._worker.postMessage({sessionId:this._sessionId, action:"create"});
      }
      n.prototype.onworkermessage = function(a) {
        if (a.data.sessionId === this._sessionId) {
          switch(a.data.action) {
            case "closed":
              if (this.onclosed) {
                this.onclosed();
              }
              this._worker.removeEventListener("message", this._onworkermessageBound, !1);
              this._worker = null;
              break;
            case "frame":
              this.onframedata(a.data.frameData, a.data.channels, a.data.sampleRate, a.data.bitRate);
              break;
            case "id3":
              if (this.onid3tag) {
                this.onid3tag(a.data.id3Data);
              }
              break;
            case "error":
              if (this.onerror) {
                this.onerror(a.data.message);
              }
            ;
          }
        }
      };
      n.prototype.pushAsync = function(a) {
        this._worker.postMessage({sessionId:this._sessionId, action:"decode", data:a});
      };
      n.prototype.close = function() {
        this._worker.postMessage({sessionId:this._sessionId, action:"close"});
      };
      n.processAll = function(a) {
        var c = 8E3, g = new Float32Array(c), q = 0, t = [], m = !1, h = new d.PromiseWrapper, f = new n;
        f.onframedata = function(b, a, f, h) {
          a = b.length + q;
          if (a > c) {
            do {
              c *= 2;
            } while (a > c);
            a = new Float32Array(c);
            a.set(g);
            g = a;
          }
          g.set(b, q);
          q += b.length;
        };
        f.onid3tag = function(b) {
          t.push(b);
        };
        f.onclosed = function() {
          m || h.resolve({data:g.subarray(0, q), id3Tags:t});
        };
        f.onerror = function(b) {
          m || (m = !0, h.reject(b));
        };
        f.pushAsync(a);
        f.close();
        return h.promise;
      };
      return n;
    }();
    k.MP3DecoderSession = v;
  })(d.SWF || (d.SWF = {}));
})(Shumway || (Shumway = {}));
__extends = this.__extends || function(d, k) {
  function a() {
    this.constructor = d;
  }
  for (var n in k) {
    k.hasOwnProperty(n) && (d[n] = k[n]);
  }
  a.prototype = k.prototype;
  d.prototype = new a;
};
(function(d) {
  (function(k) {
    function a(b, a) {
      return b && a ? "boldItalic" : b ? "bold" : a ? "italic" : "regular";
    }
    function n(b, a) {
      switch(b.code) {
        case 6:
        ;
        case 21:
        ;
        case 35:
        ;
        case 90:
          return d.SWF.Parser.defineImage(b);
        case 20:
        ;
        case 36:
          return d.SWF.Parser.defineBitmap(b);
        case 7:
        ;
        case 34:
          return d.SWF.Parser.defineButton(b, a);
        case 37:
          return d.SWF.Parser.defineText(b);
        case 10:
        ;
        case 48:
        ;
        case 75:
        ;
        case 91:
          return d.SWF.Parser.defineFont(b);
        case 46:
        ;
        case 84:
        ;
        case 2:
        ;
        case 22:
        ;
        case 32:
        ;
        case 83:
          return d.SWF.Parser.defineShape(b);
        case 14:
          return d.SWF.Parser.defineSound(b);
        case 39:
          return b;
        case 87:
          return {type:"binary", id:b.id, data:b.data};
        case 11:
        ;
        case 33:
          return d.SWF.Parser.defineLabel(b);
        default:
          return b;
      }
    }
    var w = d.SWF.Parser, v = k.Stream, u = d.ArrayUtilities.Inflate, l = d.ArrayUtilities.LzmaDecoder, c = w.SwfTag, g = w.DefinitionTags, q = w.ImageDefinitionTags, t = w.FontDefinitionTags, m = w.ControlTags;
    (function(b) {
      b[b.None = 0] = "None";
      b[b.Deflate = 1] = "Deflate";
      b[b.LZMA = 2] = "LZMA";
    })(k.CompressionMethod || (k.CompressionMethod = {}));
    var h = function() {
      function h(b, a) {
        this.swfVersion = this.compression = 0;
        this.useAVM1 = !0;
        this.backgroundColor = 4294967295;
        this.bounds = null;
        this.frameCount = this.frameRate = 0;
        this.sceneAndFrameLabelData = this.attributes = null;
        this.bytesLoaded = 0;
        this.bytesTotal = a;
        this.framesLoaded = this.pendingUpdateDelays = 0;
        this.frames = [];
        this.abcBlocks = [];
        this.dictionary = [];
        this.fonts = [];
        this.symbolClassesMap = [];
        this.symbolClassesList = [];
        this.eagerlyParsedSymbolsMap = [];
        this.eagerlyParsedSymbolsList = [];
        this._currentExports = this._currentInitActionBlocks = this._currentActionBlocks = this._currentControlTags = this._currentSoundStreamBlock = this._currentSoundStreamHead = this._currentFrameLabel = this._jpegTables = null;
        this._endTagEncountered = !1;
        this.readHeaderAndInitialize(b);
      }
      h.prototype.appendLoadedData = function(b) {
        this.bytesLoaded += b.length;
        this._endTagEncountered || (0 !== this.compression ? this._decompressor.push(b) : this.processDecompressedData(b), this.scanLoadedData());
      };
      h.prototype.finishLoading = function() {
        0 !== this.compression && (this._decompressor.close(), this._decompressor = null, this.scanLoadedData());
      };
      h.prototype.getSymbol = function(b) {
        if (this.eagerlyParsedSymbolsMap[b]) {
          return this.eagerlyParsedSymbolsMap[b];
        }
        var a = this.dictionary[b];
        if (!a) {
          return null;
        }
        a = 39 === a.tagCode ? this.parseSpriteTimeline(a) : this.getParsedTag(a);
        a.className = this.symbolClassesMap[b] || null;
        return a;
      };
      h.prototype.getParsedTag = function(b) {
        k.enterTimeline("Parse tag " + c[b.tagCode]);
        this._dataStream.align();
        this._dataStream.pos = b.byteOffset;
        var a = {code:b.tagCode}, e = w.LowLevel.tagHandlers[b.tagCode], f = Math.min(b.byteOffset + b.byteLength, this._dataStream.end);
        e(this.data, this._dataStream, a, this.swfVersion, b.tagCode, f);
        this._dataStream.pos !== f && this.emitTagSlopWarning(b, f);
        b = n(a, this.dictionary);
        k.leaveTimeline();
        return b;
      };
      h.prototype.readHeaderAndInitialize = function(b) {
        k.enterTimeline("Initialize SWFFile");
        var a = 67 === b[0], e = 90 === b[0];
        a ? this.compression = 1 : e && (this.compression = 2);
        this.swfVersion = b[3];
        this._loadStarted = Date.now();
        this._uncompressedLength = (b[4] | b[5] << 8 | b[6] << 16 | b[7] << 24) >>> 0;
        this.bytesLoaded = b.length;
        this.data = new Uint8Array(0 === this.compression ? this.bytesTotal : this._uncompressedLength);
        this._dataStream = new v(this.data.buffer);
        this._dataStream.pos = 8;
        this._dataView = this._dataStream;
        a ? (this.data.set(b.subarray(0, 8)), this._uncompressedLoadedLength = 8, this._decompressor = u.create(!0), this._decompressor.onData = this.processFirstBatchOfDecompressedData.bind(this), this._decompressor.onError = function(b) {
          throw Error(b);
        }, this._decompressor.push(b.subarray(8))) : e ? (this.data.set(b.subarray(0, 8)), this._uncompressedLoadedLength = 8, this._decompressor = new l(!0), this._decompressor.onData = this.processFirstBatchOfDecompressedData.bind(this), this._decompressor.onError = function(b) {
          console.warn("Invalid LZMA stream: " + b);
        }, this._decompressor.push(b)) : (this.data.set(b), this._uncompressedLoadedLength = b.length, this._decompressor = null, this.parseHeaderContents());
        k.leaveTimeline();
        this._lastScanPosition = this._dataStream.pos;
        this.scanLoadedData();
      };
      h.prototype.parseHeaderContents = function() {
        var b = w.LowLevel.readHeader(this.data, this._dataStream);
        this.bounds = b.bounds;
        this.frameRate = b.frameRate;
        this.frameCount = b.frameCount;
      };
      h.prototype.processFirstBatchOfDecompressedData = function(b) {
        this.processDecompressedData(b);
        this.parseHeaderContents();
        this._decompressor.onData = this.processDecompressedData.bind(this);
      };
      h.prototype.processDecompressedData = function(b) {
        var a = Math.min(b.length, this._uncompressedLength - this._uncompressedLoadedLength);
        d.ArrayUtilities.memCopy(this.data, b, this._uncompressedLoadedLength, 0, a);
        this._uncompressedLoadedLength += a;
      };
      h.prototype.scanLoadedData = function() {
        k.enterTimeline("Scan loaded SWF file tags");
        this._dataStream.pos = this._lastScanPosition;
        this.scanTagsToOffset(this._uncompressedLoadedLength, !0);
        this._lastScanPosition = this._dataStream.pos;
        k.leaveTimeline();
      };
      h.prototype.scanTagsToOffset = function(b, a) {
        for (var e = new r(0, 0, 0), c;(c = this._dataStream.pos) < b - 1 && this.parseNextTagHeader(e);) {
          if (0 === e.tagCode) {
            a && (this._endTagEncountered = !0, console.log("SWF load time: " + (.001 * (Date.now() - this._loadStarted)).toFixed(4) + "sec"));
            break;
          }
          var f = e.byteOffset + e.byteLength;
          if (f > b) {
            this._dataStream.pos = c;
            break;
          }
          this.scanTag(e, a);
          this._dataStream.pos !== f && this.emitTagSlopWarning(e, f);
        }
      };
      h.prototype.parseNextTagHeader = function(b) {
        var a = this._dataStream.pos, e = this._dataView.getUint16(a, !0), a = a + 2;
        b.tagCode = e >> 6;
        e &= 63;
        if (63 === e) {
          if (a + 4 > this._uncompressedLoadedLength) {
            return !1;
          }
          e = this._dataView.getUint32(a, !0);
          a += 4;
        }
        this._dataStream.pos = a;
        b.byteOffset = a;
        b.byteLength = e;
        return !0;
      };
      h.prototype.scanTag = function(a, f) {
        var h = this._dataStream, d = h.pos, p = a.tagCode, l = a.byteLength;
        if (39 === p) {
          this.addLazySymbol(p, d, l), d += l, h.pos += 4, this.scanTagsToOffset(d, !1), this._dataStream.pos !== d && this.emitTagSlopWarning(a, d);
        } else {
          if (q[p]) {
            h = this.addLazySymbol(p, d, l), this.decodeEmbeddedImage(h);
          } else {
            if (t[p]) {
              h = this.addLazySymbol(p, d, l), this.registerEmbeddedFont(h);
            } else {
              if (g[p]) {
                this.addLazySymbol(p, d, l), this.jumpToNextTag(l);
              } else {
                if (f || 76 === p || 56 === p) {
                  if (m[p]) {
                    this.addControlTag(p, d, l);
                  } else {
                    switch(p) {
                      case 69:
                        this.setFileAttributes(l);
                        break;
                      case 86:
                        this.setSceneAndFrameLabelData(l);
                        break;
                      case 9:
                        this.backgroundColor = w.LowLevel.rgb(this.data, this._dataStream);
                        break;
                      case 8:
                        this._jpegTables || (this._jpegTables = 0 === l ? new Uint8Array(0) : this.data.subarray(h.pos, h.pos + l - 2));
                        this.jumpToNextTag(l);
                        break;
                      case 82:
                      ;
                      case 72:
                        this.useAVM1 ? this.jumpToNextTag(l) : (d += l, l = new b, 82 === p ? (l.flags = w.readUi32(this.data, h), l.name = w.readString(this.data, h, -1)) : (l.flags = 0, l.name = ""), l.data = this.data.subarray(h.pos, d), this.abcBlocks.push(l), h.pos = d);
                        break;
                      case 76:
                        d += l;
                        for (l = w.readUi16(this.data, h);l--;) {
                          var p = w.readUi16(this.data, h), r = w.readString(this.data, h, -1);
                          this.symbolClassesMap[p] = r;
                          this.symbolClassesList.push({id:p, className:r});
                        }
                        h.pos = d;
                        break;
                      case 59:
                        this.useAVM1 && (p = this._currentInitActionBlocks || (this._currentInitActionBlocks = []), h = this._dataView.getUint16(h.pos, !0), p.push({spriteId:h, actionsData:this.data.subarray(d + 2, d + l)}));
                        this.jumpToNextTag(l);
                        break;
                      case 12:
                        this.useAVM1 && (this._currentActionBlocks || (this._currentActionBlocks = [])).push(this.data.subarray(h.pos, h.pos + l));
                        this.jumpToNextTag(l);
                        break;
                      case 18:
                      ;
                      case 45:
                        h = w.LowLevel.soundStreamHead(this.data, this._dataStream, d + l);
                        this._currentSoundStreamHead = w.SoundStream.FromTag(h);
                        break;
                      case 19:
                        this._currentSoundStreamBlock = this.data.subarray(h.pos, h.pos += l);
                        break;
                      case 43:
                        d = h.pos + l;
                        this._currentFrameLabel = w.readString(this.data, h, -1);
                        h.pos = d;
                        break;
                      case 1:
                        this.finishFrame();
                        break;
                      case 0:
                        break;
                      case 56:
                        d = h.pos + l;
                        l = w.readUi16(this.data, h);
                        for (r = this._currentExports || (this._currentExports = []);l--;) {
                          var p = w.readUi16(this.data, h), n = w.readString(this.data, h, -1);
                          if (h.pos > d) {
                            h.pos = d;
                            break;
                          }
                          r.push(new e(p, n));
                        }
                        h.pos = d;
                        break;
                      case 23:
                      ;
                      case 17:
                      ;
                      case 13:
                      ;
                      case 62:
                      ;
                      case 78:
                      ;
                      case 57:
                      ;
                      case 71:
                        this.jumpToNextTag(l);
                        break;
                      case 74:
                      ;
                      case 73:
                      ;
                      case 65:
                      ;
                      case 66:
                        this.jumpToNextTag(l);
                        break;
                      case 58:
                      ;
                      case 64:
                      ;
                      case 63:
                      ;
                      case 88:
                      ;
                      case 41:
                      ;
                      case 77:
                      ;
                      case 24:
                        this.jumpToNextTag(l);
                        break;
                      case 51:
                      ;
                      case 44:
                      ;
                      case 50:
                      ;
                      case 53:
                      ;
                      case 42:
                      ;
                      case 38:
                      ;
                      case 52:
                      ;
                      case 3:
                      ;
                      case 31:
                      ;
                      case 47:
                      ;
                      case 16:
                      ;
                      case 29:
                        console.info("Ignored tag (these shouldn't occur) " + p + ": " + c[p]);
                        this.jumpToNextTag(l);
                        break;
                      default:
                        this.jumpToNextTag(l);
                    }
                  }
                } else {
                  this.jumpToNextTag(l);
                }
              }
            }
          }
        }
      };
      h.prototype.parseSpriteTimeline = function(b) {
        k.enterTimeline("parseSpriteTimeline");
        var a = this.data, e = this._dataStream, c = this._dataView, h = {id:b.id, type:"sprite", frames:[]}, g = b.byteOffset + b.byteLength, m = h.frames, d = null, p = [], l = null, q = null, t = null, n = null;
        e.pos = b.byteOffset + 2;
        h.frameCount = c.getUint16(e.pos, !0);
        e.pos += 2;
        for (b = new r(0, 0, 0);e.pos < g;) {
          this.parseNextTagHeader(b);
          var v = b.byteLength, C = b.tagCode;
          if (e.pos + v > g) {
            break;
          }
          if (w.ControlTags[C]) {
            p.push(new r(C, e.pos, v));
          } else {
            switch(C) {
              case 12:
                this.useAVM1 && (t || (t = []), t.push(a.subarray(e.pos, e.pos + v)));
                break;
              case 59:
                this.useAVM1 && (n || (n = []), C = c.getUint16(e.pos, !0), e.pos += 2, n.push({spriteId:C, actionsData:a.subarray(e.pos, e.pos + v)}));
                break;
              case 43:
                v = e.pos + v;
                d = w.readString(a, e, -1);
                e.pos = v;
                v = 0;
                break;
              case 1:
                m.push(new f(p, d, l, q, t, n, null));
                d = null;
                p = [];
                n = t = q = l = null;
                break;
              case 0:
                e.pos = g, v = 0;
            }
          }
          e.pos += v;
        }
        k.leaveTimeline();
        return h;
      };
      h.prototype.jumpToNextTag = function(b) {
        this._dataStream.pos += b;
      };
      h.prototype.emitTagSlopWarning = function(b, a) {
        this._dataStream.pos = a;
      };
      h.prototype.finishFrame = function() {
        0 === this.pendingUpdateDelays && this.framesLoaded++;
        this.frames.push(new f(this._currentControlTags, this._currentFrameLabel, this._currentSoundStreamHead, this._currentSoundStreamBlock, this._currentActionBlocks, this._currentInitActionBlocks, this._currentExports));
        this._currentExports = this._currentInitActionBlocks = this._currentActionBlocks = this._currentSoundStreamBlock = this._currentSoundStreamHead = this._currentControlTags = this._currentFrameLabel = null;
      };
      h.prototype.setFileAttributes = function(b) {
        this.attributes && this.jumpToNextTag(b);
        b = this.data[this._dataStream.pos];
        this._dataStream.pos += 4;
        this.attributes = {network:b & 1, relativeUrls:b & 2, noCrossDomainCaching:b & 4, doAbc:b & 8, hasMetadata:b & 16, useGpu:b & 32, useDirectBlit:b & 64};
        this.useAVM1 = !this.attributes.doAbc;
      };
      h.prototype.setSceneAndFrameLabelData = function(b) {
        this.sceneAndFrameLabelData ? this.jumpToNextTag(b) : this.sceneAndFrameLabelData = w.LowLevel.defineScene(this.data, this._dataStream, null);
      };
      h.prototype.addControlTag = function(b, a, e) {
        (this._currentControlTags || (this._currentControlTags = [])).push(new r(b, a, e));
        this.jumpToNextTag(e);
      };
      h.prototype.addLazySymbol = function(b, a, e) {
        var c = this._dataStream.getUint16(this._dataStream.pos, !0);
        b = new p(c, b, a, e);
        return this.dictionary[c] = b;
      };
      h.prototype.decodeEmbeddedFont = function(b) {
        var e = this.getParsedTag(b);
        b = new C(e.id, b, "font", e);
        this.eagerlyParsedSymbolsMap[b.id] = b;
        this.eagerlyParsedSymbolsList.push(b);
        this.fonts.push({name:e.name, id:e.id, style:a(e.bold, e.italic)});
      };
      h.prototype.registerEmbeddedFont = function(b) {
        if (inFirefox) {
          var e = this._dataStream, c = e.getUint16(e.pos, !0), f, h;
          10 === b.tagCode ? (h = "__autofont__" + b.byteOffset, f = "regular") : (f = this.data[e.pos + 2], f = a(!!(f & 2), !!(f & 1)), h = this.data[e.pos + 4], e.pos += 5, h = w.readString(this.data, e, h));
          this.fonts.push({name:h, id:c, style:f});
          e.pos = b.byteOffset + b.byteLength;
        } else {
          this.decodeEmbeddedFont(b);
        }
      };
      h.prototype.decodeEmbeddedImage = function(b) {
        var a = this.getParsedTag(b);
        b = new C(a.id, b, "image", a);
        this.eagerlyParsedSymbolsMap[b.id] = b;
        this.eagerlyParsedSymbolsList.push(b);
      };
      return h;
    }();
    k.SWFFile = h;
    var f = function() {
      return function(b, a, e, c, f, h, g) {
        this.controlTags = b;
        this.labelName = a;
        this.soundStreamHead = e;
        this.soundStreamBlock = c;
        this.actionBlocks = f;
        this.initActionBlocks = h;
        this.exports = g;
      };
    }();
    k.SWFFrame = f;
    var b = function() {
      return function() {
      };
    }();
    k.ABCBlock = b;
    k.InitActionBlock = function() {
      return function() {
      };
    }();
    var e = function() {
      return function(b, a) {
        this.symbolId = b;
        this.className = a;
      };
    }();
    k.SymbolExport = e;
    var r = function() {
      return function(b, a, e) {
        this.tagCode = b;
        this.byteOffset = a;
        this.byteLength = e;
      };
    }();
    k.UnparsedTag = r;
    var p = function(b) {
      function a(e, c, f, h) {
        b.call(this, c, f, h);
        this.id = e;
      }
      __extends(a, b);
      return a;
    }(r);
    k.DictionaryEntry = p;
    var C = function(b) {
      function a(e, c, f, h) {
        b.call(this, e, c.tagCode, c.byteOffset, c.byteLength);
        this.type = f;
        this.definition = h;
        this.ready = !1;
      }
      __extends(a, b);
      return a;
    }(p);
    k.EagerlyParsedDictionaryEntry = C;
  })(d.SWF || (d.SWF = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  var k;
  (function(a) {
    a[a.JPG = 16767231] = "JPG";
    a[a.PNG = 8998990] = "PNG";
    a[a.GIF = 4671814] = "GIF";
  })(k || (k = {}));
  var a = {16767231:"image/jpeg", 8998990:"image/png", 4671814:"image/gif"};
  k = function() {
    function d(a, n) {
      this.type = 4;
      this.bytesLoaded = a.length;
      a.length === n ? this.data = a : (this.data = new Uint8Array(n), this.data.set(a));
      this.setMimetype();
    }
    Object.defineProperty(d.prototype, "bytesTotal", {get:function() {
      return this.data.length;
    }, enumerable:!0, configurable:!0});
    d.prototype.appendLoadedData = function(a) {
      this.data.set(a, this.bytesLoaded);
      this.bytesLoaded += a.length;
    };
    d.prototype.setMimetype = function() {
      this.mimeType = a[this.data[0] << 16 | this.data[1] << 8 | this.data[2]];
    };
    return d;
  }();
  d.ImageFile = k;
})(Shumway || (Shumway = {}));
(function(d) {
  var k = d.SWF.SWFFile, a = function() {
    return function(a, d) {
      this.bytesLoaded = a;
      this.framesLoaded = d;
    };
  }();
  d.LoadProgressUpdate = a;
  var n = function() {
    function n(a) {
      this._file = null;
      this._listener = a;
      this._delayedUpdatesPromise = this._loadingServiceSession = null;
      this._bytesLoaded = 0;
    }
    n.prototype.loadFile = function(a) {
      d.SWF.enterTimeline("Load file", a.url);
      this._bytesLoaded = 0;
      var l = this._loadingServiceSession = d.FileLoadingService.instance.createSession();
      l.onopen = this.processLoadOpen.bind(this);
      l.onprogress = this.processNewData.bind(this);
      l.onerror = this.processError.bind(this);
      l.onclose = this.processLoadClose.bind(this);
      l.open(a);
    };
    n.prototype.abortLoad = function() {
    };
    n.prototype.loadBytes = function(a) {
      d.SWF.enterTimeline("Load bytes");
      this.processNewData(a, {bytesLoaded:a.length, bytesTotal:a.length});
      this.processLoadClose();
    };
    n.prototype.processLoadOpen = function() {
    };
    n.prototype.processNewData = function(n, l) {
      this._bytesLoaded += n.length;
      if (8192 > this._bytesLoaded && this._bytesLoaded < l.bytesTotal) {
        this._queuedInitialData || (this._queuedInitialData = new Uint8Array(Math.min(8192, l.bytesTotal))), this._queuedInitialData.set(n, this._bytesLoaded - n.length);
      } else {
        if (this._queuedInitialData) {
          var c = new Uint8Array(this._bytesLoaded);
          c.set(this._queuedInitialData);
          c.set(n, this._bytesLoaded - n.length);
          n = c;
          this._queuedInitialData = null;
        }
        var g = this._file, q = c = 0;
        if (g) {
          g instanceof k && (c = g.eagerlyParsedSymbolsList.length, q = g.framesLoaded), g.appendLoadedData(n);
        } else {
          var g = n, t = l.bytesTotal, m = g[0] << 16 | g[1] << 8 | g[2], g = 22355 === (m & 65535) ? new k(g, t) : 16767231 === m || 8998990 === m || 4671814 === m ? new d.ImageFile(g, t) : null;
          g = this._file = g;
          this._listener.onLoadOpen(g);
        }
        if (g instanceof k) {
          this.processSWFFileUpdate(g, c, q);
        } else {
          if (this._listener.onLoadProgress(new a(l.bytesLoaded, -1)), l.bytesLoaded === l.bytesTotal) {
            this._listener.onImageBytesLoaded();
          }
        }
      }
    };
    n.prototype.processError = function(a) {
    };
    n.prototype.processLoadClose = function() {
      var a = this._file;
      if (a instanceof k) {
        var l = a.eagerlyParsedSymbolsList.length, c = a.framesLoaded;
        a.finishLoading();
        this.processSWFFileUpdate(a, l, c);
      }
      a.bytesLoaded !== a.bytesTotal || d.SWF.leaveTimeline();
    };
    n.prototype.processSWFFileUpdate = function(d, l, c) {
      var g;
      if (l = d.eagerlyParsedSymbolsList.length - l) {
        g = this._listener.onNewEagerlyParsedSymbols(d.eagerlyParsedSymbolsList, l);
        this._delayedUpdatesPromise && (g = Promise.all([this._delayedUpdatesPromise, g]));
        this._delayedUpdatesPromise = g;
        this._lastDelayedUpdate = t = new a(d.bytesLoaded, d.frames.length);
        d.pendingUpdateDelays++;
        var q = this;
        d.framesLoaded = c;
        g.then(function() {
          d.pendingUpdateDelays--;
          d.framesLoaded = t.framesLoaded;
          q._listener.onLoadProgress(t);
          q._delayedUpdatesPromise === g && (q._delayedUpdatesPromise = null, q._lastDelayedUpdate = null);
        });
      } else {
        var t = this._lastDelayedUpdate;
        if (t) {
          t.bytesLoaded = d.bytesLoaded, t.framesLoaded = d.frames.length;
        } else {
          this._listener.onLoadProgress(new a(d.bytesLoaded, d.framesLoaded));
        }
      }
    };
    return n;
  }();
  d.FileLoader = n;
  var w;
  (function(a) {
    a[a.SWF = 22355] = "SWF";
    a[a.JPG = 16767231] = "JPG";
    a[a.PNG = 8998990] = "PNG";
    a[a.GIF = 4671814] = "GIF";
  })(w || (w = {}));
})(Shumway || (Shumway = {}));
console.timeEnd("Load SWF Parser");
console.time("Load Flash TS Dependencies");
(function(d) {
  function k(a) {
    var c = {};
    a = a.split(",");
    for (var h = 0;h < a.length;h++) {
      c[a[h]] = !0;
    }
    return c;
  }
  var a = /^<([-A-Za-z0-9_]+)((?:\s+[-A-Za-z0-9_]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/, n = /^<\/([-A-Za-z0-9_]+)[^>]*>/, w = /([-A-Za-z0-9_]+)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g, v = k("area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed"), u = k("address,applet,blockquote,button,center,dd,del,dir,div,dl,dt,fieldset,form,frameset,hr,iframe,ins,isindex,li,map,menu,noframes,noscript,object,ol,p,pre,script,table,tbody,td,tfoot,th,thead,tr,ul"), 
  l = k("a,abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var"), c = k("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr"), g = k("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected"), q = k("script,style");
  d.HTMLParser = function(d, m) {
    function h() {
      return this[this.length - 1];
    }
    function f(a, e, f, d) {
      e = e.toLowerCase();
      if (u[e]) {
        for (;h() && l[h()];) {
          b("", h());
        }
      }
      c[e] && h() == e && b("", e);
      (d = v[e] || !!d) || p.push(e);
      if (m.start) {
        var r = Object.create(null);
        f.replace(w, function(b, a, e, c, f) {
          a = a.toLowerCase();
          r[a] = e ? e : c ? c : f ? f : g[a] ? a : "";
          return b;
        });
        m.start && m.start(e, r, !!d);
      }
    }
    function b(b, a) {
      if (a) {
        for (e = p.length - 1;0 <= e && p[e] != a;e--) {
        }
      } else {
        var e = 0
      }
      if (0 <= e) {
        for (var c = p.length - 1;c >= e;c--) {
          m.end && m.end(p[c]);
        }
        p.length = e;
      }
    }
    for (var e, r, p = [], k = d;d;) {
      r = !0;
      if (h() && q[h()]) {
        d = d.replace(new RegExp("(.*)</" + h() + "[^>]*>"), function(b, a) {
          a = a.replace(/\x3c!--(.*?)--\x3e/g, "$1").replace(/<!\[CDATA\[(.*?)]]\x3e/g, "$1");
          m.chars && m.chars(a);
          return "";
        }), b("", h());
      } else {
        if (0 == d.indexOf("\x3c!--")) {
          e = d.indexOf("--\x3e"), 0 <= e && (m.comment && m.comment(d.substring(4, e)), d = d.substring(e + 3), r = !1);
        } else {
          if (0 == d.indexOf("</")) {
            if (e = d.match(n)) {
              d = d.substring(e[0].length), e[0].replace(n, b), r = !1;
            }
          } else {
            0 == d.indexOf("<") && (e = d.match(a)) && (d = d.substring(e[0].length), e[0].replace(a, f), r = !1);
          }
        }
        r && (e = d.indexOf("<"), r = 0 > e ? d : d.substring(0, e), d = 0 > e ? "" : d.substring(e), m.chars && m.chars(r));
      }
      if (d == k) {
        throw "Parse Error: " + d;
      }
      k = d;
    }
    b();
  };
})(Shumway || (Shumway = {}));
(function(d) {
  var k = d.Debug.notImplemented, a = d.Debug.somewhatImplemented, n = d.Bounds, w = d.ArrayUtilities.DataBuffer, v = d.ColorUtilities, u = d.AVM2.AS.flash, l = d.NumberUtilities.altTieBreakRound;
  (function(a) {
    a[a.None = 0] = "None";
    a[a.DirtyBounds = 1] = "DirtyBounds";
    a[a.DirtyContent = 2] = "DirtyContent";
    a[a.DirtyStyle = 4] = "DirtyStyle";
    a[a.DirtyFlow = 8] = "DirtyFlow";
    a[a.Dirty = a.DirtyBounds | a.DirtyContent | a.DirtyStyle | a.DirtyFlow] = "Dirty";
  })(d.TextContentFlags || (d.TextContentFlags = {}));
  var c = {lt:"<", gt:">", amp:"&", quot:'"', apos:"'", nbsp:"\u00a0"}, g = function() {
    function g(a) {
      this._id = u.display.DisplayObject.getNextSyncID();
      this._bounds = new n(0, 0, 0, 0);
      this._plainText = "";
      this._autoSize = this._borderColor = this._backgroundColor = 0;
      this._wordWrap = !1;
      this._scrollV = 1;
      this.flags = this._scrollH = 0;
      this.defaultTextFormat = a || new u.text.TextFormat;
      this.textRuns = [];
      this.textRunData = new w;
      this.coords = this.matrix = null;
    }
    g.prototype.parseHtml = function(g, m, h) {
      var f = "", b = this.textRuns, e = b.length = 0, l = 0, p = this.defaultTextFormat.clone(), q = null, n = [], w;
      d.HTMLParser(g, w = {chars:function(a) {
        for (var h = "", g = 0;g < a.length;g++) {
          var m = a.charAt(g);
          if ("&" !== m) {
            h += m;
          } else {
            if (m = d.StringUtilities.indexOfAny(a, ["&", ";"], g + 1), 0 < m) {
              g = a.substring(g + 1, m);
              if (1 < g.length && "#" === g.charAt(0)) {
                var t = 0, t = 2 < g.length && "x" === g.charAt(1) ? parseInt(g.substring(1)) : parseInt(g.substring(2), 16), h = h + String.fromCharCode(t)
              } else {
                void 0 !== c[g] ? h += c[g] : d.Debug.unexpected(g);
              }
              g = m;
            } else {
              for (var n in c) {
                if (a.indexOf(n, g + 1) === g + 1) {
                  h += c[n];
                  g += n.length;
                  break;
                }
              }
            }
          }
        }
        a = h;
        f += a;
        l += a.length;
        l - e && (q && q.textFormat.equals(p) ? q.endIndex = l : (q = new u.text.TextRun(e, l, p), b.push(q)), e = l);
      }, start:function(b, e) {
        var c = !1;
        m && (c = m.hasStyle(b)) && (n.push(p), p = p.clone(), m.applyStyle(p, b));
        switch(b) {
          case "a":
            n.push(p);
            a("<a/>");
            var g = e.target || p.target, d = e.url || p.url;
            if (g !== p.target || d !== p.url) {
              c || (p = p.clone()), p.target = g, p.url = d;
            }
            break;
          case "b":
            n.push(p);
            p.bold || (c || (p = p.clone()), p.bold = !0);
            break;
          case "font":
            n.push(p);
            var g = v.isValidHexColor(e.color) ? v.hexToRGB(e.color) : p.color, d = e.face || p.font, l = isNaN(e.size) ? p.size : +e.size;
            if (g !== p.color || d !== p.font || l !== p.size) {
              c || (p = p.clone()), p.color = g, p.font = d, p.size = l;
            }
            break;
          case "img":
            k("<img/>");
            break;
          case "i":
            n.push(p);
            p.italic || (c || (p = p.clone()), p.italic = !0);
            break;
          case "li":
            if (n.push(p), p.bullet || (c || (p = p.clone()), p.bullet = !0), "\r" === f[f.length - 1]) {
              break;
            }
          ;
          case "br":
          ;
          case "sbr":
            h && w.chars("\r");
            break;
          case "span":
          ;
          case "p":
            g = !1;
            n.push(p);
            m && e.class && (d = "." + e.class, g = m.hasStyle(d)) && (c || (p = p.clone()), m.applyStyle(p, d));
            if ("span" === b) {
              break;
            }
            d = e.align;
            -1 < u.text.TextFormatAlign.toNumber(d) && d !== p.align && (c || g || (p = p.clone()), p.align = d);
            break;
          case "textformat":
            n.push(p);
            var g = isNaN(e.blockindent) ? p.blockIndent : +e.blockindent, d = isNaN(e.indent) ? p.indent : +e.indent, l = isNaN(e.leading) ? p.leading : +e.leading, r = isNaN(e.leftmargin) ? p.leftMargin : +e.leftmargin, q = isNaN(e.rightmargin) ? p.rightMargin : +e.rightmargin;
            if (g !== p.blockIndent || d !== p.indent || l !== p.leading || r !== p.leftMargin || q !== p.rightMargin) {
              c || (p = p.clone()), p.blockIndent = g, p.indent = d, p.leading = l, p.leftMargin = r, p.rightMargin = q;
            }
            break;
          case "u":
            n.push(p), p.underline || (c || (p = p.clone()), p.underline = !0);
        }
      }, end:function(b) {
        switch(b) {
          case "li":
          ;
          case "p":
            h && w.chars("\r");
          case "a":
          ;
          case "b":
          ;
          case "font":
          ;
          case "i":
          ;
          case "textformat":
          ;
          case "u":
            p = n.pop(), m && m.hasStyle(b) && (p = n.pop());
        }
      }});
      this._plainText = f;
      this._serializeTextRuns();
    };
    Object.defineProperty(g.prototype, "plainText", {get:function() {
      return this._plainText;
    }, set:function(a) {
      this._plainText = a;
      this.textRuns.length = 0;
      a && (a = new u.text.TextRun(0, a.length, this.defaultTextFormat), this.textRuns[0] = a);
      this._serializeTextRuns();
    }, enumerable:!0, configurable:!0});
    Object.defineProperty(g.prototype, "bounds", {get:function() {
      return this._bounds;
    }, set:function(a) {
      this._bounds.copyFrom(a);
      this.flags |= 1;
    }, enumerable:!0, configurable:!0});
    Object.defineProperty(g.prototype, "autoSize", {get:function() {
      return this._autoSize;
    }, set:function(a) {
      a !== this._autoSize && (this._autoSize = a, this._plainText && (this.flags |= 8));
    }, enumerable:!0, configurable:!0});
    Object.defineProperty(g.prototype, "wordWrap", {get:function() {
      return this._wordWrap;
    }, set:function(a) {
      a !== this._wordWrap && (this._wordWrap = a, this._plainText && (this.flags |= 8));
    }, enumerable:!0, configurable:!0});
    Object.defineProperty(g.prototype, "scrollV", {get:function() {
      return this._scrollV;
    }, set:function(a) {
      a !== this._scrollV && (this._scrollV = a, this._plainText && (this.flags |= 8));
    }, enumerable:!0, configurable:!0});
    Object.defineProperty(g.prototype, "scrollH", {get:function() {
      return this._scrollH;
    }, set:function(a) {
      a !== this._scrollH && (this._scrollH = a, this._plainText && (this.flags |= 8));
    }, enumerable:!0, configurable:!0});
    Object.defineProperty(g.prototype, "backgroundColor", {get:function() {
      return this._backgroundColor;
    }, set:function(a) {
      a !== this._backgroundColor && (this._backgroundColor = a, this.flags |= 4);
    }, enumerable:!0, configurable:!0});
    Object.defineProperty(g.prototype, "borderColor", {get:function() {
      return this._borderColor;
    }, set:function(a) {
      a !== this._borderColor && (this._borderColor = a, this.flags |= 4);
    }, enumerable:!0, configurable:!0});
    g.prototype._serializeTextRuns = function() {
      var a = this.textRuns;
      this.textRunData.clear();
      for (var c = 0;c < a.length;c++) {
        this._writeTextRun(a[c]);
      }
      this.flags |= 2;
    };
    g.prototype._writeTextRun = function(a) {
      var c = this.textRunData;
      c.writeInt(a.beginIndex);
      c.writeInt(a.endIndex);
      a = a.textFormat;
      var h = +a.size;
      c.writeInt(h);
      var f = u.text.Font.getByNameAndStyle(a.font, a.style) || u.text.Font.getDefaultFont();
      f.fontType === u.text.FontType.EMBEDDED ? c.writeUTF("swffont" + f._id) : c.writeUTF(f._fontFamily);
      c.writeInt(l(f.ascent * h, !0));
      c.writeInt(l(f.descent * h, !1));
      c.writeInt(null === a.leading ? f.leading * h : +a.leading);
      var b = h = !1;
      f.fontType === u.text.FontType.DEVICE && (h = null === a.bold ? f.fontStyle === u.text.FontStyle.BOLD || f.fontType === u.text.FontStyle.BOLD_ITALIC : !!a.bold, b = null === a.italic ? f.fontStyle === u.text.FontStyle.ITALIC || f.fontType === u.text.FontStyle.BOLD_ITALIC : !!a.italic);
      c.writeBoolean(h);
      c.writeBoolean(b);
      c.writeInt(+a.color);
      c.writeInt(u.text.TextFormatAlign.toNumber(a.align));
      c.writeBoolean(!!a.bullet);
      c.writeInt(+a.indent);
      c.writeInt(+a.kerning);
      c.writeInt(+a.leftMargin);
      c.writeInt(+a.letterSpacing);
      c.writeInt(+a.rightMargin);
      c.writeBoolean(!!a.underline);
    };
    g.prototype.appendText = function(a, c) {
      c || (c = this.defaultTextFormat);
      var h = this._plainText, f = new u.text.TextRun(h.length, h.length + a.length, c);
      this._plainText = h + a;
      this.textRuns.push(f);
      this._writeTextRun(f);
    };
    g.prototype.prependText = function(a, c) {
      c || (c = this.defaultTextFormat);
      this._plainText = a + this._plainText;
      for (var h = this.textRuns, f = a.length, b = 0;b < h.length;b++) {
        var e = h[b];
        e.beginIndex += f;
        e.endIndex += f;
      }
      h.unshift(new u.text.TextRun(0, f, c));
      this._serializeTextRuns();
    };
    g.prototype.replaceText = function(a, c, h, f) {
      if (!(c < a) && h) {
        if (0 === c) {
          this.prependText(h, f);
        } else {
          var b = this._plainText;
          if (a >= b.length) {
            this.appendText(h, f);
          } else {
            var e = this.defaultTextFormat, g = e;
            f && (g = g.clone(), g.merge(f));
            if (0 >= a && c >= b.length) {
              f ? (this.defaultTextFormat = g, this.plainText = h, this.defaultTextFormat = e) : this.plainText = h;
            } else {
              for (var e = this.textRuns, d = [], l = a + h.length, q = l - c, n = 0;n < e.length;n++) {
                var k = e[n];
                if (a < k.endIndex) {
                  if (a <= k.beginIndex && l >= k.endIndex) {
                    continue;
                  }
                  var v = k.containsIndex(a), w = k.containsIndex(c);
                  if (v && w) {
                    if (f) {
                      v = k.clone();
                      v.endIndex = a;
                      d.push(v);
                      n--;
                      k.beginIndex = a + 1;
                      continue;
                    }
                  } else {
                    v ? k.endIndex = a : w ? f ? (d.push(new u.text.TextRun(a, l, g)), k.beginIndex = l) : (k.beginIndex = a, k.endIndex += q) : (k.beginIndex += q, k.endIndex += q);
                  }
                }
                d.push(k);
              }
              this._plainText = b.substring(0, a) + h + b.substring(c);
              this.textRuns = d;
              this._serializeTextRuns();
            }
          }
        }
      }
    };
    return g;
  }();
  d.TextContent = g;
})(Shumway || (Shumway = {}));
var Shumway$$inline_765 = Shumway || (Shumway = {}), AVM2$$inline_766 = Shumway$$inline_765.AVM2 || (Shumway$$inline_765.AVM2 = {}), AS$$inline_767 = AVM2$$inline_766.AS || (AVM2$$inline_766.AS = {});
AS$$inline_767.flashOptions = Shumway$$inline_765.Settings.shumwayOptions.register(new Shumway$$inline_765.Options.OptionSet("Flash Options"));
AS$$inline_767.traceEventsOption = AS$$inline_767.flashOptions.register(new Shumway$$inline_765.Options.Option("te", "Trace Events", "boolean", !1, "Trace dispatching of events."));
AS$$inline_767.traceLoaderOption = AS$$inline_767.flashOptions.register(new Shumway$$inline_765.Options.Option("tp", "Trace Loader", "boolean", !1, "Trace loader execution."));
AS$$inline_767.disableAudioOption = AS$$inline_767.flashOptions.register(new Shumway$$inline_765.Options.Option("da", "Disable Audio", "boolean", !1, "Disables audio."));
AS$$inline_767.webAudioOption = AS$$inline_767.flashOptions.register(new Shumway$$inline_765.Options.Option(null, "Use WebAudio for Sound", "boolean", !1, "Enables WebAudio API for MovieClip sound stream. (MP3 format is an exception)"));
AS$$inline_767.webAudioMP3Option = AS$$inline_767.flashOptions.register(new Shumway$$inline_765.Options.Option(null, "Use MP3 decoding to WebAudio", "boolean", !1, "Enables WebAudio API and software MP3 decoding and disables any AUDIO tag usage for MP3 format"));
AS$$inline_767.mediaSourceOption = AS$$inline_767.flashOptions.register(new Shumway$$inline_765.Options.Option(null, "Use Media Source for Video", "boolean", !1, "Enables Media Source Extension API for NetStream."));
AS$$inline_767.mediaSourceMP3Option = AS$$inline_767.flashOptions.register(new Shumway$$inline_765.Options.Option(null, "Use Media Source for MP3", "boolean", !0, "Enables Media Source Extension API for MP3 streams."));
AS$$inline_767.flvOption = AS$$inline_767.flashOptions.register(new Shumway$$inline_765.Options.Option(null, "FLV support.", "string", "unsupported", "Defines how to deal with FLV streams."));
__extends = this.__extends || function(d, k) {
  function a() {
    this.constructor = d;
  }
  for (var n in k) {
    k.hasOwnProperty(n) && (d[n] = k[n]);
  }
  a.prototype = k.prototype;
  d.prototype = new a;
};
(function(d) {
  (function(k) {
    var a = d.Debug.warning, n = d.Bounds, w = d.AVM2.AS.flash, v = function() {
      function l(c, g) {
        this.data = c;
        if (c.className) {
          var l = d.AVM2.Runtime.AVM2.instance.applicationDomain;
          try {
            this.symbolClass = l.getClass(c.className);
          } catch (t) {
            a("Symbol " + c.id + " bound to non-existing class " + c.className), this.symbolClass = g;
          }
        } else {
          this.symbolClass = g;
        }
        this.isAVM1Object = !1;
      }
      Object.defineProperty(l.prototype, "id", {get:function() {
        return this.data.id;
      }, enumerable:!0, configurable:!0});
      return l;
    }();
    k.Symbol = v;
    var u = function(a) {
      function c(c, d, t) {
        a.call(this, c, d);
        this.dynamic = t;
      }
      __extends(c, a);
      c.prototype._setBoundsFromData = function(a) {
        this.fillBounds = a.fillBounds ? n.FromUntyped(a.fillBounds) : null;
        this.lineBounds = a.lineBounds ? n.FromUntyped(a.lineBounds) : null;
        !this.lineBounds && this.fillBounds && (this.lineBounds = this.fillBounds.clone());
      };
      return c;
    }(v);
    k.DisplaySymbol = u;
    v = function(a) {
      function c(c) {
        a.call(this, c, w.utils.ByteArray);
      }
      __extends(c, a);
      c.FromData = function(a) {
        var d = new c(a);
        d.buffer = a.data;
        d.byteLength = a.data.byteLength;
        return d;
      };
      return c;
    }(v);
    k.BinarySymbol = v;
    k.SoundStart = function() {
      return function(a, c) {
        this.soundId = a;
        this.soundInfo = c;
      };
    }();
  })(d.Timeline || (d.Timeline = {}));
})(Shumway || (Shumway = {}));
var RtmpJs;
(function(d) {
  (function(d) {
    var a = function() {
      function a(d, n, k) {
        this._socket = ShumwayCom.createRtmpSocket({host:d, port:n, ssl:k.useSecureTransport});
      }
      Object.defineProperty(a, "isAvailable", {get:function() {
        return !("undefined" === typeof ShumwayCom || !ShumwayCom.createRtmpSocket);
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(a.prototype, "onopen", {get:function() {
        return this._onopen;
      }, set:function(a) {
        this._socket.setOpenCallback(this._onopen = a);
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(a.prototype, "ondata", {get:function() {
        return this._ondata;
      }, set:function(a) {
        this._socket.setDataCallback(this._ondata = a);
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(a.prototype, "ondrain", {get:function() {
        return this._ondrain;
      }, set:function(a) {
        this._socket.setDrainCallback(this._ondrain = a);
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(a.prototype, "onerror", {get:function() {
        return this._onerror;
      }, set:function(a) {
        this._socket.setErrorCallback(this._onerror = a);
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(a.prototype, "onclose", {get:function() {
        return this._onclose;
      }, set:function(a) {
        this._socket.setCloseCallback(this._onclose = a);
      }, enumerable:!0, configurable:!0});
      a.prototype.send = function(a, d, n) {
        return this._socket.send(a, d, n);
      };
      a.prototype.close = function() {
        this._socket.close();
      };
      return a;
    }();
    d.ShumwayComRtmpSocket = a;
    a = function() {
      function a() {
        this._xhr = ShumwayCom.createRtmpXHR();
      }
      Object.defineProperty(a, "isAvailable", {get:function() {
        return !("undefined" === typeof ShumwayCom || !ShumwayCom.createRtmpXHR);
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(a.prototype, "status", {get:function() {
        return this._xhr.status;
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(a.prototype, "response", {get:function() {
        return this._xhr.response;
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(a.prototype, "responseType", {get:function() {
        return this._xhr.responseType;
      }, set:function(a) {
        this._xhr.responseType = a;
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(a.prototype, "onload", {get:function() {
        return this._onload;
      }, set:function(a) {
        this._xhr.setLoadCallback(this._onload = a);
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(a.prototype, "onerror", {get:function() {
        return this._onload;
      }, set:function(a) {
        this._xhr.setErrorCallback(this._onerror = a);
      }, enumerable:!0, configurable:!0});
      a.prototype.open = function(a, d, n) {
        void 0 === n && (n = !0);
        this._xhr.open(a, d, n);
      };
      a.prototype.setRequestHeader = function(a, d) {
        this._xhr.setRequestHeader(a, d);
      };
      a.prototype.send = function(a) {
        this._xhr.send(a);
      };
      return a;
    }();
    d.ShumwayComRtmpXHR = a;
  })(d.Browser || (d.Browser = {}));
})(RtmpJs || (RtmpJs = {}));
(function(d) {
  var k = function() {
    function a(d) {
      this.onmessage = null;
      this.id = d;
      this.buffer = null;
      this.bufferLength = 0;
      this.lastStreamId = -1;
      this.lastTypeId = this.lastLength = this.lastTimestamp = 0;
      this.lastMessageComplete = !1;
      this.waitingForBytes = 0;
      this.sentStreamId = -1;
      this.sentTypeId = this.sentLength = this.sentTimestamp = 0;
    }
    a.prototype.setBuffer = function() {
      this.buffer || (this.buffer = new Uint8Array(128), this.bufferLength = 0);
    };
    a.prototype.abort = function() {
      this.buffer ? this.bufferLength = 0 : this.lastMessageComplete || (this.lastMessageComplete = !0, this.onmessage({timestamp:this.lastTimestamp, streamId:this.lastStreamId, chunkedStreamId:this.id, typeId:this.lastTypeId, data:null, firstChunk:!1, lastChunk:!0}));
    };
    a.prototype._push = function(a, d, n) {
      if (this.onmessage) {
        if (d && n || !this.buffer) {
          this.onmessage({timestamp:this.lastTimestamp, streamId:this.lastStreamId, chunkedStreamId:this.id, typeId:this.lastTypeId, data:a, firstChunk:d, lastChunk:n});
        } else {
          if (d && (this.bufferLength = 0, this.lastLength > this.buffer.length && (this.buffer = new Uint8Array(this.lastLength))), this.buffer.set(a, this.bufferLength), this.bufferLength += a.length, n) {
            this.onmessage({timestamp:this.lastTimestamp, streamId:this.lastStreamId, chunkedStreamId:this.id, typeId:this.lastTypeId, data:this.buffer.subarray(0, this.bufferLength), firstChunk:!0, lastChunk:!0});
          }
        }
      }
    };
    return a;
  }();
  d.ChunkedStream = k;
  var a = function() {
    function a() {
      this.onack = this.onusercontrolmessage = null;
      this.ondata = function(a) {
      };
      this.onclose = function() {
      };
      this.oncreated = null;
      this.state = "uninitialized";
      this.buffer = new Uint8Array(4092);
      this.bufferLength = 0;
      this.chunkSize = 128;
      this.chunkStreams = [];
      this.peerChunkSize = 128;
      this.lastAckSent = this.bytesReceived = this.windowAckSize = this.bandwidthLimitType = this.peerAckWindowSize = 0;
    }
    a.prototype.push = function(a) {
      var d = a.length + this.bufferLength;
      if (d > this.buffer.length) {
        for (var n = 2 * this.buffer.length;d > n;) {
          n *= 2;
        }
        524288 < n && this._fail("Buffer overflow");
        n = new Uint8Array(n);
        n.set(this.buffer);
        this.buffer = n;
      }
      for (var n = 0, l = this.bufferLength;n < a.length;n++, l++) {
        this.buffer[l] = a[n];
      }
      this.bufferLength = d;
      this.bytesReceived += a.length;
      for (this.peerAckWindowSize && this.bytesReceived - this.lastAckSent >= this.peerAckWindowSize && this._sendAck();0 < this.bufferLength;) {
        a = 0;
        switch(this.state) {
          case "uninitialized":
            if (1 > this.bufferLength) {
              return;
            }
            this.serverVersion = this.buffer[0];
            a = 1;
            3 !== this.serverVersion && this._fail("Unsupported protocol version: " + this.serverVersion);
            this.state = "version_received";
            break;
          case "version_received":
            if (1536 > this.bufferLength) {
              return;
            }
            a = 1536;
            d = Date.now() - this.epochStart | 0;
            this.buffer[4] = d >>> 24 & 255;
            this.buffer[5] = d >>> 16 & 255;
            this.buffer[6] = d >>> 8 & 255;
            this.buffer[7] = d & 255;
            this.ondata(this.buffer.subarray(0, 1536));
            this.state = "ack_sent";
            break;
          case "ack_sent":
            if (1536 > this.bufferLength) {
              return;
            }
            a = 1536;
            for (n = 8;1536 > n;n++) {
              this.buffer[n] !== this.randomData[n] && this._fail("Random data do not match @" + n);
            }
            this.state = "handshake_done";
            this.lastAckSent = this.bytesReceived;
            this._initialize();
            break;
          case "handshake_done":
            a = this._parseChunkedData();
            if (!a) {
              return;
            }
            break;
          default:
            return;
        }
        this.buffer.set(this.buffer.subarray(a, this.bufferLength), 0);
        this.bufferLength -= a;
      }
    };
    a.prototype._initialize = function() {
      var a = this._getChunkStream(2);
      a.setBuffer();
      a.onmessage = function(a) {
        if (0 === a.streamId) {
          switch(a.typeId) {
            case 1:
              var d = a.data[0] << 24 | a.data[1] << 16 | a.data[2] << 8 | a.data[3];
              1 <= d && 2147483647 >= d && (this.peerChunkSize = d);
              break;
            case 2:
              d = a.data[0] << 24 | a.data[1] << 16 | a.data[2] << 8 | a.data[3];
              3 <= d && 65599 >= d && this._getChunkStream(d).abort();
              break;
            case 3:
              if (this.onack) {
                this.onack();
              }
              break;
            case 4:
              if (this.onusercontrolmessage) {
                this.onusercontrolmessage({type:a.data[0] << 8 | a.data[1], data:a.data.subarray(2)});
              }
              break;
            case 5:
              d = a.data[0] << 24 | a.data[1] << 16 | a.data[2] << 8 | a.data[3];
              if (0 > d) {
                break;
              }
              this.peerAckWindowSize = d;
              break;
            case 6:
              d = a.data[0] << 24 | a.data[1] << 16 | a.data[2] << 8 | a.data[3];
              a = a.data[4];
              if (0 > d || 2 < a) {
                break;
              }
              if (1 === a || 2 === a && 1 === this.bandwidthLimitType) {
                d = Math.min(this.windowAckSize, d);
              }
              d !== this.ackWindowSize && (this.ackWindowSize = d, d = new Uint8Array([d >>> 24 & 255, d >>> 16 & 255, d >>> 8 & 255, d & 255]), this._sendMessage(2, {typeId:5, streamId:0, data:d}), 2 !== a && (this.bandwidthLimitType = a));
          }
        }
      }.bind(this);
      if (this.oncreated) {
        this.oncreated();
      }
    };
    a.prototype.setChunkSize = function(a) {
      if (1 > a || 2147483647 < a) {
        throw Error("Invalid chunk size");
      }
      this._sendMessage(2, {streamId:0, typeId:1, data:new Uint8Array([a >>> 24 & 255, a >>> 16 & 255, a >>> 8 & 255, a & 255])});
      this.chunkSize = a;
    };
    a.prototype.send = function(a, d) {
      if (3 > a || 65599 < a) {
        throw Error("Invalid chunkStreamId");
      }
      return this._sendMessage(a, d);
    };
    a.prototype.sendUserControlMessage = function(a, d) {
      var n = new Uint8Array(2 + d.length);
      n[0] = a >> 8 & 255;
      n[1] = a & 255;
      n.set(d, 2);
      this._sendMessage(2, {typeId:4, streamId:0, data:n});
    };
    a.prototype._sendAck = function() {
      var a = new Uint8Array([this.bytesReceived >>> 24 & 255, this.bytesReceived >>> 16 & 255, this.bytesReceived >>> 8 & 255, this.bytesReceived & 255]);
      this._sendMessage(2, {typeId:3, streamId:0, data:a});
    };
    a.prototype._sendMessage = function(a, d) {
      var n = d.data, l = n.length, c = this._getChunkStream(a), g = ("timestamp" in d ? d.timestamp : Date.now() - this.epochStart) | 0, q = g - c.sentTimestamp | 0, t = new Uint8Array(this.chunkSize + 18), m;
      64 > a ? (m = 1, t[0] = a) : 320 > a ? (m = 2, t[0] = 0, t[1] = a - 64) : (m = 3, t[0] = 1, t[1] = a - 64 >> 8 & 255, t[2] = a - 64 & 255);
      var h = m, f = 0;
      d.streamId !== c.sentStreamId || 0 > q ? (0 !== (g & 4278190080) ? (f = g, t[h] = t[h + 1] = t[h + 2] = 255) : (t[h] = g >> 16 & 255, t[h + 1] = g >> 8 & 255, t[h + 2] = g & 255), h += 3, t[h++] = l >> 16 & 255, t[h++] = l >> 8 & 255, t[h++] = l & 255, t[h++] = d.typeId, t[h++] = d.streamId & 255, t[h++] = d.streamId >> 8 & 255, t[h++] = d.streamId >> 16 & 255, t[h++] = d.streamId >> 24 & 255) : l !== c.sentLength || d.typeId !== c.sentTypeId ? (t[0] |= 64, 0 !== (q & 4278190080) ? (f = q, 
      t[h] = t[h + 1] = t[h + 2] = 255) : (t[h] = q >> 16 & 255, t[h + 1] = q >> 8 & 255, t[h + 2] = q & 255), h += 3, t[h++] = l >> 16 & 255, t[h++] = l >> 8 & 255, t[h++] = l & 255, t[h++] = d.typeId) : 0 !== q ? (t[0] |= 128, 0 !== (q & 4278190080) ? (f = q, t[h] = t[h + 1] = t[h + 2] = 255) : (t[h] = q >> 16 & 255, t[h + 1] = q >> 8 & 255, t[h + 2] = q & 255), h += 3) : t[0] |= 192;
      f && (t[h++] = f >>> 24 & 255, t[h++] = f >>> 16 & 255, t[h++] = f >>> 8 & 255, t[h++] = f & 255);
      c.sentTimestamp = g;
      c.sentStreamId = d.streamId;
      c.sentTypeId = d.typeId;
      c.sentLength = l;
      for (c = 0;c < l;) {
        q = Math.min(l - c, this.chunkSize), t.set(n.subarray(c, c + q), h), c += q, this.ondata(t.subarray(0, h + q)), t[0] |= 192, h = m;
      }
      return g;
    };
    a.prototype._getChunkStream = function(a) {
      var d = this.chunkStreams[a];
      d || (this.chunkStreams[a] = d = new k(a), d.setBuffer(), d.onmessage = function(a) {
        if (this.onmessage) {
          this.onmessage(a);
        }
      }.bind(this));
      return d;
    };
    a.prototype._parseChunkedData = function() {
      if (!(1 > this.bufferLength)) {
        var a = this.buffer[0] >> 6 & 3, d = 1, n = this.buffer[0] & 63;
        if (0 === n) {
          if (2 > this.bufferLength) {
            return;
          }
          n = this.buffer[1] + 64;
          d = 2;
        } else {
          if (1 === n) {
            if (2 > this.bufferLength) {
              return;
            }
            n = (this.buffer[1] << 8) + this.buffer[2] + 64;
            d = 3;
          }
        }
        var l = 0 === a ? 11 : 1 === a ? 7 : 2 === a ? 3 : 0;
        if (!(this.bufferLength < d + l)) {
          var c = 3 !== a && 255 === this.buffer[d] && 255 === this.buffer[d + 1] && 255 === this.buffer[d + 2] ? 4 : 0, g = d + l + c;
          if (!(this.bufferLength < g)) {
            var n = this._getChunkStream(n), q;
            q = 3 === a ? n.lastTimestamp : this.buffer[d] << 16 | this.buffer[d + 1] << 8 | this.buffer[d + 2];
            c && (q = d + l, q = this.buffer[q] << 24 | this.buffer[q + 1] << 16 | this.buffer[q + 2] << 8 | this.buffer[q + 3]);
            if (1 === a || 2 === a) {
              q = n.lastTimestamp + q | 0;
            }
            var l = n.lastLength, c = n.lastTypeId, t = n.lastStreamId;
            if (0 === a || 1 === a) {
              l = this.buffer[d + 3] << 16 | this.buffer[d + 4] << 8 | this.buffer[d + 5], c = this.buffer[d + 6];
            }
            0 === a && (t = this.buffer[d + 10] << 24 | this.buffer[d + 9] << 16 | this.buffer[d + 8] << 8 | this.buffer[d + 7]);
            var m;
            3 === a && n.waitingForBytes ? (m = !1, a = Math.min(n.waitingForBytes, this.peerChunkSize), d = n.waitingForBytes - a) : (m = !0, a = Math.min(l, this.peerChunkSize), d = l - a);
            if (!(this.bufferLength < g + a)) {
              return n.lastTimestamp = q, n.lastLength = l, n.lastTypeId = c, n.lastStreamId = t, n.lastMessageComplete = !d, n.waitingForBytes = d, n._push(this.buffer.subarray(g, g + a), m, !d), g + a;
            }
          }
        }
      }
    };
    a.prototype.start = function() {
      this.epochStart = Date.now();
      this.ondata(new Uint8Array([3]));
      this.randomData = new Uint8Array(1536);
      this.randomData[0] = 0;
      this.randomData[1] = 0;
      this.randomData[2] = 0;
      this.randomData[3] = 0;
      for (var a = 8;1536 > a;a++) {
        this.randomData[a] = 256 * Math.random() | 0;
      }
      this.ondata(this.randomData);
      console.log("## connected");
    };
    a.prototype.stop = function(a) {
      a && console.error("socket error!!!");
      console.log("## closed");
    };
    a.prototype._fail = function(a) {
      console.error("failed: " + a);
      this.state = "failed";
      this.onclose();
      throw Error(a);
    };
    return a;
  }();
  d.ChunkedChannel = a;
})(RtmpJs || (RtmpJs = {}));
(function(d) {
  var k = Shumway.AVM2.AS.flash, a = function() {
    function a() {
      this._streams = [];
    }
    a.prototype.connect = function(a, d) {
      throw Error("Abstract BaseTransport.connect method");
    };
    a.prototype._initChannel = function(a, u) {
      var l = new d.ChunkedChannel, c = this;
      l.oncreated = function() {
        var c = new k.utils.ByteArray;
        c.objectEncoding = 0;
        c.writeObject("connect");
        c.writeObject(1);
        c.writeObject(a);
        c.writeObject(u || null);
        l.send(3, {streamId:0, typeId:20, data:new Uint8Array(c._buffer, 0, c.length)});
      };
      l.onmessage = function(a) {
        if (0 !== a.streamId) {
          c._streams[a.streamId]._push(a);
        } else {
          if (20 === a.typeId || 17 === a.typeId) {
            var d = new k.utils.ByteArray;
            d.writeRawBytes(a.data);
            d.position = 0;
            d.objectEncoding = 20 === a.typeId ? 0 : 3;
            a = d.readObject();
            void 0 === a && (d.objectEncoding = 0, a = d.readObject());
            var l = d.readObject();
            if ("_result" === a || "_error" === a) {
              if (a = "_error" === a, 1 === l) {
                if (l = d.readObject(), d = d.readObject(), c.onconnected) {
                  c.onconnected({properties:l, information:d, isError:a});
                }
              } else {
                var m = d.readObject(), d = d.readObject();
                if (c.onstreamcreated) {
                  var h = new n(c, d);
                  c._streams[d] = h;
                  c.onstreamcreated({transactionId:l, commandObject:m, streamId:d, stream:h, isError:a});
                }
              }
            } else {
              "onBWCheck" === a || "onBWDone" === a ? c.sendCommandOrResponse("_error", l, null, {code:"NetConnection.Call.Failed", level:"error"}) : (d.readObject(), d.position < d.length && d.readObject());
            }
          }
        }
      };
      l.onusercontrolmessage = function(a) {
        6 === a.type && l.sendUserControlMessage(7, a.data);
      };
      return this.channel = l;
    };
    a.prototype.call = function(a, d, l, c) {
      var g = this.channel, q = new k.utils.ByteArray;
      q.objectEncoding = 0;
      q.writeObject(a);
      q.writeObject(d);
      q.writeObject(l);
      q.writeObject(c);
      g.send(3, {streamId:0, typeId:20, data:new Uint8Array(q._buffer, 0, q.length)});
    };
    a.prototype.createStream = function(a) {
      this.sendCommandOrResponse("createStream", a, null);
    };
    a.prototype.sendCommandOrResponse = function(a, d, l, c) {
      var g = this.channel, q = new k.utils.ByteArray;
      q.writeByte(0);
      q.objectEncoding = 0;
      q.writeObject(a);
      q.writeObject(d);
      q.writeObject(l || null);
      3 < arguments.length && q.writeObject(c);
      g.send(3, {streamId:0, typeId:17, data:new Uint8Array(q._buffer, 0, q.length)});
    };
    a.prototype._setBuffer = function(a) {
      this.channel.sendUserControlMessage(3, new Uint8Array([a >> 24 & 255, a >> 16 & 255, a >> 8 & 255, a & 255, 0, 0, 0, 100]));
    };
    a.prototype._sendCommand = function(a, d) {
      this.channel.send(8, {streamId:a, typeId:20, data:d});
    };
    return a;
  }();
  d.BaseTransport = a;
  var n = function() {
    function a(d, n) {
      this.transport = d;
      this.streamId = n;
    }
    a.prototype.play = function(a, d, l, c) {
      var g = new k.utils.ByteArray;
      g.objectEncoding = 0;
      g.writeObject("play");
      g.writeObject(0);
      g.writeObject(null);
      g.writeObject(a);
      1 < arguments.length && g.writeObject(d);
      2 < arguments.length && g.writeObject(l);
      3 < arguments.length && g.writeObject(c);
      this.transport._sendCommand(this.streamId, new Uint8Array(g._buffer, 0, g.length));
      this.transport._setBuffer(this.streamId);
    };
    a.prototype._push = function(a) {
      switch(a.typeId) {
        case 8:
        ;
        case 9:
          if (this.ondata) {
            this.ondata(a);
          }
          break;
        case 18:
        ;
        case 20:
          var d = [], l = new k.utils.ByteArray;
          l.writeRawBytes(a.data);
          l.position = 0;
          for (l.objectEncoding = 0;l.position < l.length;) {
            d.push(l.readObject());
          }
          18 === a.typeId && this.onscriptdata && this.onscriptdata.apply(this, d);
          20 === a.typeId && this.oncallback && this.oncallback.apply(this, d);
      }
    };
    return a;
  }();
  d.parseConnectionString = function(a) {
    var d = a.indexOf(":");
    if (0 > d || "/" !== a[d + 1]) {
      return null;
    }
    var n = a.substring(0, d).toLocaleLowerCase();
    if ("rtmp" !== n && "rtmpt" !== n && "rtmps" !== n && "rtmpe" !== n && "rtmpte" !== n && "rtmfp" !== n) {
      return null;
    }
    var l, c, g = d + 1;
    if ("/" === a[d + 2]) {
      g = a.indexOf("/", d + 3);
      if (0 > g) {
        return;
      }
      var q = a.indexOf(":", d + 1);
      0 <= q && q < g ? (l = a.substring(d + 3, q), c = +a.substring(q + 1, g)) : l = a.substring(d + 3, g);
    }
    return {protocol:n, host:l, port:c, app:a.substring(g + 1)};
  };
})(RtmpJs || (RtmpJs = {}));
(function(d) {
  (function(k) {
    function a(a, d, l) {
      d || (d = w);
      var c = "undefined" !== typeof k.ShumwayComRtmpXHR && k.ShumwayComRtmpXHR.isAvailable ? new k.ShumwayComRtmpXHR : new XMLHttpRequest({mozSystem:!0});
      c.open("POST", a, !0);
      c.responseType = "arraybuffer";
      c.setRequestHeader("Content-Type", "application/x-fcs");
      c.onload = function(a) {
        l(new Uint8Array(c.response), c.status);
      };
      c.onerror = function(a) {
        console.log("error");
        throw Error("HTTP error");
      };
      c.send(d);
    }
    var n = function(a) {
      function d(l) {
        a.call(this);
        "string" === typeof l && (l = {host:l});
        this.host = l.host || "localhost";
        this.port = l.port || 1935;
        this.ssl = !!l.ssl || !1;
      }
      __extends(d, a);
      d.prototype.connect = function(a, c) {
        function g(b) {
          return f.send(b.buffer, b.byteOffset, b.byteLength);
        }
        var d = "undefined" !== typeof navigator && navigator.mozTCPSocket;
        if (!d) {
          throw Error("Your browser does not support socket communication.\nCurrenly only Firefox with enabled mozTCPSocket is allowed (see README.md).");
        }
        var t = this._initChannel(a, c), m = [], h = !1, f = "undefined" !== typeof k.ShumwayComRtmpSocket && k.ShumwayComRtmpSocket.isAvailable ? new k.ShumwayComRtmpSocket(this.host, this.port, {useSecureTransport:this.ssl, binaryType:"arraybuffer"}) : d.open(this.host, this.port, {useSecureTransport:this.ssl, binaryType:"arraybuffer"});
        f.onopen = function(b) {
          t.ondata = function(b) {
            b = new Uint8Array(b);
            m.push(b);
            1 < m.length || g(b) && m.shift();
          };
          t.onclose = function() {
            f.close();
          };
          t.start();
        };
        f.ondrain = function(b) {
          for (m.shift();0 < m.length && g(m[0]);) {
            m.shift();
          }
        };
        f.onclose = function(b) {
          t.stop(h);
        };
        f.onerror = function(b) {
          h = !0;
          console.error("socket error: " + b.data);
        };
        f.ondata = function(b) {
          t.push(new Uint8Array(b.data));
        };
      };
      return d;
    }(d.BaseTransport);
    k.RtmpTransport = n;
    n = function(d) {
      function n(a) {
        d.call(this);
        var c = (a.ssl ? "https" : "http") + "://" + (a.host || "localhost");
        a.port && (c += ":" + a.port);
        this.baseUrl = c;
        this.stopped = !1;
        this.sessionId = null;
        this.requestId = 0;
        this.data = [];
      }
      __extends(n, d);
      n.prototype.connect = function(d, c) {
        var g = this._initChannel(d, c);
        g.ondata = function(a) {
          this.data.push(new Uint8Array(a));
        }.bind(this);
        g.onclose = function() {
          this.stopped = !0;
        }.bind(this);
        a(this.baseUrl + "/fcs/ident2", null, function(c, d) {
          if (404 !== d) {
            throw Error("Unexpected response: " + d);
          }
          a(this.baseUrl + "/open/1", null, function(a, c) {
            this.sessionId = String.fromCharCode.apply(null, a).slice(0, -1);
            console.log("session id: " + this.sessionId);
            this.tick();
            g.start();
          }.bind(this));
        }.bind(this));
      };
      n.prototype.tick = function() {
        var d = function(a, c) {
          if (200 !== c) {
            throw Error("Invalid HTTP status");
          }
          var h = a[0];
          1 < a.length && this.channel.push(a.subarray(1));
          setTimeout(this.tick.bind(this), 16 * h);
        }.bind(this);
        if (this.stopped) {
          a(this.baseUrl + "/close/2", null, function() {
          });
        } else {
          if (0 < this.data.length) {
            var c, g = 0;
            this.data.forEach(function(a) {
              g += a.length;
            });
            var q = 0;
            c = new Uint8Array(g);
            this.data.forEach(function(a) {
              c.set(a, q);
              q += a.length;
            });
            this.data.length = 0;
            a(this.baseUrl + "/send/" + this.sessionId + "/" + this.requestId++, c, d);
          } else {
            a(this.baseUrl + "/idle/" + this.sessionId + "/" + this.requestId++, null, d);
          }
        }
      };
      return n;
    }(d.BaseTransport);
    k.RtmptTransport = n;
    var w = new Uint8Array([0]);
  })(d.Browser || (d.Browser = {}));
})(RtmpJs || (RtmpJs = {}));
(function(d) {
  (function(d) {
    (function(a) {
      function d(a) {
        for (var c = [], b = 1;b < arguments.length;b++) {
          c[b - 1] = arguments[b];
        }
        return Array.prototype.concat.apply(a, c);
      }
      function k(a, c, b) {
        a[c] = b >> 24 & 255;
        a[c + 1] = b >> 16 & 255;
        a[c + 2] = b >> 8 & 255;
        a[c + 3] = b & 255;
      }
      function v(a) {
        return a.charCodeAt(0) << 24 | a.charCodeAt(1) << 16 | a.charCodeAt(2) << 8 | a.charCodeAt(3);
      }
      var u = Shumway.StringUtilities.utf8decode, l = [1, 0, 0, 0, 1, 0, 0, 0, 1], c = [0, 0, 0], g = function() {
        function a(c, b) {
          this.boxtype = c;
          "uuid" === c && (this.userType = b);
        }
        a.prototype.layout = function(a) {
          this.offset = a;
          a = 8;
          this.userType && (a += 16);
          return this.size = a;
        };
        a.prototype.write = function(a) {
          k(a, this.offset, this.size);
          k(a, this.offset + 4, v(this.boxtype));
          if (!this.userType) {
            return 8;
          }
          a.set(this.userType, this.offset + 8);
          return 24;
        };
        a.prototype.toUint8Array = function() {
          var a = this.layout(0), a = new Uint8Array(a);
          this.write(a);
          return a;
        };
        return a;
      }();
      a.Box = g;
      var q = function(a) {
        function c(b, e, f) {
          void 0 === e && (e = 0);
          void 0 === f && (f = 0);
          a.call(this, b);
          this.version = e;
          this.flags = f;
        }
        __extends(c, a);
        c.prototype.layout = function(b) {
          return this.size = a.prototype.layout.call(this, b) + 4;
        };
        c.prototype.write = function(b) {
          var e = a.prototype.write.call(this, b);
          k(b, this.offset + e, this.version << 24 | this.flags);
          return e + 4;
        };
        return c;
      }(g);
      a.FullBox = q;
      var t = function(a) {
        function c(b, e, f) {
          a.call(this, "ftype");
          this.majorBrand = b;
          this.minorVersion = e;
          this.compatibleBrands = f;
        }
        __extends(c, a);
        c.prototype.layout = function(b) {
          return this.size = a.prototype.layout.call(this, b) + 4 * (2 + this.compatibleBrands.length);
        };
        c.prototype.write = function(b) {
          var e = this, c = a.prototype.write.call(this, b);
          k(b, this.offset + c, v(this.majorBrand));
          k(b, this.offset + c + 4, this.minorVersion);
          c += 8;
          this.compatibleBrands.forEach(function(a) {
            k(b, e.offset + c, v(a));
            c += 4;
          }, this);
          return c;
        };
        return c;
      }(g);
      a.FileTypeBox = t;
      t = function(a) {
        function c(b, e) {
          a.call(this, b);
          this.children = e;
        }
        __extends(c, a);
        c.prototype.layout = function(b) {
          var e = a.prototype.layout.call(this, b);
          this.children.forEach(function(a) {
            a && (e += a.layout(b + e));
          });
          return this.size = e;
        };
        c.prototype.write = function(b) {
          var e = a.prototype.write.call(this, b);
          this.children.forEach(function(a) {
            a && (e += a.write(b));
          });
          return e;
        };
        return c;
      }(g);
      a.BoxContainerBox = t;
      var m = function(a) {
        function c(b, e, f, g) {
          a.call(this, "moov", d([b], e, [f, g]));
          this.header = b;
          this.tracks = e;
          this.extendsBox = f;
          this.userData = g;
        }
        __extends(c, a);
        return c;
      }(t);
      a.MovieBox = m;
      m = function(a) {
        function c(b, e, f, g, d, m, q, t) {
          void 0 === g && (g = 1);
          void 0 === d && (d = 1);
          void 0 === m && (m = l);
          void 0 === q && (q = -20828448E5);
          void 0 === t && (t = -20828448E5);
          a.call(this, "mvhd", 0, 0);
          this.timescale = b;
          this.duration = e;
          this.nextTrackId = f;
          this.rate = g;
          this.volume = d;
          this.matrix = m;
          this.creationTime = q;
          this.modificationTime = t;
        }
        __extends(c, a);
        c.prototype.layout = function(b) {
          return this.size = a.prototype.layout.call(this, b) + 16 + 4 + 2 + 2 + 8 + 36 + 24 + 4;
        };
        c.prototype.write = function(b) {
          var e = a.prototype.write.call(this, b);
          k(b, this.offset + e, (this.creationTime - -20828448E5) / 1E3 | 0);
          k(b, this.offset + e + 4, (this.modificationTime - -20828448E5) / 1E3 | 0);
          k(b, this.offset + e + 8, this.timescale);
          k(b, this.offset + e + 12, this.duration);
          e += 16;
          k(b, this.offset + e, 65536 * this.rate | 0);
          k(b, this.offset + e + 4, (256 * this.volume | 0) << 16);
          k(b, this.offset + e + 8, 0);
          k(b, this.offset + e + 12, 0);
          e += 16;
          k(b, this.offset + e, 65536 * this.matrix[0] | 0);
          k(b, this.offset + e + 4, 65536 * this.matrix[1] | 0);
          k(b, this.offset + e + 8, 65536 * this.matrix[2] | 0);
          k(b, this.offset + e + 12, 65536 * this.matrix[3] | 0);
          k(b, this.offset + e + 16, 65536 * this.matrix[4] | 0);
          k(b, this.offset + e + 20, 65536 * this.matrix[5] | 0);
          k(b, this.offset + e + 24, 1073741824 * this.matrix[6] | 0);
          k(b, this.offset + e + 28, 1073741824 * this.matrix[7] | 0);
          k(b, this.offset + e + 32, 1073741824 * this.matrix[8] | 0);
          e += 36;
          k(b, this.offset + e, 0);
          k(b, this.offset + e + 4, 0);
          k(b, this.offset + e + 8, 0);
          k(b, this.offset + e + 12, 0);
          k(b, this.offset + e + 16, 0);
          k(b, this.offset + e + 20, 0);
          e += 24;
          k(b, this.offset + e, this.nextTrackId);
          return e + 4;
        };
        return c;
      }(q);
      a.MovieHeaderBox = m;
      (function(a) {
        a[a.TRACK_ENABLED = 1] = "TRACK_ENABLED";
        a[a.TRACK_IN_MOVIE = 2] = "TRACK_IN_MOVIE";
        a[a.TRACK_IN_PREVIEW = 4] = "TRACK_IN_PREVIEW";
      })(a.TrackHeaderFlags || (a.TrackHeaderFlags = {}));
      m = function(a) {
        function c(b, e, f, g, d, m, q, t, n, k, v) {
          void 0 === q && (q = 0);
          void 0 === t && (t = 0);
          void 0 === n && (n = l);
          void 0 === k && (k = -20828448E5);
          void 0 === v && (v = -20828448E5);
          a.call(this, "tkhd", 0, b);
          this.trackId = e;
          this.duration = f;
          this.width = g;
          this.height = d;
          this.volume = m;
          this.alternateGroup = q;
          this.layer = t;
          this.matrix = n;
          this.creationTime = k;
          this.modificationTime = v;
        }
        __extends(c, a);
        c.prototype.layout = function(b) {
          return this.size = a.prototype.layout.call(this, b) + 20 + 8 + 6 + 2 + 36 + 8;
        };
        c.prototype.write = function(b) {
          var e = a.prototype.write.call(this, b);
          k(b, this.offset + e, (this.creationTime - -20828448E5) / 1E3 | 0);
          k(b, this.offset + e + 4, (this.modificationTime - -20828448E5) / 1E3 | 0);
          k(b, this.offset + e + 8, this.trackId);
          k(b, this.offset + e + 12, 0);
          k(b, this.offset + e + 16, this.duration);
          e += 20;
          k(b, this.offset + e, 0);
          k(b, this.offset + e + 4, 0);
          k(b, this.offset + e + 8, this.layer << 16 | this.alternateGroup);
          k(b, this.offset + e + 12, (256 * this.volume | 0) << 16);
          e += 16;
          k(b, this.offset + e, 65536 * this.matrix[0] | 0);
          k(b, this.offset + e + 4, 65536 * this.matrix[1] | 0);
          k(b, this.offset + e + 8, 65536 * this.matrix[2] | 0);
          k(b, this.offset + e + 12, 65536 * this.matrix[3] | 0);
          k(b, this.offset + e + 16, 65536 * this.matrix[4] | 0);
          k(b, this.offset + e + 20, 65536 * this.matrix[5] | 0);
          k(b, this.offset + e + 24, 1073741824 * this.matrix[6] | 0);
          k(b, this.offset + e + 28, 1073741824 * this.matrix[7] | 0);
          k(b, this.offset + e + 32, 1073741824 * this.matrix[8] | 0);
          e += 36;
          k(b, this.offset + e, 65536 * this.width | 0);
          k(b, this.offset + e + 4, 65536 * this.height | 0);
          return e + 8;
        };
        return c;
      }(q);
      a.TrackHeaderBox = m;
      m = function(a) {
        function c(b, e, f, g, d) {
          void 0 === f && (f = "unk");
          void 0 === g && (g = -20828448E5);
          void 0 === d && (d = -20828448E5);
          a.call(this, "mdhd", 0, 0);
          this.timescale = b;
          this.duration = e;
          this.language = f;
          this.creationTime = g;
          this.modificationTime = d;
        }
        __extends(c, a);
        c.prototype.layout = function(b) {
          return this.size = a.prototype.layout.call(this, b) + 16 + 4;
        };
        c.prototype.write = function(b) {
          var e = a.prototype.write.call(this, b);
          k(b, this.offset + e, (this.creationTime - -20828448E5) / 1E3 | 0);
          k(b, this.offset + e + 4, (this.modificationTime - -20828448E5) / 1E3 | 0);
          k(b, this.offset + e + 8, this.timescale);
          k(b, this.offset + e + 12, this.duration);
          var c = this.language;
          k(b, this.offset + e + 16, ((c.charCodeAt(0) & 31) << 10 | (c.charCodeAt(1) & 31) << 5 | c.charCodeAt(2) & 31) << 16);
          return e + 20;
        };
        return c;
      }(q);
      a.MediaHeaderBox = m;
      m = function(a) {
        function c(b, e) {
          a.call(this, "hdlr", 0, 0);
          this.handlerType = b;
          this.name = e;
          this._encodedName = u(this.name);
        }
        __extends(c, a);
        c.prototype.layout = function(b) {
          return this.size = a.prototype.layout.call(this, b) + 8 + 12 + (this._encodedName.length + 1);
        };
        c.prototype.write = function(b) {
          var e = a.prototype.write.call(this, b);
          k(b, this.offset + e, 0);
          k(b, this.offset + e + 4, v(this.handlerType));
          k(b, this.offset + e + 8, 0);
          k(b, this.offset + e + 12, 0);
          k(b, this.offset + e + 16, 0);
          e += 20;
          b.set(this._encodedName, this.offset + e);
          b[this.offset + e + this._encodedName.length] = 0;
          return e += this._encodedName.length + 1;
        };
        return c;
      }(q);
      a.HandlerBox = m;
      m = function(a) {
        function c(b) {
          void 0 === b && (b = 0);
          a.call(this, "smhd", 0, 0);
          this.balance = b;
        }
        __extends(c, a);
        c.prototype.layout = function(b) {
          return this.size = a.prototype.layout.call(this, b) + 4;
        };
        c.prototype.write = function(b) {
          var e = a.prototype.write.call(this, b);
          k(b, this.offset + e, (256 * this.balance | 0) << 16);
          return e + 4;
        };
        return c;
      }(q);
      a.SoundMediaHeaderBox = m;
      m = function(a) {
        function f(b, e) {
          void 0 === b && (b = 0);
          void 0 === e && (e = c);
          a.call(this, "vmhd", 0, 0);
          this.graphicsMode = b;
          this.opColor = e;
        }
        __extends(f, a);
        f.prototype.layout = function(b) {
          return this.size = a.prototype.layout.call(this, b) + 8;
        };
        f.prototype.write = function(b) {
          var e = a.prototype.write.call(this, b);
          k(b, this.offset + e, this.graphicsMode << 16 | this.opColor[0]);
          k(b, this.offset + e + 4, this.opColor[1] << 16 | this.opColor[2]);
          return e + 8;
        };
        return f;
      }(q);
      a.VideoMediaHeaderBox = m;
      a.SELF_CONTAINED_DATA_REFERENCE_FLAG = 1;
      m = function(c) {
        function f(b, e) {
          void 0 === e && (e = null);
          c.call(this, "url ", 0, b);
          this.location = e;
          b & a.SELF_CONTAINED_DATA_REFERENCE_FLAG || (this._encodedLocation = u(e));
        }
        __extends(f, c);
        f.prototype.layout = function(b) {
          b = c.prototype.layout.call(this, b);
          this._encodedLocation && (b += this._encodedLocation.length + 1);
          return this.size = b;
        };
        f.prototype.write = function(b) {
          var a = c.prototype.write.call(this, b);
          this._encodedLocation && (b.set(this._encodedLocation, this.offset + a), b[this.offset + a + this._encodedLocation.length] = 0, a += this._encodedLocation.length);
          return a;
        };
        return f;
      }(q);
      a.DataEntryUrlBox = m;
      m = function(a) {
        function c(b) {
          a.call(this, "dref", 0, 0);
          this.entries = b;
        }
        __extends(c, a);
        c.prototype.layout = function(b) {
          var e = a.prototype.layout.call(this, b) + 4;
          this.entries.forEach(function(a) {
            e += a.layout(b + e);
          });
          return this.size = e;
        };
        c.prototype.write = function(b) {
          var e = a.prototype.write.call(this, b);
          k(b, this.offset + e, this.entries.length);
          this.entries.forEach(function(a) {
            e += a.write(b);
          });
          return e;
        };
        return c;
      }(q);
      a.DataReferenceBox = m;
      m = function(a) {
        function c(b) {
          a.call(this, "dinf", [b]);
          this.dataReference = b;
        }
        __extends(c, a);
        return c;
      }(t);
      a.DataInformationBox = m;
      m = function(a) {
        function c(b) {
          a.call(this, "stsd", 0, 0);
          this.entries = b;
        }
        __extends(c, a);
        c.prototype.layout = function(b) {
          var e = a.prototype.layout.call(this, b), e = e + 4;
          this.entries.forEach(function(a) {
            e += a.layout(b + e);
          });
          return this.size = e;
        };
        c.prototype.write = function(b) {
          var e = a.prototype.write.call(this, b);
          k(b, this.offset + e, this.entries.length);
          e += 4;
          this.entries.forEach(function(a) {
            e += a.write(b);
          });
          return e;
        };
        return c;
      }(q);
      a.SampleDescriptionBox = m;
      m = function(a) {
        function c(b, e, f, g, d) {
          a.call(this, "stbl", [b, e, f, g, d]);
          this.sampleDescriptions = b;
          this.timeToSample = e;
          this.sampleToChunk = f;
          this.sampleSizes = g;
          this.chunkOffset = d;
        }
        __extends(c, a);
        return c;
      }(t);
      a.SampleTableBox = m;
      m = function(a) {
        function c(b, e, f) {
          a.call(this, "minf", [b, e, f]);
          this.header = b;
          this.info = e;
          this.sampleTable = f;
        }
        __extends(c, a);
        return c;
      }(t);
      a.MediaInformationBox = m;
      m = function(a) {
        function c(b, e, f) {
          a.call(this, "mdia", [b, e, f]);
          this.header = b;
          this.handler = e;
          this.info = f;
        }
        __extends(c, a);
        return c;
      }(t);
      a.MediaBox = m;
      m = function(a) {
        function c(b, e) {
          a.call(this, "trak", [b, e]);
          this.header = b;
          this.media = e;
        }
        __extends(c, a);
        return c;
      }(t);
      a.TrackBox = m;
      m = function(a) {
        function c(b, e, f, g, d) {
          a.call(this, "trex", 0, 0);
          this.trackId = b;
          this.defaultSampleDescriptionIndex = e;
          this.defaultSampleDuration = f;
          this.defaultSampleSize = g;
          this.defaultSampleFlags = d;
        }
        __extends(c, a);
        c.prototype.layout = function(b) {
          return this.size = a.prototype.layout.call(this, b) + 20;
        };
        c.prototype.write = function(b) {
          var e = a.prototype.write.call(this, b);
          k(b, this.offset + e, this.trackId);
          k(b, this.offset + e + 4, this.defaultSampleDescriptionIndex);
          k(b, this.offset + e + 8, this.defaultSampleDuration);
          k(b, this.offset + e + 12, this.defaultSampleSize);
          k(b, this.offset + e + 16, this.defaultSampleFlags);
          return e + 20;
        };
        return c;
      }(q);
      a.TrackExtendsBox = m;
      m = function(a) {
        function c(b, e, f) {
          a.call(this, "mvex", d([b], e, [f]));
          this.header = b;
          this.tracDefaults = e;
          this.levels = f;
        }
        __extends(c, a);
        return c;
      }(t);
      a.MovieExtendsBox = m;
      m = function(a) {
        function c(b, e) {
          a.call(this, "meta", 0, 0);
          this.handler = b;
          this.otherBoxes = e;
        }
        __extends(c, a);
        c.prototype.layout = function(b) {
          var e = a.prototype.layout.call(this, b), e = e + this.handler.layout(b + e);
          this.otherBoxes.forEach(function(a) {
            e += a.layout(b + e);
          });
          return this.size = e;
        };
        c.prototype.write = function(b) {
          var e = a.prototype.write.call(this, b), e = e + this.handler.write(b);
          this.otherBoxes.forEach(function(a) {
            e += a.write(b);
          });
          return e;
        };
        return c;
      }(q);
      a.MetaBox = m;
      m = function(a) {
        function c(b) {
          a.call(this, "mfhd", 0, 0);
          this.sequenceNumber = b;
        }
        __extends(c, a);
        c.prototype.layout = function(b) {
          return this.size = a.prototype.layout.call(this, b) + 4;
        };
        c.prototype.write = function(b) {
          var e = a.prototype.write.call(this, b);
          k(b, this.offset + e, this.sequenceNumber);
          return e + 4;
        };
        return c;
      }(q);
      a.MovieFragmentHeaderBox = m;
      (function(a) {
        a[a.BASE_DATA_OFFSET_PRESENT = 1] = "BASE_DATA_OFFSET_PRESENT";
        a[a.SAMPLE_DESCRIPTION_INDEX_PRESENT = 2] = "SAMPLE_DESCRIPTION_INDEX_PRESENT";
        a[a.DEFAULT_SAMPLE_DURATION_PRESENT = 8] = "DEFAULT_SAMPLE_DURATION_PRESENT";
        a[a.DEFAULT_SAMPLE_SIZE_PRESENT = 16] = "DEFAULT_SAMPLE_SIZE_PRESENT";
        a[a.DEFAULT_SAMPLE_FLAGS_PRESENT = 32] = "DEFAULT_SAMPLE_FLAGS_PRESENT";
      })(a.TrackFragmentFlags || (a.TrackFragmentFlags = {}));
      m = function(a) {
        function c(b, e, f, g, d, m, l) {
          a.call(this, "tfhd", 0, b);
          this.trackId = e;
          this.baseDataOffset = f;
          this.sampleDescriptionIndex = g;
          this.defaultSampleDuration = d;
          this.defaultSampleSize = m;
          this.defaultSampleFlags = l;
        }
        __extends(c, a);
        c.prototype.layout = function(b) {
          b = a.prototype.layout.call(this, b) + 4;
          var e = this.flags;
          e & 1 && (b += 8);
          e & 2 && (b += 4);
          e & 8 && (b += 4);
          e & 16 && (b += 4);
          e & 32 && (b += 4);
          return this.size = b;
        };
        c.prototype.write = function(b) {
          var e = a.prototype.write.call(this, b), c = this.flags;
          k(b, this.offset + e, this.trackId);
          e += 4;
          c & 1 && (k(b, this.offset + e, 0), k(b, this.offset + e + 4, this.baseDataOffset), e += 8);
          c & 2 && (k(b, this.offset + e, this.sampleDescriptionIndex), e += 4);
          c & 8 && (k(b, this.offset + e, this.defaultSampleDuration), e += 4);
          c & 16 && (k(b, this.offset + e, this.defaultSampleSize), e += 4);
          c & 32 && (k(b, this.offset + e, this.defaultSampleFlags), e += 4);
          return e;
        };
        return c;
      }(q);
      a.TrackFragmentHeaderBox = m;
      m = function(a) {
        function c(b) {
          a.call(this, "tfdt", 0, 0);
          this.baseMediaDecodeTime = b;
        }
        __extends(c, a);
        c.prototype.layout = function(b) {
          return this.size = a.prototype.layout.call(this, b) + 4;
        };
        c.prototype.write = function(b) {
          var e = a.prototype.write.call(this, b);
          k(b, this.offset + e, this.baseMediaDecodeTime);
          return e + 4;
        };
        return c;
      }(q);
      a.TrackFragmentBaseMediaDecodeTimeBox = m;
      m = function(a) {
        function c(b, e, f) {
          a.call(this, "traf", [b, e, f]);
          this.header = b;
          this.decodeTime = e;
          this.run = f;
        }
        __extends(c, a);
        return c;
      }(t);
      a.TrackFragmentBox = m;
      (function(a) {
        a[a.IS_LEADING_MASK = 201326592] = "IS_LEADING_MASK";
        a[a.SAMPLE_DEPENDS_ON_MASK = 50331648] = "SAMPLE_DEPENDS_ON_MASK";
        a[a.SAMPLE_DEPENDS_ON_OTHER = 16777216] = "SAMPLE_DEPENDS_ON_OTHER";
        a[a.SAMPLE_DEPENDS_ON_NO_OTHERS = 33554432] = "SAMPLE_DEPENDS_ON_NO_OTHERS";
        a[a.SAMPLE_IS_DEPENDED_ON_MASK = 12582912] = "SAMPLE_IS_DEPENDED_ON_MASK";
        a[a.SAMPLE_HAS_REDUNDANCY_MASK = 3145728] = "SAMPLE_HAS_REDUNDANCY_MASK";
        a[a.SAMPLE_PADDING_VALUE_MASK = 917504] = "SAMPLE_PADDING_VALUE_MASK";
        a[a.SAMPLE_IS_NOT_SYNC = 65536] = "SAMPLE_IS_NOT_SYNC";
        a[a.SAMPLE_DEGRADATION_PRIORITY_MASK = 65535] = "SAMPLE_DEGRADATION_PRIORITY_MASK";
      })(a.SampleFlags || (a.SampleFlags = {}));
      (function(a) {
        a[a.DATA_OFFSET_PRESENT = 1] = "DATA_OFFSET_PRESENT";
        a[a.FIRST_SAMPLE_FLAGS_PRESENT = 4] = "FIRST_SAMPLE_FLAGS_PRESENT";
        a[a.SAMPLE_DURATION_PRESENT = 256] = "SAMPLE_DURATION_PRESENT";
        a[a.SAMPLE_SIZE_PRESENT = 512] = "SAMPLE_SIZE_PRESENT";
        a[a.SAMPLE_FLAGS_PRESENT = 1024] = "SAMPLE_FLAGS_PRESENT";
        a[a.SAMPLE_COMPOSITION_TIME_OFFSET = 2048] = "SAMPLE_COMPOSITION_TIME_OFFSET";
      })(a.TrackRunFlags || (a.TrackRunFlags = {}));
      q = function(a) {
        function c(b, e, f, g) {
          a.call(this, "trun", 1, b);
          this.samples = e;
          this.dataOffset = f;
          this.firstSampleFlags = g;
        }
        __extends(c, a);
        c.prototype.layout = function(b) {
          b = a.prototype.layout.call(this, b) + 4;
          var e = this.samples.length, c = this.flags;
          c & 1 && (b += 4);
          c & 4 && (b += 4);
          c & 256 && (b += 4 * e);
          c & 512 && (b += 4 * e);
          c & 1024 && (b += 4 * e);
          c & 2048 && (b += 4 * e);
          return this.size = b;
        };
        c.prototype.write = function(b) {
          var e = a.prototype.write.call(this, b), c = this.samples.length, f = this.flags;
          k(b, this.offset + e, c);
          e += 4;
          f & 1 && (k(b, this.offset + e, this.dataOffset), e += 4);
          f & 4 && (k(b, this.offset + e, this.firstSampleFlags), e += 4);
          for (var g = 0;g < c;g++) {
            var d = this.samples[g];
            f & 256 && (k(b, this.offset + e, d.duration), e += 4);
            f & 512 && (k(b, this.offset + e, d.size), e += 4);
            f & 1024 && (k(b, this.offset + e, d.flags), e += 4);
            f & 2048 && (k(b, this.offset + e, d.compositionTimeOffset), e += 4);
          }
          return e;
        };
        return c;
      }(q);
      a.TrackRunBox = q;
      q = function(a) {
        function c(b, e) {
          a.call(this, "moof", d([b], e));
          this.header = b;
          this.trafs = e;
        }
        __extends(c, a);
        return c;
      }(t);
      a.MovieFragmentBox = q;
      q = function(a) {
        function c(b) {
          a.call(this, "mdat");
          this.chunks = b;
        }
        __extends(c, a);
        c.prototype.layout = function(b) {
          var e = a.prototype.layout.call(this, b);
          this.chunks.forEach(function(b) {
            e += b.length;
          });
          return this.size = e;
        };
        c.prototype.write = function(b) {
          var e = this, c = a.prototype.write.call(this, b);
          this.chunks.forEach(function(a) {
            b.set(a, e.offset + c);
            c += a.length;
          }, this);
          return c;
        };
        return c;
      }(g);
      a.MediaDataBox = q;
      q = function(a) {
        function c(b, e) {
          a.call(this, b);
          this.dataReferenceIndex = e;
        }
        __extends(c, a);
        c.prototype.layout = function(b) {
          return this.size = a.prototype.layout.call(this, b) + 8;
        };
        c.prototype.write = function(b) {
          var e = a.prototype.write.call(this, b);
          k(b, this.offset + e, 0);
          k(b, this.offset + e + 4, this.dataReferenceIndex);
          return e + 8;
        };
        return c;
      }(g);
      a.SampleEntry = q;
      t = function(a) {
        function c(b, e, f, g, d, m) {
          void 0 === f && (f = 2);
          void 0 === g && (g = 16);
          void 0 === d && (d = 44100);
          void 0 === m && (m = null);
          a.call(this, b, e);
          this.channelCount = f;
          this.sampleSize = g;
          this.sampleRate = d;
          this.otherBoxes = m;
        }
        __extends(c, a);
        c.prototype.layout = function(b) {
          var e = a.prototype.layout.call(this, b) + 20;
          this.otherBoxes && this.otherBoxes.forEach(function(a) {
            e += a.layout(b + e);
          });
          return this.size = e;
        };
        c.prototype.write = function(b) {
          var e = a.prototype.write.call(this, b);
          k(b, this.offset + e, 0);
          k(b, this.offset + e + 4, 0);
          k(b, this.offset + e + 8, this.channelCount << 16 | this.sampleSize);
          k(b, this.offset + e + 12, 0);
          k(b, this.offset + e + 16, this.sampleRate << 16);
          e += 20;
          this.otherBoxes && this.otherBoxes.forEach(function(a) {
            e += a.write(b);
          });
          return e;
        };
        return c;
      }(q);
      a.AudioSampleEntry = t;
      a.COLOR_NO_ALPHA_VIDEO_SAMPLE_DEPTH = 24;
      q = function(c) {
        function f(b, e, f, g, d, m, l, q, t, n) {
          void 0 === d && (d = "");
          void 0 === m && (m = 72);
          void 0 === l && (l = 72);
          void 0 === q && (q = 1);
          void 0 === t && (t = a.COLOR_NO_ALPHA_VIDEO_SAMPLE_DEPTH);
          void 0 === n && (n = null);
          c.call(this, b, e);
          this.width = f;
          this.height = g;
          this.compressorName = d;
          this.horizResolution = m;
          this.vertResolution = l;
          this.frameCount = q;
          this.depth = t;
          this.otherBoxes = n;
          if (31 < d.length) {
            throw Error("invalid compressor name");
          }
        }
        __extends(f, c);
        f.prototype.layout = function(b) {
          var a = c.prototype.layout.call(this, b) + 16 + 12 + 4 + 2 + 32 + 2 + 2;
          this.otherBoxes && this.otherBoxes.forEach(function(c) {
            a += c.layout(b + a);
          });
          return this.size = a;
        };
        f.prototype.write = function(b) {
          var a = c.prototype.write.call(this, b);
          k(b, this.offset + a, 0);
          k(b, this.offset + a + 4, 0);
          k(b, this.offset + a + 8, 0);
          k(b, this.offset + a + 12, 0);
          a += 16;
          k(b, this.offset + a, this.width << 16 | this.height);
          k(b, this.offset + a + 4, 65536 * this.horizResolution | 0);
          k(b, this.offset + a + 8, 65536 * this.vertResolution | 0);
          a += 12;
          k(b, this.offset + a, 0);
          k(b, this.offset + a + 4, this.frameCount << 16);
          a += 6;
          b[this.offset + a] = this.compressorName.length;
          for (var f = 0;31 > f;f++) {
            b[this.offset + a + f + 1] = f < this.compressorName.length ? this.compressorName.charCodeAt(f) & 127 : 0;
          }
          a += 32;
          k(b, this.offset + a, this.depth << 16 | 65535);
          a += 4;
          this.otherBoxes && this.otherBoxes.forEach(function(c) {
            a += c.write(b);
          });
          return a;
        };
        return f;
      }(q);
      a.VideoSampleEntry = q;
      g = function(a) {
        function c(b, e) {
          a.call(this, b);
          this.data = e;
        }
        __extends(c, a);
        c.prototype.layout = function(b) {
          return this.size = a.prototype.layout.call(this, b) + this.data.length;
        };
        c.prototype.write = function(b) {
          var e = a.prototype.write.call(this, b);
          b.set(this.data, this.offset + e);
          return e + this.data.length;
        };
        return c;
      }(g);
      a.RawTag = g;
    })(d.Iso || (d.Iso = {}));
  })(d.MP4 || (d.MP4 = {}));
})(RtmpJs || (RtmpJs = {}));
(function(d) {
  (function(d) {
    function a(a) {
      for (var c = a.length >> 1, g = new Uint8Array(c), h = 0;h < c;h++) {
        g[h] = parseInt(a.substr(2 * h, 2), 16);
      }
      return g;
    }
    var n = [5500, 11025, 22050, 44100], w = ["PCM", "ADPCM", "MP3", "PCM le", "Nellymouser16", "Nellymouser8", "Nellymouser", "G.711 A-law", "G.711 mu-law", null, "AAC", "Speex", "MP3 8khz"], v;
    (function(a) {
      a[a.HEADER = 0] = "HEADER";
      a[a.RAW = 1] = "RAW";
    })(v || (v = {}));
    var u = [null, "JPEG", "Sorenson", "Screen", "VP6", "VP6 alpha", "Screen2", "AVC"], l;
    (function(a) {
      a[a.KEY = 1] = "KEY";
      a[a.INNER = 2] = "INNER";
      a[a.DISPOSABLE = 3] = "DISPOSABLE";
      a[a.GENERATED = 4] = "GENERATED";
      a[a.INFO = 5] = "INFO";
    })(l || (l = {}));
    var c;
    (function(a) {
      a[a.HEADER = 0] = "HEADER";
      a[a.NALU = 1] = "NALU";
      a[a.END = 2] = "END";
    })(c || (c = {}));
    var g;
    (function(a) {
      a[a.CAN_GENERATE_HEADER = 0] = "CAN_GENERATE_HEADER";
      a[a.NEED_HEADER_DATA = 1] = "NEED_HEADER_DATA";
      a[a.MAIN_PACKETS = 2] = "MAIN_PACKETS";
    })(g || (g = {}));
    v = function() {
      function c(a) {
        var g = this;
        this.oncodecinfo = function(a) {
        };
        this.ondata = function(a) {
          throw Error("MP4Mux.ondata is not set");
        };
        this.metadata = a;
        this.trackStates = this.metadata.tracks.map(function(a, c) {
          var b = {trackId:c + 1, trackInfo:a, cachedDuration:0, samplesProcessed:0, initializationData:[]};
          g.metadata.audioTrackId === c && (g.audioTrackState = b);
          g.metadata.videoTrackId === c && (g.videoTrackState = b);
          return b;
        }, this);
        this._checkIfNeedHeaderData();
        this.filePos = 0;
        this.cachedPackets = [];
        this.chunkIndex = 0;
      }
      c.prototype.pushPacket = function(a, c, h) {
        0 === this.state && this._tryGenerateHeader();
        switch(a) {
          case 8:
            a = this.audioTrackState;
            var f = 0, b = 1, e = c[f], g = e >> 4, d;
            f++;
            switch(g) {
              case 10:
                b = c[f++];
                d = 1024;
                break;
              case 2:
                d = c[f + 1] >> 3 & 3;
                var l = c[f + 1] >> 1 & 3;
                d = 1 === l ? 3 === d ? 1152 : 576 : 3 === l ? 384 : 1152;
            }
            c = {codecDescription:w[g], codecId:g, data:c.subarray(f), rate:n[e >> 2 & 3], size:e & 2 ? 16 : 8, channels:e & 1 ? 2 : 1, samples:d, packetType:b};
            if (!a || a.trackInfo.codecId !== c.codecId) {
              throw Error("Unexpected audio packet codec: " + c.codecDescription);
            }
            switch(c.codecId) {
              default:
                throw Error("Unsupported audio codec: " + c.codecDescription);;
              case 2:
                break;
              case 10:
                if (0 === c.packetType) {
                  a.initializationData.push(c.data);
                  return;
                }
              ;
            }
            this.cachedPackets.push({packet:c, timestamp:h, trackId:a.trackId});
            break;
          case 9:
            a = this.videoTrackState;
            f = 0;
            e = c[f] >> 4;
            b = c[f] & 15;
            f++;
            e = {frameType:e, codecId:b, codecDescription:u[b]};
            switch(b) {
              case 7:
                b = c[f++];
                e.packetType = b;
                e.compositionTime = (c[f] << 24 | c[f + 1] << 16 | c[f + 2] << 8) >> 8;
                f += 3;
                break;
              case 4:
                e.packetType = 1, e.horizontalOffset = c[f] >> 4 & 15, e.verticalOffset = c[f] & 15, e.compositionTime = 0, f++;
            }
            e.data = c.subarray(f);
            if (!a || a.trackInfo.codecId !== e.codecId) {
              throw Error("Unexpected video packet codec: " + e.codecDescription);
            }
            switch(e.codecId) {
              default:
                throw Error("unsupported video codec: " + e.codecDescription);;
              case 4:
                break;
              case 7:
                if (0 === e.packetType) {
                  a.initializationData.push(e.data);
                  return;
                }
              ;
            }
            this.cachedPackets.push({packet:e, timestamp:h, trackId:a.trackId});
            break;
          default:
            throw Error("unknown packet type: " + a);;
        }
        1 === this.state && this._tryGenerateHeader();
        200 <= this.cachedPackets.length && 2 === this.state && this._chunk();
      };
      c.prototype.flush = function() {
        0 < this.cachedPackets.length && this._chunk();
      };
      c.prototype._checkIfNeedHeaderData = function() {
        this.trackStates.some(function(a) {
          return 10 === a.trackInfo.codecId || 7 === a.trackInfo.codecId;
        }) ? this.state = 1 : this.state = 0;
      };
      c.prototype._tryGenerateHeader = function() {
        if (this.trackStates.every(function(b) {
          switch(b.trackInfo.codecId) {
            case 10:
            ;
            case 7:
              return 0 < b.initializationData.length;
            default:
              return !0;
          }
        })) {
          for (var c = ["isom"], g = [], h = 0;h < this.trackStates.length;h++) {
            var f = this.trackStates[h], b = f.trackInfo, e;
            switch(b.codecId) {
              case 10:
                var l = f.initializationData[0];
                e = new d.Iso.AudioSampleEntry("mp4a", 1, b.channels, b.samplesize, b.samplerate);
                var p = new Uint8Array(41 + l.length);
                p.set(a("0000000003808080"), 0);
                p[8] = 32 + l.length;
                p.set(a("00020004808080"), 9);
                p[16] = 18 + l.length;
                p.set(a("40150000000000FA000000000005808080"), 17);
                p[34] = l.length;
                p.set(l, 35);
                p.set(a("068080800102"), 35 + l.length);
                e.otherBoxes = [new d.Iso.RawTag("esds", p)];
                f.mimeTypeCodec = "mp4a.40." + (l[0] >> 3);
                break;
              case 2:
                e = new d.Iso.AudioSampleEntry(".mp3", 1, b.channels, b.samplesize, b.samplerate);
                f.mimeTypeCodec = "mp3";
                break;
              case 7:
                l = f.initializationData[0];
                e = new d.Iso.VideoSampleEntry("avc1", 1, b.width, b.height);
                e.otherBoxes = [new d.Iso.RawTag("avcC", l)];
                f.mimeTypeCodec = "avc1." + (16777216 | l[1] << 16 | l[2] << 8 | l[3]).toString(16).substr(1);
                c.push("iso2", "avc1", "mp41");
                break;
              case 4:
                e = new d.Iso.VideoSampleEntry("VP6F", 1, b.width, b.height);
                e.otherBoxes = [new d.Iso.RawTag("glbl", a("00"))];
                f.mimeTypeCodec = "avc1.42001E";
                break;
              default:
                throw Error("not supported track type");;
            }
            var q;
            f === this.audioTrackState ? q = new d.Iso.TrackBox(new d.Iso.TrackHeaderBox(3, f.trackId, -1, 0, 0, 1, h), new d.Iso.MediaBox(new d.Iso.MediaHeaderBox(b.timescale, -1, b.language), new d.Iso.HandlerBox("soun", "SoundHandler"), new d.Iso.MediaInformationBox(new d.Iso.SoundMediaHeaderBox, new d.Iso.DataInformationBox(new d.Iso.DataReferenceBox([new d.Iso.DataEntryUrlBox(d.Iso.SELF_CONTAINED_DATA_REFERENCE_FLAG)])), new d.Iso.SampleTableBox(new d.Iso.SampleDescriptionBox([e]), new d.Iso.RawTag("stts", 
            a("0000000000000000")), new d.Iso.RawTag("stsc", a("0000000000000000")), new d.Iso.RawTag("stsz", a("000000000000000000000000")), new d.Iso.RawTag("stco", a("0000000000000000")))))) : f === this.videoTrackState && (q = new d.Iso.TrackBox(new d.Iso.TrackHeaderBox(3, f.trackId, -1, b.width, b.height, 0, h), new d.Iso.MediaBox(new d.Iso.MediaHeaderBox(b.timescale, -1, b.language), new d.Iso.HandlerBox("vide", "VideoHandler"), new d.Iso.MediaInformationBox(new d.Iso.VideoMediaHeaderBox, new d.Iso.DataInformationBox(new d.Iso.DataReferenceBox([new d.Iso.DataEntryUrlBox(d.Iso.SELF_CONTAINED_DATA_REFERENCE_FLAG)])), 
            new d.Iso.SampleTableBox(new d.Iso.SampleDescriptionBox([e]), new d.Iso.RawTag("stts", a("0000000000000000")), new d.Iso.RawTag("stsc", a("0000000000000000")), new d.Iso.RawTag("stsz", a("000000000000000000000000")), new d.Iso.RawTag("stco", a("0000000000000000")))))));
            g.push(q);
          }
          h = new d.Iso.MovieExtendsBox(null, [new d.Iso.TrackExtendsBox(1, 1, 0, 0, 0), new d.Iso.TrackExtendsBox(2, 1, 0, 0, 0)], null);
          f = new d.Iso.BoxContainerBox("udat", [new d.Iso.MetaBox(new d.Iso.RawTag("hdlr", a("00000000000000006D6469726170706C000000000000000000")), [new d.Iso.RawTag("ilst", a("00000025A9746F6F0000001D6461746100000001000000004C61766635342E36332E313034"))])]);
          b = new d.Iso.MovieHeaderBox(1E3, 0, this.trackStates.length + 1);
          g = new d.Iso.MovieBox(b, g, h, f);
          c = new d.Iso.FileTypeBox("isom", 512, c);
          h = c.layout(0);
          f = g.layout(h);
          h = new Uint8Array(h + f);
          c.write(h);
          g.write(h);
          this.oncodecinfo(this.trackStates.map(function(b) {
            return b.mimeTypeCodec;
          }));
          this.ondata(h);
          this.filePos += h.length;
          this.state = 2;
        }
      };
      c.prototype._chunk = function() {
        var a, c = this.cachedPackets;
        if (0 !== c.length) {
          for (var h = [], f = 0, b = [], e = [], g = 0;g < this.trackStates.length;g++) {
            var p = this.trackStates[g], l = p.trackInfo, q = p.trackId, n = c.filter(function(b) {
              return b.trackId === q;
            });
            if (0 !== n.length) {
              var v = new d.Iso.TrackFragmentBaseMediaDecodeTimeBox(p.cachedDuration), u;
              e.push(f);
              switch(l.codecId) {
                case 10:
                ;
                case 2:
                  u = [];
                  for (a = 0;a < n.length;a++) {
                    var w = n[a].packet, J = Math.round(w.samples * l.timescale / l.samplerate);
                    h.push(w.data);
                    f += w.data.length;
                    u.push({duration:J, size:w.data.length});
                    p.samplesProcessed += w.samples;
                  }
                  a = 32;
                  a = new d.Iso.TrackFragmentHeaderBox(a, q, 0, 0, 0, 0, 33554432);
                  n = 769;
                  u = new d.Iso.TrackRunBox(n, u, 0, 0);
                  p.cachedDuration = Math.round(p.samplesProcessed * l.timescale / l.samplerate);
                  break;
                case 7:
                ;
                case 4:
                  u = [];
                  w = p.samplesProcessed;
                  J = Math.round(w * l.timescale / l.framerate);
                  for (a = 0;a < n.length;a++) {
                    var P = n[a].packet;
                    w++;
                    var y = Math.round(w * l.timescale / l.framerate), K = y - J, J = y, H = Math.round(w * l.timescale / l.framerate + P.compositionTime * l.timescale / 1E3);
                    h.push(P.data);
                    f += P.data.length;
                    u.push({duration:K, size:P.data.length, flags:1 === P.frameType ? 33554432 : 16842752, compositionTimeOffset:H - y});
                  }
                  a = 32;
                  a = new d.Iso.TrackFragmentHeaderBox(a, q, 0, 0, 0, 0, 33554432);
                  n = 3841;
                  u = new d.Iso.TrackRunBox(n, u, 0, 0);
                  p.cachedDuration = J;
                  p.samplesProcessed = w;
                  break;
                default:
                  throw Error("Un codec");;
              }
              p = new d.Iso.TrackFragmentBox(a, v, u);
              b.push(p);
            }
          }
          this.cachedPackets.splice(0, c.length);
          g = new d.Iso.MovieFragmentHeaderBox(++this.chunkIndex);
          c = new d.Iso.MovieFragmentBox(g, b);
          f = c.layout(0);
          h = new d.Iso.MediaDataBox(h);
          p = h.layout(f);
          l = f + 8;
          for (g = 0;g < b.length;g++) {
            b[g].run.dataOffset = l + e[g];
          }
          b = new Uint8Array(f + p);
          c.write(b);
          h.write(b);
          this.ondata(b);
          this.filePos += b.length;
        }
      };
      return c;
    }();
    d.MP4Mux = v;
    d.parseFLVMetadata = function(a) {
      var c = [], g = -1, h = -1, f = +a.asGetPublicProperty("duration"), b, e, d = a.asGetPublicProperty("audiocodecid");
      switch(d) {
        case 2:
        ;
        case "mp3":
          b = "mp3";
          e = 2;
          break;
        case 10:
        ;
        case "mp4a":
          b = "mp4a";
          e = 10;
          break;
        default:
          if (!isNaN(d)) {
            throw Error("Unsupported audio codec: " + d);
          }
          b = null;
          e = -1;
      }
      var p, l, n = a.asGetPublicProperty("videocodecid");
      switch(n) {
        case 4:
        ;
        case "vp6f":
          p = "vp6f";
          l = 4;
          break;
        case 7:
        ;
        case "avc1":
          p = "avc1";
          l = 7;
          break;
        default:
          if (!isNaN(n)) {
            throw Error("Unsupported video codec: " + n);
          }
          p = null;
          l = -1;
      }
      b = null === b ? null : {codecDescription:b, codecId:e, language:"und", timescale:+a.asGetPublicProperty("audiosamplerate") || 44100, samplerate:+a.asGetPublicProperty("audiosamplerate") || 44100, channels:+a.asGetPublicProperty("audiochannels") || 2, samplesize:16};
      p = null === p ? null : {codecDescription:p, codecId:l, language:"und", timescale:6E4, framerate:+a.asGetPublicProperty("videoframerate") || +a.asGetPublicProperty("framerate"), width:+a.asGetPublicProperty("width"), height:+a.asGetPublicProperty("height")};
      if (a = a.asGetPublicProperty("trackinfo")) {
        for (l = 0;l < a.length;l++) {
          e = a[l];
          var k = e.asGetPublicProperty("sampledescription")[0];
          k.asGetPublicProperty("sampletype") === d ? (b.language = e.asGetPublicProperty("language"), b.timescale = +e.asGetPublicProperty("timescale")) : k.asGetPublicProperty("sampletype") === n && (p.language = e.asGetPublicProperty("language"), p.timescale = +e.asGetPublicProperty("timescale"));
        }
      }
      p && (h = c.length, c.push(p));
      b && (g = c.length, c.push(b));
      return {tracks:c, duration:f, audioTrackId:g, videoTrackId:h};
    };
  })(d.MP4 || (d.MP4 = {}));
})(RtmpJs || (RtmpJs = {}));
(function(d) {
  (function(d) {
    var a = function() {
      function a() {
        this.state = this.state = 0;
        this.buffer = new ArrayBuffer(1024);
        this.previousTagSize = this.bufferSize = 0;
        this.onClose = this.onTag = this.onHeader = this.onError = null;
      }
      a.prototype.push = function(a) {
        var d;
        if (0 < this.bufferSize) {
          d = this.bufferSize + a.length;
          if (this.buffer.byteLength < d) {
            var n = new Uint8Array(this.buffer, 0, this.bufferSize);
            this.buffer = new ArrayBuffer(d);
            d = new Uint8Array(this.buffer);
            d.set(n);
          } else {
            d = new Uint8Array(this.buffer, 0, d);
          }
          d.set(a, this.bufferSize);
        } else {
          d = a;
        }
        a = 0;
        for (n = d.length;a < n;) {
          var l = 0;
          switch(this.state) {
            case 0:
              if (a + 9 > n) {
                break;
              }
              var c = d[a + 5] << 24 | d[a + 6] << 16 | d[a + 7] << 8 | d[a + 8];
              if (9 > c) {
                this._error("Invalid header length");
                break;
              }
              if (a + c > n) {
                break;
              }
              if (70 !== d[a] || 76 !== d[a + 1] || 86 !== d[a + 2] || 1 !== d[a + 3] || 0 !== (d[a + 4] & 250)) {
                this._error("Invalid FLV header");
                break;
              }
              var g = d[a + 4], l = 9 < c ? d.subarray(a + 9, a + c) : null;
              this.onHeader && this.onHeader({hasAudio:!!(g & 4), hasVideo:!!(g & 1), extra:l});
              this.state = 2;
              l = c;
              break;
            case 2:
              if (a + 4 + 11 > n) {
                break;
              }
              if ((d[a + 0] << 24 | d[a + 1] << 16 | d[a + 2] << 8 | d[a + 3]) !== this.previousTagSize) {
                this._error("Invalid PreviousTagSize");
                break;
              }
              var c = d[a + 5] << 16 | d[a + 6] << 8 | d[a + 7], q = a + 4 + 11;
              if (q + c > n) {
                break;
              }
              g = d[a + 4];
              if (0 !== (d[a + 12] << 16 | d[a + 13] << 8 | d[a + 14]) || 0 !== (g & 192)) {
                this._error("Invalid FLV tag");
                break;
              }
              var t = g & 31;
              if (8 !== t && 9 !== t && 18 !== t) {
                this._error("Invalid FLV tag type");
                break;
              }
              var g = !!(g & 32), m = d[a + 8] << 16 | d[a + 9] << 8 | d[a + 10] | d[d + 11] << 24;
              this.onTag && this.onTag({type:t, needPreprocessing:g, timestamp:m, data:d.subarray(q, q + c)});
              l += 15 + c;
              this.previousTagSize = c + 11;
              this.state = 2;
              break;
            default:
              throw Error("invalid state");;
          }
          if (0 === l) {
            break;
          }
          a += l;
        }
        a < d.length ? (this.bufferSize = d.length - a, this.buffer.byteLength < this.bufferSize && (this.buffer = new ArrayBuffer(this.bufferSize)), (new Uint8Array(this.buffer)).set(d.subarray(a))) : this.bufferSize = 0;
      };
      a.prototype._error = function(a) {
        this.state = -1;
        this.onError && this.onError(a);
      };
      a.prototype.close = function() {
        this.onClose && this.onClose();
      };
      return a;
    }();
    d.FLVParser = a;
  })(d.FLV || (d.FLV = {}));
})(RtmpJs || (RtmpJs = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(d) {
        (function(k) {
          function v(a) {
            switch(a) {
              case c:
              ;
              case -g:
                return 0;
              case l:
              ;
              case -l:
                return -1;
              case g:
              ;
              case -c:
                return 0;
              default:
                return Math.cos(a);
            }
          }
          function u(a) {
            switch(a) {
              case c:
              ;
              case -g:
                return 1;
              case l:
              ;
              case -l:
                return 0;
              case g:
              ;
              case -c:
                return -1;
              default:
                return Math.sin(a);
            }
          }
          var l = Math.PI, c = l / 2, g = l + c, q = 2 * l, t = function(a) {
            function c(a, b, e, h, g, d) {
              void 0 === a && (a = 1);
              void 0 === b && (b = 0);
              void 0 === e && (e = 0);
              void 0 === h && (h = 1);
              void 0 === g && (g = 0);
              void 0 === d && (d = 0);
              var m = this._data = new Float64Array(6);
              m[0] = a;
              m[1] = b;
              m[2] = e;
              m[3] = h;
              m[4] = g;
              m[5] = d;
            }
            __extends(c, a);
            c.FromUntyped = function(a) {
              return new d.geom.Matrix(a.a, a.b, a.c, a.d, a.tx, a.ty);
            };
            c.FromDataBuffer = function(a) {
              return new d.geom.Matrix(a.readFloat(), a.readFloat(), a.readFloat(), a.readFloat(), a.readFloat(), a.readFloat());
            };
            Object.defineProperty(c.prototype, "a", {get:function() {
              return this._data[0];
            }, set:function(a) {
              this._data[0] = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "b", {get:function() {
              return this._data[1];
            }, set:function(a) {
              this._data[1] = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "c", {get:function() {
              return this._data[2];
            }, set:function(a) {
              this._data[2] = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "d", {get:function() {
              return this._data[3];
            }, set:function(a) {
              this._data[3] = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "tx", {get:function() {
              return this._data[4];
            }, set:function(a) {
              this._data[4] = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "ty", {get:function() {
              return this._data[5];
            }, set:function(a) {
              this._data[5] = a;
            }, enumerable:!0, configurable:!0});
            c.prototype.concat = function(a) {
              var b = this._data;
              a = a._data;
              var e = b[0] * a[0], c = 0, h = 0, g = b[3] * a[3], d = b[4] * a[0] + a[4], m = b[5] * a[3] + a[5];
              if (0 !== b[1] || 0 !== b[2] || 0 !== a[1] || 0 !== a[2]) {
                e += b[1] * a[2], g += b[2] * a[1], c += b[0] * a[1] + b[1] * a[3], h += b[2] * a[0] + b[3] * a[2], d += b[5] * a[2], m += b[4] * a[1];
              }
              b[0] = e;
              b[1] = c;
              b[2] = h;
              b[3] = g;
              b[4] = d;
              b[5] = m;
            };
            c.prototype.preMultiply = function(a) {
              this.preMultiplyInto(a, this);
            };
            c.prototype.preMultiplyInto = function(a, b) {
              var e = this._data, c = a._data, h = b._data, g = c[0] * e[0], d = 0, m = 0, l = c[3] * e[3], q = c[4] * e[0] + e[4], n = c[5] * e[3] + e[5];
              if (0 !== c[1] || 0 !== c[2] || 0 !== e[1] || 0 !== e[2]) {
                g += c[1] * e[2], l += c[2] * e[1], d += c[0] * e[1] + c[1] * e[3], m += c[2] * e[0] + c[3] * e[2], q += c[5] * e[2], n += c[4] * e[1];
              }
              h[0] = g;
              h[1] = d;
              h[2] = m;
              h[3] = l;
              h[4] = q;
              h[5] = n;
            };
            c.prototype.invert = function() {
              this.invertInto(this);
            };
            c.prototype.invertInto = function(a) {
              var b = this._data, e = a._data, c = b[1], h = b[2], g = b[4], d = b[5];
              if (0 === c && 0 === h) {
                var m = e[0] = 1 / b[0], b = e[3] = 1 / b[3];
                e[1] = e[2] = 0;
                e[4] = -m * g;
                e[5] = -b * d;
              } else {
                var m = b[0], b = b[3], l = m * b - c * h;
                0 === l ? a.identity() : (l = 1 / l, a = 0, a = e[0] = b * l, c = e[1] = -c * l, h = e[2] = -h * l, b = e[3] = m * l, e[4] = -(a * g + h * d), e[5] = -(c * g + b * d));
              }
            };
            c.prototype.identity = function() {
              var a = this._data;
              a[0] = a[3] = 1;
              a[1] = a[2] = a[4] = a[5] = 0;
            };
            c.prototype.createBox = function(a, b, e, c, h) {
              void 0 === e && (e = 0);
              void 0 === c && (c = 0);
              void 0 === h && (h = 0);
              var g = this._data;
              if (0 !== e) {
                var d = v(e);
                e = u(e);
                g[0] = d * a;
                g[1] = e * b;
                g[2] = -e * a;
                g[3] = d * b;
              } else {
                g[0] = a, g[1] = 0, g[2] = 0, g[3] = b;
              }
              g[4] = c;
              g[5] = h;
            };
            c.prototype.createGradientBox = function(a, b, e, c, h) {
              void 0 === e && (e = 0);
              void 0 === c && (c = 0);
              void 0 === h && (h = 0);
              this.createBox(a / 1638.4, b / 1638.4, e, c + a / 2, h + b / 2);
            };
            c.prototype.rotate = function(a) {
              a = +a;
              if (0 !== a) {
                var b = this._data, e = v(a);
                a = u(a);
                var c = b[0], h = b[1], g = b[2], d = b[3], m = b[4], l = b[5];
                b[0] = c * e - h * a;
                b[1] = c * a + h * e;
                b[2] = g * e - d * a;
                b[3] = g * a + d * e;
                b[4] = m * e - l * a;
                b[5] = m * a + l * e;
              }
            };
            c.prototype.translate = function(a, b) {
              var e = this._data;
              e[4] += a;
              e[5] += b;
            };
            c.prototype.scale = function(a, b) {
              var e = this._data;
              1 !== a && (e[0] *= a, e[2] *= a, e[4] *= a);
              1 !== b && (e[1] *= b, e[3] *= b, e[5] *= b);
            };
            c.prototype.deltaTransformPoint = function(a) {
              return new k.Point(this._data[0] * a.x + this._data[2] * a.y, this._data[1] * a.x + this._data[3] * a.y);
            };
            c.prototype.transformX = function(a, b) {
              var e = this._data;
              return e[0] * a + e[2] * b + e[4];
            };
            c.prototype.transformY = function(a, b) {
              var e = this._data;
              return e[1] * a + e[3] * b + e[5];
            };
            c.prototype.transformPoint = function(a) {
              var b = this._data;
              return new k.Point(b[0] * a.x + b[2] * a.y + b[4], b[1] * a.x + b[3] * a.y + b[5]);
            };
            c.prototype.transformPointInPlace = function(a) {
              var b = this._data;
              a.setTo(b[0] * a.x + b[2] * a.y + b[4], b[1] * a.x + b[3] * a.y + b[5]);
              return a;
            };
            c.prototype.transformBounds = function(a) {
              var b = this._data, e = b[0], c = b[1], h = b[2], g = b[3], d = b[4], m = b[5], l = a.xMin, q = a.yMin, n = a.width, t = a.height, b = Math.round(e * l + h * q + d), k = Math.round(c * l + g * q + m), v = Math.round(e * (l + n) + h * q + d), u = Math.round(c * (l + n) + g * q + m), w = Math.round(e * (l + n) + h * (q + t) + d), n = Math.round(c * (l + n) + g * (q + t) + m), e = Math.round(e * l + h * (q + t) + d), c = Math.round(c * l + g * (q + t) + m), g = 0;
              b > v && (g = b, b = v, v = g);
              w > e && (g = w, w = e, e = g);
              a.xMin = b < w ? b : w;
              a.xMax = v > e ? v : e;
              k > u && (g = k, k = u, u = g);
              n > c && (g = n, n = c, c = g);
              a.yMin = k < n ? k : n;
              a.yMax = u > c ? u : c;
            };
            c.prototype.getDeterminant = function() {
              var a = this._data;
              return a[0] * a[3] - a[1] * a[2];
            };
            c.prototype.getScaleX = function() {
              var a = this._data;
              if (1 === a[0] && 0 === a[1]) {
                return 1;
              }
              a = Math.sqrt(a[0] * a[0] + a[1] * a[1]);
              return 0 > this.getDeterminant() ? -a : a;
            };
            c.prototype.getScaleY = function() {
              var a = this._data;
              if (0 === a[2] && 1 === a[3]) {
                return 1;
              }
              a = Math.sqrt(a[2] * a[2] + a[3] * a[3]);
              return 0 > this.getDeterminant() ? -a : a;
            };
            c.prototype.getAbsoluteScaleX = function() {
              return Math.abs(this.getScaleX());
            };
            c.prototype.getAbsoluteScaleY = function() {
              return Math.abs(this.getScaleY());
            };
            c.prototype.getSkewX = function() {
              return Math.atan2(this._data[3], this._data[2]) - Math.PI / 2;
            };
            c.prototype.getSkewY = function() {
              return Math.atan2(this._data[1], this._data[0]);
            };
            c.prototype.copyFrom = function(a) {
              var b = this._data;
              a = a._data;
              b[0] = a[0];
              b[1] = a[1];
              b[2] = a[2];
              b[3] = a[3];
              b[4] = a[4];
              b[5] = a[5];
            };
            c.prototype.copyFromUntyped = function(a) {
              var b = this._data;
              b[0] = a.a;
              b[1] = a.b;
              b[2] = a.c;
              b[3] = a.d;
              b[4] = a.tx;
              b[5] = a.ty;
            };
            c.prototype.setTo = function(a, b, e, c, h, g) {
              var d = this._data;
              d[0] = a;
              d[1] = b;
              d[2] = e;
              d[3] = c;
              d[4] = h;
              d[5] = g;
            };
            c.prototype.toTwipsInPlace = function() {
              var a = this._data;
              a[4] = 20 * a[4] | 0;
              a[5] = 20 * a[5] | 0;
              return this;
            };
            c.prototype.toPixelsInPlace = function() {
              var a = this._data;
              a[4] /= 20;
              a[5] /= 20;
              return this;
            };
            c.prototype.copyRowTo = function(a, b) {
              var e = this._data;
              a >>>= 0;
              0 === a ? (b.x = e[0], b.y = e[2], b.z = e[4]) : 1 === a ? (b.x = e[1], b.y = e[3], b.z = e[5]) : 2 === a && (b.x = 0, b.y = 0, b.z = 1);
            };
            c.prototype.copyColumnTo = function(a, b) {
              var e = this._data;
              a >>>= 0;
              0 === a ? (b.x = e[0], b.y = e[1], b.z = 0) : 1 === a ? (b.x = e[2], b.y = e[3], b.z = 0) : 2 === a && (b.x = e[4], b.y = e[5], b.z = 1);
            };
            c.prototype.copyRowFrom = function(a, b) {
              var e = this._data;
              a >>>= 0;
              0 === a ? (e[0] = b.x, e[2] = b.y, e[4] = b.z) : 1 === a && (e[1] = b.x, e[3] = b.y, e[5] = b.z);
            };
            c.prototype.copyColumnFrom = function(a, b) {
              var e = this._data;
              a >>>= 0;
              0 === a ? (e[0] = b.x, e[2] = b.y, e[4] = b.z) : 1 === a && (e[1] = b.x, e[3] = b.y, e[5] = b.z);
            };
            c.prototype.updateScaleAndRotation = function(a, b, e, c) {
              var h = this._data;
              if (0 !== e && e !== q || 0 !== c && c !== q) {
                var g = v(e), d = u(e);
                e === c ? (h[0] = g * a, h[1] = d * a) : (h[0] = v(c) * a, h[1] = u(c) * a);
                h[2] = -d * b;
                h[3] = g * b;
              } else {
                h[0] = a, h[1] = h[2] = 0, h[3] = b;
              }
            };
            c.prototype.clone = function() {
              var a = this._data;
              return new d.geom.Matrix(a[0], a[1], a[2], a[3], a[4], a[5]);
            };
            c.prototype.equals = function(a) {
              var b = this._data;
              a = a._data;
              return b[0] === a[0] && b[1] === a[1] && b[2] === a[2] && b[3] === a[3] && b[4] === a[4] && b[5] === a[5];
            };
            c.prototype.toString = function() {
              var a = this._data;
              return "(a=" + a[0] + ", b=" + a[1] + ", c=" + a[2] + ", d=" + a[3] + ", tx=" + a[4] + ", ty=" + a[5] + ")";
            };
            c.prototype.writeExternal = function(a) {
              var b = this._data;
              a.writeFloat(b[0]);
              a.writeFloat(b[1]);
              a.writeFloat(b[2]);
              a.writeFloat(b[3]);
              a.writeFloat(b[4]);
              a.writeFloat(b[5]);
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.FROZEN_IDENTITY_MATRIX = Object.freeze(new c);
            c.TEMP_MATRIX = new c;
            return c;
          }(a.ASNative);
          k.Matrix = t;
        })(d.geom || (d.geom = {}));
      })(a.flash || (a.flash = {}));
    })(d.AS || (d.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(n) {
        (function(k) {
          function v(a, c, g, h, f, b, e) {
            var d = c * c, p = g * g, l = h * h, k = d + p + l, v = Math.sqrt(k);
            c /= v;
            g /= v;
            h /= v;
            d /= k;
            p /= k;
            l /= k;
            k = Math.cos(a);
            a = Math.sin(a);
            return new n.geom.Matrix3D([d + (p + l) * k, c * g * (1 - k) + h * a, c * h * (1 - k) - g * a, 0, c * g * (1 - k) - h * a, p + (d + l) * k, g * h * (1 - k) + c * a, 0, c * h * (1 - k) + g * a, g * h * (1 - k) - c * a, l + (d + p) * k, 0, (f * (p + l) - c * (b * g + e * h)) * (1 - k) + (b * h - e * g) * a, (b * (d + l) - g * (f * c + e * h)) * (1 - k) + (e * c - f * h) * a, (e * (d + p) - h * (f * c + b * g)) * (1 - k) + (f * g - b * c) * a, 1]);
          }
          var u = d.Debug.notImplemented, l = d.AVM2.Runtime.asCoerceString, c = new Uint32Array([0, 4, 8, 12, 1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15]), g = function(g) {
            function d(a) {
              void 0 === a && (a = null);
              this._matrix = new Float32Array(16);
              a && 16 <= a.length ? this.copyRawDataFrom(a) : this.identity();
            }
            __extends(d, g);
            d.interpolate = function(a, c, f) {
              u("public flash.geom.Matrix3D::static interpolate");
            };
            Object.defineProperty(d.prototype, "rawData", {get:function() {
              var c = new a.Float64Vector;
              this.copyRawDataTo(c);
              return c;
            }, set:function(a) {
              this.copyRawDataFrom(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "position", {get:function() {
              var a = this._matrix;
              return new n.geom.Vector3D(a[12], a[13], a[14]);
            }, set:function(a) {
              var c = this._matrix;
              c[12] = a.x;
              c[13] = a.y;
              c[14] = a.z;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "determinant", {get:function() {
              var a = this._matrix, c = a[4], f = a[8], b = a[12], e = a[5], g = a[9], d = a[13], l = a[6], q = a[10], n = a[14], k = a[7], t = a[11], v = a[15];
              return a[0] * (e * (q * v - t * n) - l * (g * v - t * d) + k * (g * n - q * d)) - a[1] * (c * (q * v - t * n) - l * (f * v - t * b) + k * (f * n - q * b)) + a[2] * (c * (g * v - t * d) - e * (f * v - t * b) + k * (f * d - g * b)) - a[3] * (c * (g * n - q * d) - e * (f * n - q * b) + l * (f * d - g * b));
            }, enumerable:!0, configurable:!0});
            d.prototype.clone = function() {
              return new n.geom.Matrix3D(this._matrix);
            };
            d.prototype.copyToMatrix3D = function(a) {
              a._matrix.set(this._matrix);
            };
            d.prototype.append = function(a) {
              var c = a._matrix, f = this._matrix;
              a = this._matrix;
              var b = c[0], e = c[4], g = c[8], d = c[12], l = c[1], q = c[5], n = c[9], k = c[13], t = c[2], v = c[6], u = c[10], w = c[14], y = c[3], K = c[7], H = c[11], c = c[15], A = f[0], z = f[4], G = f[8], L = f[12], F = f[1], S = f[5], U = f[9], N = f[13], R = f[2], T = f[6], X = f[10], da = f[14], x = f[3], Y = f[7], V = f[11], f = f[15];
              a[0] = b * A + e * F + g * R + d * x;
              a[1] = l * A + q * F + n * R + k * x;
              a[2] = t * A + v * F + u * R + w * x;
              a[3] = y * A + K * F + H * R + c * x;
              a[4] = b * z + e * S + g * T + d * Y;
              a[5] = l * z + q * S + n * T + k * Y;
              a[6] = t * z + v * S + u * T + w * Y;
              a[7] = y * z + K * S + H * T + c * Y;
              a[8] = b * G + e * U + g * X + d * V;
              a[9] = l * G + q * U + n * X + k * V;
              a[10] = t * G + v * U + u * X + w * V;
              a[11] = y * G + K * U + H * X + c * V;
              a[12] = b * L + e * N + g * da + d * f;
              a[13] = l * L + q * N + n * da + k * f;
              a[14] = t * L + v * N + u * da + w * f;
              a[15] = y * L + K * N + H * da + c * f;
            };
            d.prototype.prepend = function(a) {
              var c = this._matrix, f = a._matrix;
              a = this._matrix;
              var b = c[0], e = c[4], g = c[8], d = c[12], l = c[1], q = c[5], n = c[9], k = c[13], t = c[2], v = c[6], u = c[10], w = c[14], y = c[3], K = c[7], H = c[11], c = c[15], A = f[0], z = f[4], G = f[8], L = f[12], F = f[1], S = f[5], U = f[9], N = f[13], R = f[2], T = f[6], X = f[10], da = f[14], x = f[3], Y = f[7], V = f[11], f = f[15];
              a[0] = b * A + e * F + g * R + d * x;
              a[1] = l * A + q * F + n * R + k * x;
              a[2] = t * A + v * F + u * R + w * x;
              a[3] = y * A + K * F + H * R + c * x;
              a[4] = b * z + e * S + g * T + d * Y;
              a[5] = l * z + q * S + n * T + k * Y;
              a[6] = t * z + v * S + u * T + w * Y;
              a[7] = y * z + K * S + H * T + c * Y;
              a[8] = b * G + e * U + g * X + d * V;
              a[9] = l * G + q * U + n * X + k * V;
              a[10] = t * G + v * U + u * X + w * V;
              a[11] = y * G + K * U + H * X + c * V;
              a[12] = b * L + e * N + g * da + d * f;
              a[13] = l * L + q * N + n * da + k * f;
              a[14] = t * L + v * N + u * da + w * f;
              a[15] = y * L + K * N + H * da + c * f;
            };
            d.prototype.invert = function() {
              var a = this.determinant;
              if (1E-7 > Math.abs(a)) {
                return !1;
              }
              var a = 1 / a, c = this._matrix, f = c[0], b = c[1], e = c[2], g = c[3], d = c[4], l = c[5], q = c[6], n = c[7], k = c[8], t = c[9], v = c[10], u = c[11], w = c[12], y = c[13], K = c[14], H = c[15];
              c[0] = a * (l * (v * H - K * u) - t * (q * H - K * n) + y * (q * u - v * n));
              c[1] = -a * (b * (v * H - K * u) - t * (e * H - K * g) + y * (e * u - v * g));
              c[2] = a * (b * (q * H - K * n) - l * (e * H - K * g) + y * (e * n - q * g));
              c[3] = -a * (b * (q * u - v * n) - l * (e * u - v * g) + t * (e * n - q * g));
              c[4] = -a * (d * (v * H - K * u) - k * (q * H - K * n) + w * (q * u - v * n));
              c[5] = a * (f * (v * H - K * u) - k * (e * H - K * g) + w * (e * u - v * g));
              c[6] = -a * (f * (q * H - K * n) - d * (e * H - K * g) + w * (e * n - q * g));
              c[7] = a * (f * (q * u - v * n) - d * (e * u - v * g) + k * (e * n - q * g));
              c[8] = a * (d * (t * H - y * u) - k * (l * H - y * n) + w * (l * u - t * n));
              c[9] = -a * (f * (t * H - y * u) - k * (b * H - y * g) + w * (b * u - t * g));
              c[10] = a * (f * (l * H - y * n) - d * (b * H - y * g) + w * (b * n - l * g));
              c[11] = -a * (f * (l * u - t * n) - d * (b * u - t * g) + k * (b * n - l * g));
              c[12] = -a * (d * (t * K - y * v) - k * (l * K - y * q) + w * (l * v - t * q));
              c[13] = a * (f * (t * K - y * v) - k * (b * K - y * e) + w * (b * v - t * e));
              c[14] = -a * (f * (l * K - y * q) - d * (b * K - y * e) + w * (b * q - l * e));
              c[15] = a * (f * (l * v - t * q) - d * (b * v - t * e) + k * (b * q - l * e));
              return !0;
            };
            d.prototype.identity = function() {
              var a = this._matrix;
              a[0] = a[5] = a[10] = a[15] = 1;
              a[1] = a[2] = a[3] = a[4] = a[6] = a[7] = a[8] = a[9] = a[11] = a[12] = a[13] = a[14] = 0;
            };
            d.prototype.decompose = function(a) {
              void 0 === a && (a = "eulerAngles");
              l(a);
              u("public flash.geom.Matrix3D::decompose");
            };
            d.prototype.recompose = function(a, c) {
              void 0 === c && (c = "eulerAngles");
              l(c);
              u("public flash.geom.Matrix3D::recompose");
            };
            d.prototype.appendTranslation = function(a, c, f) {
              a = +a;
              c = +c;
              f = +f;
              var b = this._matrix, e = b[3], g = b[7], d = b[11], l = b[15];
              b[0] += a * e;
              b[1] += c * e;
              b[2] += f * e;
              b[4] += a * g;
              b[5] += c * g;
              b[6] += f * g;
              b[8] += a * d;
              b[9] += c * d;
              b[10] += f * d;
              b[12] += a * l;
              b[13] += c * l;
              b[14] += f * l;
            };
            d.prototype.appendRotation = function(a, c, f) {
              void 0 === f && (f = null);
              this.append(v(+a / 180 * Math.PI, c.x, c.y, c.z, f ? f.x : 0, f ? f.y : 0, f ? f.z : 0));
            };
            d.prototype.appendScale = function(a, c, f) {
              a = +a;
              c = +c;
              f = +f;
              var b = this._matrix;
              b[0] *= a;
              b[1] *= c;
              b[2] *= f;
              b[4] *= a;
              b[5] *= c;
              b[6] *= f;
              b[8] *= a;
              b[9] *= c;
              b[10] *= f;
              b[12] *= a;
              b[13] *= c;
              b[14] *= f;
            };
            d.prototype.prependTranslation = function(a, c, f) {
              a = +a;
              c = +c;
              f = +f;
              var b = this._matrix, e = b[1], g = b[5], d = b[9], l = b[2], q = b[6], n = b[10], k = b[3], t = b[7], v = b[11];
              b[12] += b[0] * a + b[4] * c + b[8] * f;
              b[13] += e * a + g * c + d * f;
              b[14] += l * a + q * c + n * f;
              b[15] += k * a + t * c + v * f;
            };
            d.prototype.prependRotation = function(a, c, f) {
              void 0 === f && (f = null);
              this.prepend(v(+a / 180 * Math.PI, c.x, c.y, c.z, f ? f.x : 0, f ? f.y : 0, f ? f.z : 0));
            };
            d.prototype.prependScale = function(a, c, f) {
              a = +a;
              c = +c;
              f = +f;
              var b = this._matrix;
              b[0] *= a;
              b[1] *= a;
              b[2] *= a;
              b[3] *= a;
              b[4] *= c;
              b[5] *= c;
              b[6] *= c;
              b[7] *= c;
              b[8] *= f;
              b[9] *= f;
              b[10] *= f;
              b[11] *= f;
            };
            d.prototype.transformVector = function(a) {
              var c = this._matrix, f = a.x, b = a.y;
              a = a.z;
              return new n.geom.Vector3D(c[0] * f + c[4] * b + c[8] * a + c[12], c[1] * f + c[5] * b + c[9] * a + c[13], c[2] * f + c[6] * b + c[10] * a + c[14]);
            };
            d.prototype.deltaTransformVector = function(a) {
              var c = this._matrix, f = a.x, b = a.y;
              a = a.z;
              return new n.geom.Vector3D(c[0] * f + c[4] * b + c[8] * a, c[1] * f + c[5] * b + c[9] * a, c[2] * f + c[6] * b + c[10] * a);
            };
            d.prototype.transformVectors = function(a, c) {
              for (var f = this._matrix, b = f[0], e = f[4], g = f[8], d = f[12], l = f[1], q = f[5], n = f[9], k = f[13], t = f[2], v = f[6], u = f[10], f = f[14], w = 0;w < a.length - 2;w += 3) {
                var y = a.asGetNumericProperty(w), K = a.asGetNumericProperty(w + 1), H = a.asGetNumericProperty(w + 2);
                c.push(b * y + e * K + g * H + d);
                c.push(l * y + q * K + n * H + k);
                c.push(t * y + v * K + u * H + f);
              }
            };
            d.prototype.transpose = function() {
              var a = this._matrix, c;
              c = a[1];
              a[1] = a[4];
              a[4] = c;
              c = a[2];
              a[2] = a[8];
              a[5] = c;
              c = a[3];
              a[3] = a[12];
              a[12] = c;
              c = a[6];
              a[6] = a[9];
              a[9] = c;
              c = a[7];
              a[7] = a[13];
              a[13] = c;
              c = a[11];
              a[11] = a[14];
              a[14] = c;
            };
            d.prototype.pointAt = function(a, c, f) {
              u("public flash.geom.Matrix3D::pointAt");
            };
            d.prototype.interpolateTo = function(a, c) {
              u("public flash.geom.Matrix3D::interpolateTo");
            };
            d.prototype.copyFrom = function(a) {
              this._matrix.set(a._matrix);
            };
            d.prototype.copyRawDataTo = function(a) {
              var h = 0, f = !1;
              void 0 === h && (h = 0);
              void 0 === f && (f = !1);
              var h = h >>> 0, b = this._matrix;
              if (f) {
                for (f = 0, h |= 0;16 > f;f++, h++) {
                  a.asSetNumericProperty(h, b[c[f]]);
                }
              } else {
                for (f = 0, h |= 0;16 > f;f++, h++) {
                  a.asSetNumericProperty(h, b[f]);
                }
              }
            };
            d.prototype.copyRawDataFrom = function(a) {
              var h = 0, f = !1;
              void 0 === h && (h = 0);
              void 0 === f && (f = !1);
              var h = h >>> 0, b = this._matrix;
              if (f) {
                for (f = 0, h |= 0;16 > f;f++, h++) {
                  b[c[f]] = a.asGetNumericProperty(h) || 0;
                }
              } else {
                for (f = 0, h |= 0;16 > f;f++, h++) {
                  b[f] = a.asGetNumericProperty(h) || 0;
                }
              }
            };
            d.prototype.copyRowTo = function(a, c) {
              var f = a >>> 0 | 0, b = this._matrix;
              c.x = b[f];
              c.y = b[f + 4];
              c.z = b[f + 8];
              c.w = b[f + 12];
            };
            d.prototype.copyColumnTo = function(a, c) {
              var f = a >>> 0 << 2, b = this._matrix;
              c.x = b[f];
              c.y = b[f + 1];
              c.z = b[f + 2];
              c.w = b[f + 3];
            };
            d.prototype.copyRowFrom = function(a, c) {
              var f = a >>> 0 | 0, b = this._matrix;
              b[f] = c.x;
              b[f + 4] = c.y;
              b[f + 8] = c.z;
              b[f + 12] = c.w;
            };
            d.prototype.copyColumnFrom = function(a, c) {
              var f = a >>> 0 << 2, b = this._matrix;
              b[f] = c.x;
              b[f + 1] = c.y;
              b[f + 2] = c.z;
              b[f + 3] = c.w;
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(a.ASNative);
          k.Matrix3D = g;
        })(n.geom || (n.geom = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(n) {
        (function(n) {
          var k = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              k("public flash.geom.Orientation3D");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.EULER_ANGLES = "eulerAngles";
            c.AXIS_ANGLE = "axisAngle";
            c.QUATERNION = "quaternion";
            return c;
          }(a.ASNative);
          n.Orientation3D = u;
        })(n.geom || (n.geom = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(n) {
        (function(n) {
          var k = d.Debug.notImplemented, u = d.Debug.dummyConstructor, l = function(a) {
            function g() {
              u("public flash.geom.PerspectiveProjection");
            }
            __extends(g, a);
            Object.defineProperty(g.prototype, "fieldOfView", {get:function() {
              k("public flash.geom.PerspectiveProjection::get fieldOfView");
            }, set:function(a) {
              k("public flash.geom.PerspectiveProjection::set fieldOfView");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "projectionCenter", {get:function() {
              k("public flash.geom.PerspectiveProjection::get projectionCenter");
            }, set:function(a) {
              k("public flash.geom.PerspectiveProjection::set projectionCenter");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "focalLength", {get:function() {
              k("public flash.geom.PerspectiveProjection::get focalLength");
            }, set:function(a) {
              k("public flash.geom.PerspectiveProjection::set focalLength");
            }, enumerable:!0, configurable:!0});
            g.prototype.toMatrix3D = function() {
              k("public flash.geom.PerspectiveProjection::toMatrix3D");
            };
            g.classInitializer = null;
            g.initializer = null;
            g.classSymbols = null;
            g.instanceSymbols = null;
            return g;
          }(a.ASNative);
          n.PerspectiveProjection = l;
        })(n.geom || (n.geom = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(d) {
        (function(d) {
          var n = function(a) {
            function d(a, g) {
              void 0 === a && (a = 0);
              void 0 === g && (g = 0);
              this.x = +a;
              this.y = +g;
            }
            __extends(d, a);
            Object.defineProperty(d.prototype, "native_x", {get:function() {
              return this.x;
            }, set:function(a) {
              this.x = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "native_y", {get:function() {
              return this.y;
            }, set:function(a) {
              this.y = a;
            }, enumerable:!0, configurable:!0});
            d.prototype.Point = function(a, g) {
              void 0 === a && (a = 0);
              void 0 === g && (g = 0);
              this.x = a;
              this.y = g;
            };
            Object.defineProperty(d.prototype, "length", {get:function() {
              return Math.sqrt(this.x * this.x + this.y * this.y);
            }, enumerable:!0, configurable:!0});
            d.interpolate = function(a, g, q) {
              var n = 1 - q;
              return new d(a.x * q + g.x * n, a.y * q + g.y * n);
            };
            d.distance = function(a, g) {
              var d = g.x - a.x, l = g.y - a.y;
              return 0 === d ? Math.abs(l) : 0 === l ? Math.abs(d) : Math.sqrt(d * d + l * l);
            };
            d.polar = function(a, g) {
              a = +a;
              g = +g;
              return new d(a * Math.cos(g), a * Math.sin(g));
            };
            d.prototype.clone = function() {
              return new d(this.x, this.y);
            };
            d.prototype.offset = function(a, g) {
              this.x += +a;
              this.y += +g;
            };
            d.prototype.equals = function(a) {
              return this.x === a.x && this.y === a.y;
            };
            d.prototype.subtract = function(a) {
              return new d(this.x - a.x, this.y - a.y);
            };
            d.prototype.add = function(a) {
              return new d(this.x + a.x, this.y + a.y);
            };
            d.prototype.normalize = function(a) {
              if (0 !== this.x || 0 !== this.y) {
                a = +a / this.length, this.x *= a, this.y *= a;
              }
            };
            d.prototype.copyFrom = function(a) {
              this.x = a.x;
              this.y = a.y;
            };
            d.prototype.setTo = function(a, g) {
              this.x = +a;
              this.y = +g;
            };
            d.prototype.toTwips = function() {
              this.x = 20 * this.x | 0;
              this.y = 20 * this.y | 0;
              return this;
            };
            d.prototype.toPixels = function() {
              this.x /= 20;
              this.y /= 20;
              return this;
            };
            d.prototype.round = function() {
              this.x = Math.round(this.x);
              this.y = Math.round(this.y);
              return this;
            };
            d.prototype.toString = function() {
              return "(x=" + this.x + ", y=" + this.y + ")";
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(a.ASNative);
          d.Point = n;
        })(d.geom || (d.geom = {}));
      })(a.flash || (a.flash = {}));
    })(d.AS || (d.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(d) {
        (function(d) {
          var n = function(a) {
            function l(a, g, d, l) {
              void 0 === a && (a = 0);
              void 0 === g && (g = 0);
              void 0 === d && (d = 0);
              void 0 === l && (l = 0);
              this.x = +a;
              this.y = +g;
              this.width = +d;
              this.height = +l;
            }
            __extends(l, a);
            l.FromBounds = function(a) {
              var g = a.xMin, d = a.yMin;
              return new l(g / 20, d / 20, (a.xMax - g) / 20, (a.yMax - d) / 20);
            };
            Object.defineProperty(l.prototype, "native_x", {get:function() {
              return this.x;
            }, set:function(a) {
              this.x = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "native_y", {get:function() {
              return this.y;
            }, set:function(a) {
              this.y = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "native_width", {get:function() {
              return this.width;
            }, set:function(a) {
              this.width = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "native_height", {get:function() {
              return this.height;
            }, set:function(a) {
              this.height = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "left", {get:function() {
              return this.x;
            }, set:function(a) {
              a = +a;
              this.width += this.x - a;
              this.x = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "right", {get:function() {
              return this.x + this.width;
            }, set:function(a) {
              this.width = +a - this.x;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "top", {get:function() {
              return this.y;
            }, set:function(a) {
              a = +a;
              this.height += this.y - a;
              this.y = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "bottom", {get:function() {
              return this.y + this.height;
            }, set:function(a) {
              this.height = +a - this.y;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "topLeft", {get:function() {
              return new d.Point(this.left, this.top);
            }, set:function(a) {
              this.top = a.y;
              this.left = a.x;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "bottomRight", {get:function() {
              return new d.Point(this.right, this.bottom);
            }, set:function(a) {
              this.bottom = a.y;
              this.right = a.x;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "size", {get:function() {
              return new d.Point(this.width, this.height);
            }, set:function(a) {
              this.width = a.x;
              this.height = a.y;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "area", {get:function() {
              return this.width * this.height;
            }, enumerable:!0, configurable:!0});
            l.prototype.clone = function() {
              return new l(this.x, this.y, this.width, this.height);
            };
            l.prototype.isEmpty = function() {
              return 0 >= this.width || 0 >= this.height;
            };
            l.prototype.setEmpty = function() {
              this.height = this.width = this.y = this.x = 0;
            };
            l.prototype.inflate = function(a, g) {
              a = +a;
              g = +g;
              this.x -= a;
              this.y -= g;
              this.width += 2 * a;
              this.height += 2 * g;
            };
            l.prototype.inflatePoint = function(a) {
              this.inflate(a.x, a.y);
            };
            l.prototype.offset = function(a, g) {
              this.x += +a;
              this.y += +g;
            };
            l.prototype.offsetPoint = function(a) {
              this.offset(a.x, a.y);
            };
            l.prototype.contains = function(a, g) {
              a = +a;
              g = +g;
              return a >= this.x && a < this.right && g >= this.y && g < this.bottom;
            };
            l.prototype.containsPoint = function(a) {
              return this.contains(a.x, a.y);
            };
            l.prototype.containsRect = function(a) {
              var g = a.x + a.width, d = a.y + a.height, l = this.x + this.width, m = this.y + this.height;
              return a.x >= this.x && a.x < l && a.y >= this.y && a.y < m && g > this.x && g <= l && d > this.y && d <= m;
            };
            l.prototype.intersection = function(a) {
              return this.clone().intersectInPlace(a);
            };
            l.prototype.intersects = function(a) {
              return Math.max(this.x, a.x) <= Math.min(this.right, a.right) && Math.max(this.y, a.y) <= Math.min(this.bottom, a.bottom);
            };
            l.prototype.intersectInPlace = function(a) {
              var g = this.x, d = this.y, l = a.x, m = a.y, h = Math.max(g, l), g = Math.min(g + this.width, l + a.width);
              if (h <= g && (l = Math.max(d, m), a = Math.min(d + this.height, m + a.height), l <= a)) {
                return this.setTo(h, l, g - h, a - l), this;
              }
              this.setEmpty();
              return this;
            };
            l.prototype.intersectInPlaceInt32 = function(a) {
              var g = this.x | 0, d = this.y | 0, l = this.width | 0, m = this.height | 0, h = a.x | 0, f = a.width | 0, b = Math.max(g, h) | 0, g = Math.min(g + l | 0, h + f | 0) | 0;
              if (b <= g && (l = a.y | 0, h = a.height | 0, a = Math.max(d, l) | 0, d = Math.min(d + m | 0, l + h | 0), a <= d)) {
                return this.setTo(b, a, g - b, d - a), this;
              }
              this.setEmpty();
              return this;
            };
            l.prototype.union = function(a) {
              return this.clone().unionInPlace(a);
            };
            l.prototype.unionInPlace = function(a) {
              if (a.isEmpty()) {
                return this;
              }
              if (this.isEmpty()) {
                return this.copyFrom(a), this;
              }
              var g = Math.min(this.x, a.x), d = Math.min(this.y, a.y);
              this.setTo(g, d, Math.max(this.right, a.right) - g, Math.max(this.bottom, a.bottom) - d);
              return this;
            };
            l.prototype.equals = function(a) {
              return this === a || this.x === a.x && this.y === a.y && this.width === a.width && this.height === a.height;
            };
            l.prototype.copyFrom = function(a) {
              this.x = a.x;
              this.y = a.y;
              this.width = a.width;
              this.height = a.height;
            };
            l.prototype.setTo = function(a, g, d, l) {
              this.x = +a;
              this.y = +g;
              this.width = +d;
              this.height = +l;
            };
            l.prototype.toTwips = function() {
              this.x = 20 * this.x | 0;
              this.y = 20 * this.y | 0;
              this.width = 20 * this.width | 0;
              this.height = 20 * this.height | 0;
              return this;
            };
            l.prototype.getBaseWidth = function(a) {
              return Math.abs(Math.cos(a)) * this.width + Math.abs(Math.sin(a)) * this.height;
            };
            l.prototype.getBaseHeight = function(a) {
              return Math.abs(Math.sin(a)) * this.width + Math.abs(Math.cos(a)) * this.height;
            };
            l.prototype.toPixels = function() {
              this.x /= 20;
              this.y /= 20;
              this.width /= 20;
              this.height /= 20;
              return this;
            };
            l.prototype.snapInPlace = function() {
              var a = Math.ceil(this.x + this.width), g = Math.ceil(this.y + this.height);
              this.x = Math.floor(this.x);
              this.y = Math.floor(this.y);
              this.width = a - this.x;
              this.height = g - this.y;
              return this;
            };
            l.prototype.roundInPlace = function() {
              var a = Math.round(this.x + this.width), g = Math.round(this.y + this.height);
              this.x = Math.round(this.x);
              this.y = Math.round(this.y);
              this.width = a - this.x;
              this.height = g - this.y;
              return this;
            };
            l.prototype.toString = function() {
              return "(x=" + this.x + ", y=" + this.y + ", w=" + this.width + ", h=" + this.height + ")";
            };
            l.prototype.writeExternal = function(a) {
              a.writeFloat(this.x);
              a.writeFloat(this.y);
              a.writeFloat(this.width);
              a.writeFloat(this.height);
            };
            l.prototype.readExternal = function(a) {
              this.x = a.readFloat();
              this.y = a.readFloat();
              this.width = a.readFloat();
              this.height = a.readFloat();
            };
            l.classInitializer = null;
            l.initializer = null;
            l.classSymbols = null;
            l.instanceSymbols = null;
            return l;
          }(a.ASNative);
          d.Rectangle = n;
        })(d.geom || (d.geom = {}));
      })(a.flash || (a.flash = {}));
    })(d.AS || (d.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(n) {
        (function(k) {
          var v = d.Debug.notImplemented, u = d.Debug.somewhatImplemented, l = d.AVM2.Runtime.throwError, c = d.AVM2.Errors, g = function(a) {
            function g(a) {
              a || l("ArgumentError", c.NullPointerError, "displayObject");
              this._displayObject = a;
            }
            __extends(g, a);
            Object.defineProperty(g.prototype, "matrix", {get:function() {
              return this._displayObject._getMatrix().clone().toPixelsInPlace();
            }, set:function(a) {
              this._displayObject._setMatrix(a, !0);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "colorTransform", {get:function() {
              return this._displayObject._colorTransform.clone();
            }, set:function(a) {
              this._displayObject._setColorTransform(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "concatenatedMatrix", {get:function() {
              var a = this._displayObject._getConcatenatedMatrix().clone().toPixelsInPlace();
              this._displayObject._stage || a.scale(5, 5);
              return a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "concatenatedColorTransform", {get:function() {
              return this._displayObject._getConcatenatedColorTransform();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "pixelBounds", {get:function() {
              v("public flash.geom.Transform::get pixelBounds");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "matrix3D", {get:function() {
              var a = this._displayObject._matrix3D;
              return a && a.clone();
            }, set:function(a) {
              k.Matrix3D.isType(a) || l("TypeError", c.CheckTypeFailedError, a, "flash.geom.Matrix3D");
              a = a.rawData;
              this.matrix = new n.geom.Matrix(a.asGetPublicProperty(0), a.asGetPublicProperty(1), a.asGetPublicProperty(4), a.asGetPublicProperty(5), a.asGetPublicProperty(12), a.asGetPublicProperty(13));
              u("public flash.geom.Transform::set matrix3D");
            }, enumerable:!0, configurable:!0});
            g.prototype.getRelativeMatrix3D = function(a) {
              v("public flash.geom.Transform::getRelativeMatrix3D");
            };
            Object.defineProperty(g.prototype, "perspectiveProjection", {get:function() {
              v("public flash.geom.Transform::get perspectiveProjection");
            }, set:function(a) {
              v("public flash.geom.Transform::set perspectiveProjection");
            }, enumerable:!0, configurable:!0});
            g.classInitializer = null;
            g.initializer = null;
            g.classSymbols = null;
            g.instanceSymbols = null;
            return g;
          }(a.ASNative);
          k.Transform = g;
        })(n.geom || (n.geom = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(n) {
        (function(n) {
          var k = d.Debug.notImplemented, u = d.Debug.dummyConstructor, l = function(a) {
            function g() {
              u("public flash.geom.Utils3D");
            }
            __extends(g, a);
            g.projectVector = function(a, c) {
              k("public flash.geom.Utils3D::static projectVector");
            };
            g.projectVectors = function(a, c, g, h) {
              k("public flash.geom.Utils3D::static projectVectors");
            };
            g.pointTowards = function(a, c, g, h, f) {
              k("public flash.geom.Utils3D::static pointTowards");
            };
            g.classInitializer = null;
            g.initializer = null;
            g.classSymbols = null;
            g.instanceSymbols = null;
            return g;
          }(a.ASNative);
          n.Utils3D = l;
        })(n.geom || (n.geom = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(d) {
        (function(d) {
          var n = function(a) {
            function d(a, g, l, n) {
              void 0 === a && (a = 0);
              void 0 === g && (g = 0);
              void 0 === l && (l = 0);
              void 0 === n && (n = 0);
              this.x = +a;
              this.y = +g;
              this.z = +l;
              this.w = +n;
            }
            __extends(d, a);
            Object.defineProperty(d.prototype, "native_x", {get:function() {
              return this.x;
            }, set:function(a) {
              this.x = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "native_y", {get:function() {
              return this.y;
            }, set:function(a) {
              this.y = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "native_z", {get:function() {
              return this.z;
            }, set:function(a) {
              this.z = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "native_w", {get:function() {
              return this.w;
            }, set:function(a) {
              this.w = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "length", {get:function() {
              return Math.sqrt(this.lengthSquared);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "lengthSquared", {get:function() {
              return this.x * this.x + this.y * this.y + this.z * this.z;
            }, enumerable:!0, configurable:!0});
            d.angleBetween = function(a, g) {
              return Math.acos(a.dotProduct(g) / (a.length * g.length));
            };
            d.distance = function(a, g) {
              return a.subtract(g).length;
            };
            d.prototype.dotProduct = function(a) {
              return this.x * a.x + this.y * a.y + this.z * a.z;
            };
            d.prototype.crossProduct = function(a) {
              return new d(this.y * a.z - this.z * a.y, this.z * a.x - this.x * a.z, this.x * a.y - this.y * a.x, 1);
            };
            d.prototype.normalize = function() {
              var a = this.length;
              0 !== a ? (this.x /= a, this.y /= a, this.z /= a) : this.x = this.y = this.z = 0;
              return a;
            };
            d.prototype.scaleBy = function(a) {
              a = +a;
              this.x *= a;
              this.y *= a;
              this.z *= a;
            };
            d.prototype.incrementBy = function(a) {
              this.x += a.x;
              this.y += a.y;
              this.z += a.z;
            };
            d.prototype.decrementBy = function(a) {
              this.x -= a.x;
              this.y -= a.y;
              this.z -= a.z;
            };
            d.prototype.add = function(a) {
              return new d(this.x + a.x, this.y + a.y, this.z + a.z);
            };
            d.prototype.subtract = function(a) {
              return new d(this.x - a.x, this.y - a.y, this.z - a.z);
            };
            d.prototype.negate = function() {
              this.x = -this.x;
              this.y = -this.y;
              this.z = -this.z;
            };
            d.prototype.equals = function(a, g) {
              return this.x === a.x && this.y === a.y && this.z === a.z && (!g || this.w === a.w);
            };
            d.prototype.nearEquals = function(a, g, d) {
              return Math.abs(this.x - a.x) < g && Math.abs(this.y - a.y) < g && Math.abs(this.z - a.z) < g && (!d || Math.abs(this.w - a.w) < g);
            };
            d.prototype.project = function() {
              this.x /= this.w;
              this.y /= this.w;
              this.z /= this.w;
            };
            d.prototype.copyFrom = function(a) {
              this.x = a.x;
              this.y = a.y;
              this.z = a.z;
            };
            d.prototype.setTo = function(a, g, d) {
              this.x = +a;
              this.y = +g;
              this.z = +d;
            };
            d.prototype.clone = function() {
              return new d(this.x, this.y, this.z, this.w);
            };
            d.prototype.toString = function() {
              return "Vector3D(" + this.x + ", " + this.y + ", " + this.z + ")";
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.X_AXIS = Object.freeze(new d(1, 0, 0));
            d.Y_AXIS = Object.freeze(new d(0, 1, 0));
            d.Z_AXIS = Object.freeze(new d(0, 0, 1));
            return d;
          }(a.ASNative);
          d.Vector3D = n;
        })(d.geom || (d.geom = {}));
      })(a.flash || (a.flash = {}));
    })(d.AS || (d.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(n) {
        (function(n) {
          var k = d.Debug.notImplemented, u = d.Debug.dummyConstructor, l = d.Debug.somewhatImplemented, c = function(a) {
            function c() {
              u("public flash.accessibility.Accessibility");
            }
            __extends(c, a);
            Object.defineProperty(c, "active", {get:function() {
              l("public flash.accessibility.Accessibility::get active");
              return c._active;
            }, enumerable:!0, configurable:!0});
            c.sendEvent = function(a, c, h, f) {
              k("public flash.accessibility.Accessibility::static sendEvent");
            };
            c.updateProperties = function() {
              k("public flash.accessibility.Accessibility::static updateProperties");
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c._active = !1;
            return c;
          }(a.ASNative);
          n.Accessibility = c;
        })(n.accessibility || (n.accessibility = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(n) {
        (function(n) {
          var k = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              k("public flash.accessibility.AccessibilityImplementation");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.ASNative);
          n.AccessibilityImplementation = u;
        })(n.accessibility || (n.accessibility = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(d) {
        (function(d) {
          var n = function(a) {
            function d() {
            }
            __extends(d, a);
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(a.ASNative);
          d.AccessibilityProperties = n;
        })(d.accessibility || (d.accessibility = {}));
      })(a.flash || (a.flash = {}));
    })(d.AS || (d.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(n) {
        (function(n) {
          var k = d.AVM2.Runtime.asCoerceString, u = function(a) {
            function c(a, c, d) {
              this._type = k(a);
              this._bubbles = !!c;
              this._cancelable = !!d;
              this._currentTarget = this._target = null;
              this._eventPhase = n.EventPhase.AT_TARGET;
              this._isDefaultPrevented = this._stopImmediatePropagation = this._stopPropagation = !1;
            }
            __extends(c, a);
            c.getInstance = function(a, d) {
              var l;
              void 0 === d && (d = !1);
              void 0 === l && (l = !1);
              var m = c._instances[a];
              m || (m = new c(a, d, l), c._instances[a] = m);
              m._bubbles = d;
              m._cancelable = l;
              return m;
            };
            c.getBroadcastInstance = function(a) {
              var d, l;
              void 0 === d && (d = !1);
              void 0 === l && (l = !1);
              var m = c._instances[a];
              m || (m = new c(a, d, l), c._instances[a] = m);
              m._isBroadcastEvent = !0;
              m._bubbles = d;
              m._cancelable = l;
              return m;
            };
            c.isBroadcastEventType = function(a) {
              switch(a) {
                case c.ENTER_FRAME:
                ;
                case c.EXIT_FRAME:
                ;
                case c.FRAME_CONSTRUCTED:
                ;
                case c.RENDER:
                ;
                case c.ACTIVATE:
                ;
                case c.DEACTIVATE:
                  return !0;
              }
              return !1;
            };
            Object.defineProperty(c.prototype, "type", {get:function() {
              return this._type;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "bubbles", {get:function() {
              return this._bubbles;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "cancelable", {get:function() {
              return this._cancelable;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "target", {get:function() {
              return this._target;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "currentTarget", {get:function() {
              return this._currentTarget;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "eventPhase", {get:function() {
              return this._eventPhase;
            }, enumerable:!0, configurable:!0});
            c.prototype.stopPropagation = function() {
              this._stopPropagation = !0;
            };
            c.prototype.stopImmediatePropagation = function() {
              this._stopImmediatePropagation = this._stopPropagation = !0;
            };
            c.prototype.preventDefault = function() {
              this._cancelable && (this._isDefaultPrevented = !0);
            };
            c.prototype.isDefaultPrevented = function() {
              return this._isDefaultPrevented;
            };
            c.prototype.isBroadcastEvent = function() {
              return !!this._isBroadcastEvent;
            };
            c.prototype.clone = function() {
              return new c(this._type, this._bubbles, this._cancelable);
            };
            c.prototype.toString = function() {
              return this.formatToString("Event", "type", "bubbles", "cancelable", "eventPhase");
            };
            c.prototype.formatToString = function(a) {
              for (var c = [], d = 1;d < arguments.length;d++) {
                c[d - 1] = arguments[d];
              }
              for (var d = "[" + a, l = 0;l < c.length;l++) {
                var h = c[l], f = this.asGetPublicProperty(h);
                "string" === typeof f && (f = '"' + f + '"');
                d += " " + h + "=" + f;
              }
              return d + "]";
            };
            c.classInitializer = function() {
              c._instances = d.ObjectUtilities.createMap();
            };
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.ACTIVATE = "activate";
            c.ADDED = "added";
            c.ADDED_TO_STAGE = "addedToStage";
            c.CANCEL = "cancel";
            c.CHANGE = "change";
            c.CLEAR = "clear";
            c.CLOSE = "close";
            c.COMPLETE = "complete";
            c.CONNECT = "connect";
            c.COPY = "copy";
            c.CUT = "cut";
            c.DEACTIVATE = "deactivate";
            c.ENTER_FRAME = "enterFrame";
            c.FRAME_CONSTRUCTED = "frameConstructed";
            c.EXIT_FRAME = "exitFrame";
            c.FRAME_LABEL = "frameLabel";
            c.ID3 = "id3";
            c.INIT = "init";
            c.MOUSE_LEAVE = "mouseLeave";
            c.OPEN = "open";
            c.PASTE = "paste";
            c.REMOVED = "removed";
            c.REMOVED_FROM_STAGE = "removedFromStage";
            c.RENDER = "render";
            c.RESIZE = "resize";
            c.SCROLL = "scroll";
            c.TEXT_INTERACTION_MODE_CHANGE = "textInteractionModeChange";
            c.SELECT = "select";
            c.SELECT_ALL = "selectAll";
            c.SOUND_COMPLETE = "soundComplete";
            c.TAB_CHILDREN_CHANGE = "tabChildrenChange";
            c.TAB_ENABLED_CHANGE = "tabEnabledChange";
            c.TAB_INDEX_CHANGE = "tabIndexChange";
            c.UNLOAD = "unload";
            c.FULLSCREEN = "fullScreen";
            c.CONTEXT3D_CREATE = "context3DCreate";
            c.TEXTURE_READY = "textureReady";
            c.VIDEO_FRAME = "videoFrame";
            c.SUSPEND = "suspend";
            c.AVM1_INIT = "initialize";
            c.AVM1_CONSTRUCT = "construct";
            c.AVM1_LOAD = "load";
            return c;
          }(a.ASNative);
          n.Event = u;
        })(n.events || (n.events = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(n) {
        (function(w) {
          var v = d.AVM2.Runtime.asCoerceString, u = d.isFunction, l = d.isNullOrUndefined, c = d.AVM2.Runtime.throwError, g = function() {
            return function(a, c, b) {
              this.listener = a;
              this.useCapture = c;
              this.priority = b;
            };
          }(), q = function() {
            function a() {
              this._aliasCount = 0;
              this._entries = [];
            }
            a.prototype.isEmpty = function() {
              return 0 === this._entries.length;
            };
            a.prototype.insert = function(a, b, e) {
              for (var c = this._entries, h = c.length, d = h - 1;0 <= d;d--) {
                var l = c[d];
                if (l.listener === a) {
                  return;
                }
                if (e > l.priority) {
                  h = d;
                } else {
                  break;
                }
              }
              c = this.ensureNonAliasedEntries();
              c.splice(h, 0, new g(a, b, e));
            };
            a.prototype.ensureNonAliasedEntries = function() {
              var a = this._entries;
              0 < this._aliasCount && (a = this._entries = a.slice(), this._aliasCount = 0);
              return a;
            };
            a.prototype.remove = function(a) {
              for (var b = this._entries, e = 0;e < b.length;e++) {
                if (b[e].listener === a) {
                  this.ensureNonAliasedEntries().splice(e, 1);
                  break;
                }
              }
            };
            a.prototype.snapshot = function() {
              this._aliasCount++;
              return this._entries;
            };
            a.prototype.releaseSnapshot = function(a) {
              this._entries === a && 0 < this._aliasCount && this._aliasCount--;
            };
            return a;
          }(), t = function() {
            function a() {
              this.reset();
            }
            a.prototype.reset = function() {
              this._queues = Object.create(null);
            };
            a.prototype.add = function(a, b) {
              var e = this._queues[a] || (this._queues[a] = []);
              0 <= e.indexOf(b) || e.push(b);
            };
            a.prototype.remove = function(a, b) {
              var e = this._queues[a], c = e.indexOf(b);
              e[c] = null;
            };
            a.prototype.dispatchEvent = function(a) {
              var b = this._queues[a.type];
              if (b) {
                for (var e = 0, c = 0;c < b.length;c++) {
                  var h = b[c];
                  if (null === h) {
                    e++;
                  } else {
                    try {
                      h.dispatchEvent(a);
                    } catch (g) {
                      console.warn("caught error under broadcast event " + a.type + ": ", g);
                    }
                  }
                }
                if (16 < e && e > b.length >> 1) {
                  e = [];
                  for (c = 0;c < b.length;c++) {
                    b[c] && e.push(b[c]);
                  }
                  this._queues[a.type] = e;
                }
              }
            };
            a.prototype.getQueueLength = function(a) {
              return this._queues[a] ? this._queues[a].length : 0;
            };
            return a;
          }();
          w.BroadcastEventDispatchQueue = t;
          var m = function(h) {
            function f(a) {
              void 0 === a && (a = null);
              this._target = a || this;
            }
            __extends(f, h);
            f.prototype.toString = function() {
              return a.ASObject.dynamicPrototype.$BgtoString.call(this);
            };
            f.prototype._getListenersForType = function(a, e) {
              var c = a ? this._captureListeners : this._targetOrBubblingListeners;
              return c ? c[e] : null;
            };
            f.prototype._getListeners = function(a) {
              return a ? this._captureListeners || (this._captureListeners = Object.create(null)) : this._targetOrBubblingListeners || (this._targetOrBubblingListeners = Object.create(null));
            };
            f.prototype.addEventListener = function(a, e, h, g, d) {
              void 0 === h && (h = !1);
              void 0 === g && (g = 0);
              void 0 === d && (d = !1);
              (2 > arguments.length || 5 < arguments.length) && c("ArgumentError", k.Errors.WrongArgumentCountError, "flash.events::EventDispatcher/addEventListener()", 2, arguments.length);
              u(e) || c("TypeError", k.Errors.CheckTypeFailedError, e, "Function");
              l(a) && c("TypeError", k.Errors.NullPointerError, "type");
              a = v(a);
              h = !!h;
              g |= 0;
              d = !!d;
              var m = this._getListeners(h);
              (m[a] || (m[a] = new q)).insert(e, h, g);
              !h && w.Event.isBroadcastEventType(a) && f.broadcastEventDispatchQueue.add(a, this);
            };
            f.prototype.removeEventListener = function(a, e, h) {
              void 0 === h && (h = !1);
              (2 > arguments.length || 3 < arguments.length) && c("ArgumentError", k.Errors.WrongArgumentCountError, "flash.events::EventDispatcher/removeEventListener()", 2, arguments.length);
              u(e) || c("TypeError", k.Errors.CheckTypeFailedError, e, "Function");
              l(a) && c("TypeError", k.Errors.NullPointerError, "type");
              a = v(a);
              var g = this._getListeners(!!h), d = g[a];
              d && (d.remove(e), d.isEmpty() && (!h && w.Event.isBroadcastEventType(a) && f.broadcastEventDispatchQueue.remove(a, this), g[a] = null));
            };
            f.prototype._hasTargetOrBubblingEventListener = function(a) {
              return !(!this._targetOrBubblingListeners || !this._targetOrBubblingListeners[a]);
            };
            f.prototype._hasCaptureEventListener = function(a) {
              return !(!this._captureListeners || !this._captureListeners[a]);
            };
            f.prototype._hasEventListener = function(a) {
              return this._hasTargetOrBubblingEventListener(a) || this._hasCaptureEventListener(a);
            };
            f.prototype.hasEventListener = function(a) {
              1 !== arguments.length && c("ArgumentError", k.Errors.WrongArgumentCountError, "flash.events::EventDispatcher/hasEventListener()", 1, arguments.length);
              l(a) && c("TypeError", k.Errors.NullPointerError, "type");
              a = v(a);
              return this._hasEventListener(a);
            };
            f.prototype.willTrigger = function(a) {
              1 !== arguments.length && c("ArgumentError", k.Errors.WrongArgumentCountError, "flash.events::EventDispatcher/hasEventListener()", 1, arguments.length);
              l(a) && c("TypeError", k.Errors.NullPointerError, "type");
              a = v(a);
              if (this._hasEventListener(a)) {
                return !0;
              }
              if (n.display.DisplayObject.isType(this)) {
                var e = this._parent;
                do {
                  if (e._hasEventListener(a)) {
                    return !0;
                  }
                } while (e = e._parent);
              }
              return !1;
            };
            f.prototype._skipDispatchEvent = function(a) {
              if (this._hasEventListener(a.type)) {
                return !1;
              }
              if (!a.isBroadcastEvent() && a._bubbles && n.display.DisplayObject.isType(this)) {
                for (var e = this._parent;e;e = e._parent) {
                  if (e._hasEventListener(a.type)) {
                    return !1;
                  }
                }
              }
              return !0;
            };
            f.prototype.dispatchEvent = function(a) {
              1 !== arguments.length && c("ArgumentError", k.Errors.WrongArgumentCountError, "flash.events::EventDispatcher/dispatchEvent()", 1, arguments.length);
              if (this._skipDispatchEvent(a)) {
                return !0;
              }
              var e = a._type, h = this._target, g = !0, d = [];
              if (!a.isBroadcastEvent() && n.display.DisplayObject.isType(this)) {
                for (var l = this._parent;l;) {
                  l._hasEventListener(e) && d.push(l), l = l._parent;
                }
                for (l = d.length - 1;0 <= l && g;l--) {
                  var m = d[l];
                  if (m._hasCaptureEventListener(e)) {
                    var q = m._getListenersForType(!0, e), g = f.callListeners(q, a, h, m, w.EventPhase.CAPTURING_PHASE)
                  }
                }
              }
              g && (q = this._getListenersForType(!1, e)) && (g = f.callListeners(q, a, h, h, w.EventPhase.AT_TARGET));
              if (!a.isBroadcastEvent() && g && a.bubbles) {
                for (l = 0;l < d.length && g;l++) {
                  m = d[l], m._hasTargetOrBubblingEventListener(e) && (q = m._getListenersForType(!1, e), g = f.callListeners(q, a, h, m, w.EventPhase.BUBBLING_PHASE));
                }
              }
              return !a._isDefaultPrevented;
            };
            f.callListeners = function(a, e, c, f, h) {
              if (a.isEmpty()) {
                return !0;
              }
              e._target && (e = e.asCallPublicProperty("clone", null));
              for (var g = a.snapshot(), d = 0;d < g.length;d++) {
                var l = g[d];
                e._target = c;
                e._currentTarget = f;
                e._eventPhase = h;
                l.listener(e);
                if (e._stopImmediatePropagation) {
                  break;
                }
              }
              a.releaseSnapshot(g);
              return !e._stopPropagation;
            };
            f.classInitializer = function() {
              f.broadcastEventDispatchQueue = new t;
            };
            f.initializer = function() {
              this._target = this;
              this._targetOrBubblingListeners = this._captureListeners = null;
            };
            f.classSymbols = null;
            f.instanceSymbols = null;
            return f;
          }(a.ASNative);
          w.EventDispatcher = m;
        })(n.events || (n.events = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(n) {
        (function(n) {
          var k = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              a.call(this);
              k("public flash.events.EventPhase");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.CAPTURING_PHASE = 1;
            c.AT_TARGET = 2;
            c.BUBBLING_PHASE = 3;
            return c;
          }(a.ASNative);
          n.EventPhase = u;
        })(n.events || (n.events = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.Debug.notImplemented, u = function(a) {
            function c(c, d, n, m) {
              a.call(this, c, d, n);
              this._text = m;
            }
            __extends(c, a);
            Object.defineProperty(c.prototype, "text", {get:function() {
              return this._text;
            }, set:function(a) {
              this._text = a;
            }, enumerable:!0, configurable:!0});
            c.prototype.clone = function() {
              var a = new c(this.type, this.bubbles, this.cancelable, this.text);
              this.copyNativeData(a);
              return a;
            };
            c.prototype.toString = function() {
              return this.formatToString("TextEvent", "type", "bubbles", "cancelable", "text");
            };
            c.prototype.copyNativeData = function(a) {
              v("public flash.events.TextEvent::copyNativeData");
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.LINK = "link";
            c.TEXT_INPUT = "textInput";
            return c;
          }(a.events.Event);
          k.TextEvent = u;
        })(a.events || (a.events = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(a) {
        (function(d) {
          var k = function(a) {
            function d(c, g, l, n, m) {
              void 0 === g && (g = !1);
              void 0 === l && (l = !1);
              void 0 === n && (n = "");
              void 0 === m && (m = 0);
              a.call(this, c, g, l, n);
              this.setID(m);
            }
            __extends(d, a);
            d.prototype.setID = function(a) {
              this._id = a;
            };
            Object.defineProperty(d.prototype, "errorID", {get:function() {
              return this._id;
            }, enumerable:!0, configurable:!0});
            d.prototype.clone = function() {
              return new d(this.type, this.bubbles, this.cancelable, this.text, this.errorID);
            };
            d.prototype.toString = function() {
              return this.formatToString("ErrorEvent", "type", "bubbles", "cancelable", "text", "errorID");
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.ERROR = "error";
            return d;
          }(a.events.TextEvent);
          d.ErrorEvent = k;
        })(a.events || (a.events = {}));
      })(a.flash || (a.flash = {}));
    })(d.AS || (d.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.Debug.dummyConstructor, u = function(a) {
            function c(c, d, n, m) {
              a.call(this, void 0, void 0, void 0);
              v("public flash.events.GameInputEvent");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.DEVICE_ADDED = "deviceAdded";
            c.DEVICE_REMOVED = "deviceRemoved";
            return c;
          }(a.events.Event);
          k.GameInputEvent = u;
        })(a.events || (a.events = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.AVM2.Runtime.asCoerceString, u = d.Debug.dummyConstructor, l = d.Debug.somewhatImplemented, c = function(c) {
            function d(a, l, h, f, b, e, r, p, q) {
              c.call(this, void 0, void 0, void 0);
              u("public flash.events.GestureEvent");
            }
            __extends(d, c);
            Object.defineProperty(d.prototype, "localX", {get:function() {
              return this._localX;
            }, set:function(a) {
              this._localX = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "localY", {get:function() {
              return this._localY;
            }, set:function(a) {
              this._localY = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "stageX", {get:function() {
              l("public flash.events.GestureEvent::stageX");
              return 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "stageY", {get:function() {
              l("public flash.events.GestureEvent::stageY");
              return 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "ctrlKey", {get:function() {
              return this._ctrlKey;
            }, set:function(a) {
              this._ctrlKey = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "altKey", {get:function() {
              return this._altKey;
            }, set:function(a) {
              this._altKey = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "shiftKey", {get:function() {
              return this._shiftKey;
            }, set:function(a) {
              this._shiftKey = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "phase", {get:function() {
              return this._phase;
            }, set:function(a) {
              this._phase = v(a);
            }, enumerable:!0, configurable:!0});
            d.prototype.updateAfterEvent = function() {
              l("public flash.events.GestureEvent::updateAfterEvent");
            };
            d.prototype.NativeCtor = function(a, c, h, f, b, e) {
              this._phase = v(a);
              this._localX = +c;
              this._localY = +h;
              this._ctrlKey = !!f;
              this._altKey = !!b;
              this._shiftKey = !!e;
            };
            d.prototype.clone = function() {
              return new a.events.GestureEvent(this.type, this.bubbles, this.cancelable, this.phase, this.localX, this.localY, this.ctrlKey, this.altKey, this.shiftKey);
            };
            d.prototype.toString = function() {
              return this.formatToString("GestureEvent", "type", "bubbles", "cancelable", "eventPhase", "localX", "localY", "ctrlKey", "altKey", "shiftKey");
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.GESTURE_TWO_FINGER_TAP = "gestureTwoFingerTap";
            return d;
          }(a.events.Event);
          k.GestureEvent = c;
        })(a.events || (a.events = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.Debug.dummyConstructor, u = function(a) {
            function c(c, d, n, m) {
              a.call(this, void 0, void 0, void 0);
              v("public flash.events.HTTPStatusEvent");
            }
            __extends(c, a);
            c.prototype._setStatus = function(a) {
              this._status = a;
            };
            Object.defineProperty(c.prototype, "status", {get:function() {
              return this._status;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "responseURL", {get:function() {
              return this._responseURL;
            }, set:function(a) {
              this._responseURL = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "responseHeaders", {get:function() {
              return this._responseHeaders;
            }, set:function(a) {
              this._responseHeaders = a;
            }, enumerable:!0, configurable:!0});
            c.prototype.clone = function() {
              var a = new k.HTTPStatusEvent(this.type, this.bubbles, this.cancelable, this.status);
              a.responseURL = this.responseURL;
              a.responseHeaders = this.responseHeaders;
              return a;
            };
            c.prototype.toString = function() {
              return this.formatToString("HTTPStatusEvent", "type", "bubbles", "cancelable", "eventPhase", "status", "responseURL", "responseHeaders");
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.HTTP_STATUS = "httpStatus";
            c.HTTP_RESPONSE_STATUS = "httpResponseStatus";
            return c;
          }(a.events.Event);
          k.HTTPStatusEvent = u;
        })(a.events || (a.events = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(a) {
        (function(d) {
          var k = function(a) {
            function d(c, g, l, n, m) {
              void 0 === g && (g = !1);
              void 0 === l && (l = !1);
              void 0 === n && (n = "");
              void 0 === m && (m = 0);
              a.call(this, c, g, l, n, m);
            }
            __extends(d, a);
            d.prototype.clone = function() {
              var a = new d(this.type, this.bubbles, this.cancelable, this.text, this.errorID);
              this.copyNativeData(a);
              return a;
            };
            d.prototype.toString = function() {
              return this.formatToString("IOErrorEvent", "type", "bubbles", "cancelable", "text", "errorID");
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.IO_ERROR = "ioError";
            d.NETWORK_ERROR = "networkError";
            d.DISK_ERROR = "diskError";
            d.VERIFY_ERROR = "verifyError";
            return d;
          }(a.events.ErrorEvent);
          d.IOErrorEvent = k;
        })(a.events || (a.events = {}));
      })(a.flash || (a.flash = {}));
    })(d.AS || (d.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.Debug.dummyConstructor, u = function(a) {
            function c(c, d, n, m, h, f, b, e, r) {
              a.call(this, void 0, void 0, void 0);
              v("public flash.events.KeyboardEvent");
            }
            __extends(c, a);
            Object.defineProperty(c.prototype, "charCode", {get:function() {
              return this._charCode;
            }, set:function(a) {
              this._charCode = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "keyCode", {get:function() {
              return this._keyCode;
            }, set:function(a) {
              this._keyCode = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "keyLocation", {get:function() {
              return this._keyLocation;
            }, set:function(a) {
              this._keyLocation = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "ctrlKey", {get:function() {
              return this._ctrlKey;
            }, set:function(a) {
              this._ctrlKey = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "altKey", {get:function() {
              return this._altKey;
            }, set:function(a) {
              this._altKey = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "shiftKey", {get:function() {
              return this._shiftKey;
            }, set:function(a) {
              this._shiftKey = a;
            }, enumerable:!0, configurable:!0});
            c.prototype.clone = function() {
              return new k.KeyboardEvent(this.type, this.bubbles, this.cancelable, this.charCode, this.keyCode, this.keyLocation, this.ctrlKey, this.altKey, this.shiftKey);
            };
            c.prototype.toString = function() {
              return this.formatToString("KeyboardEvent", "type", "bubbles", "cancelable", "eventPhase", "charCode", "keyCode", "keyLocation", "ctrlKey", "altKey", "shiftKey");
            };
            c.prototype.updateAfterEvent = function() {
              d.AVM2.Runtime.AVM2.instance.globals["Shumway.Player.Utils"].requestRendering();
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.KEY_DOWN = "keyDown";
            c.KEY_UP = "keyUp";
            return c;
          }(a.events.Event);
          k.KeyboardEvent = u;
        })(a.events || (a.events = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.Debug.notImplemented, u = d.Debug.dummyConstructor, l = function(c) {
            function g(a, g, d, h, f, b, e, l, p, n, k) {
              c.call(this, void 0, void 0, void 0);
              u("public flash.events.MouseEvent");
            }
            __extends(g, c);
            g.typeFromDOMType = function(a) {
              switch(a) {
                case "click":
                  return g.CLICK;
                case "dblclick":
                  return g.DOUBLE_CLICK;
                case "mousedown":
                  return g.MOUSE_DOWN;
                case "mouseout":
                ;
                case "mouseover":
                ;
                case "mousemove":
                  return g.MOUSE_MOVE;
                case "mouseup":
                  return g.MOUSE_UP;
                default:
                  v(a);
              }
            };
            Object.defineProperty(g.prototype, "localX", {get:function() {
              return this._localX / 20 | 0;
            }, set:function(a) {
              this._localX = 20 * a | 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "localY", {get:function() {
              return this._localY / 20 | 0;
            }, set:function(a) {
              this._localY = 20 * a | 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "stageX", {get:function() {
              return isNaN(this.localX + this.localY) ? Number.NaN : this._getGlobalPoint().x / 20 | 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "stageY", {get:function() {
              return isNaN(this.localX + this.localY) ? Number.NaN : this._getGlobalPoint().y / 20 | 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "movementX", {get:function() {
              return this._movementX || 0;
            }, set:function(a) {
              this._movementX = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "movementY", {get:function() {
              return this._movementY || 0;
            }, set:function(a) {
              this._movementY = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "delta", {get:function() {
              return this._delta;
            }, set:function(a) {
              this._delta = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "ctrlKey", {get:function() {
              return this._ctrlKey;
            }, set:function(a) {
              this._ctrlKey = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "altKey", {get:function() {
              return this._altKey;
            }, set:function(a) {
              this._altKey = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "shiftKey", {get:function() {
              return this._shiftKey;
            }, set:function(a) {
              this._shiftKey = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "buttonDown", {get:function() {
              return this._buttonDown;
            }, set:function(a) {
              this._buttonDown = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "relatedObject", {get:function() {
              return this._relatedObject;
            }, set:function(a) {
              this._relatedObject = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "isRelatedObjectInaccessible", {get:function() {
              return this._isRelatedObjectInaccessible;
            }, set:function(a) {
              this._isRelatedObjectInaccessible = a;
            }, enumerable:!0, configurable:!0});
            g.prototype.updateAfterEvent = function() {
              d.AVM2.Runtime.AVM2.instance.globals["Shumway.Player.Utils"].requestRendering();
            };
            g.prototype._getGlobalPoint = function() {
              var c = this._position;
              c || (c = this._position = new a.geom.Point);
              this.target ? (c.setTo(this._localX, this._localY), this._target._getConcatenatedMatrix().transformPointInPlace(c)) : c.setTo(0, 0);
              return c;
            };
            g.prototype.clone = function() {
              return new a.events.MouseEvent(this.type, this.bubbles, this.cancelable, this.localX, this.localY, this.relatedObject, this.ctrlKey, this.altKey, this.shiftKey, this.buttonDown, this.delta);
            };
            g.prototype.toString = function() {
              return this.formatToString("MouseEvent", "type", "bubbles", "cancelable", "eventPhase", "localX", "localY", "relatedObject", "ctrlKey", "altKey", "shiftKey", "buttonDown", "delta");
            };
            g.classInitializer = null;
            g.initializer = null;
            g.classSymbols = null;
            g.instanceSymbols = null;
            g.CLICK = "click";
            g.DOUBLE_CLICK = "doubleClick";
            g.MOUSE_DOWN = "mouseDown";
            g.MOUSE_MOVE = "mouseMove";
            g.MOUSE_OUT = "mouseOut";
            g.MOUSE_OVER = "mouseOver";
            g.MOUSE_UP = "mouseUp";
            g.RELEASE_OUTSIDE = "releaseOutside";
            g.MOUSE_WHEEL = "mouseWheel";
            g.ROLL_OUT = "rollOut";
            g.ROLL_OVER = "rollOver";
            g.MIDDLE_CLICK = "middleClick";
            g.MIDDLE_MOUSE_DOWN = "middleMouseDown";
            g.MIDDLE_MOUSE_UP = "middleMouseUp";
            g.RIGHT_CLICK = "rightClick";
            g.RIGHT_MOUSE_DOWN = "rightMouseDown";
            g.RIGHT_MOUSE_UP = "rightMouseUp";
            g.CONTEXT_MENU = "contextMenu";
            return g;
          }(a.events.Event);
          k.MouseEvent = l;
        })(a.events || (a.events = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(a) {
        (function(d) {
          var k = function(d) {
            function l(a, g, d, l) {
            }
            __extends(l, d);
            Object.defineProperty(l.prototype, "info", {get:function() {
              return this._info;
            }, set:function(a) {
              this._info = a;
            }, enumerable:!0, configurable:!0});
            l.prototype.clone = function() {
              return new a.events.NetStatusEvent(this.type, this.bubbles, this.cancelable, this.info);
            };
            l.prototype.toString = function() {
              return this.formatToString("NetStatusEvent", "type", "bubbles", "cancelable", "eventPhase", "info");
            };
            l.classInitializer = null;
            l.initializer = null;
            l.classSymbols = null;
            l.instanceSymbols = null;
            l.NET_STATUS = "netStatus";
            return l;
          }(a.events.Event);
          d.NetStatusEvent = k;
        })(a.events || (a.events = {}));
      })(a.flash || (a.flash = {}));
    })(d.AS || (d.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.Debug.dummyConstructor, u = function(d) {
            function c(a, c, n, m, h) {
              d.call(this, void 0, void 0, void 0);
              v("public flash.events.ProgressEvent");
            }
            __extends(c, d);
            Object.defineProperty(c.prototype, "bytesLoaded", {get:function() {
              return this._bytesLoaded;
            }, set:function(a) {
              this._bytesLoaded = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "bytesTotal", {get:function() {
              return this._bytesTotal;
            }, set:function(a) {
              this._bytesTotal = a;
            }, enumerable:!0, configurable:!0});
            c.prototype.clone = function() {
              return new a.events.ProgressEvent(this._type, this._bubbles, this._cancelable, this._bytesLoaded, this._bytesTotal);
            };
            c.prototype.toString = function() {
              return this.formatToString("ProgressEvent", "bubbles", "cancelable", "eventPhase", "bytesLoaded", "bytesTotal");
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.PROGRESS = "progress";
            c.SOCKET_DATA = "socketData";
            return c;
          }(a.events.Event);
          k.ProgressEvent = u;
        })(a.events || (a.events = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.Debug.dummyConstructor, u = function(a) {
            function c(c, d, n, m, h) {
              a.call(this, void 0, void 0, void 0, void 0, void 0);
              v("public flash.events.SecurityErrorEvent");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.SECURITY_ERROR = "securityError";
            return c;
          }(a.events.ErrorEvent);
          k.SecurityErrorEvent = u;
        })(a.events || (a.events = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.Debug.dummyConstructor, u = function(a) {
            function c(c, d, n) {
              a.call(this, void 0, void 0, void 0);
              v("public flash.events.TimerEvent");
            }
            __extends(c, a);
            c.prototype.clone = function() {
              return new k.TimerEvent(this.type, this.bubbles, this.cancelable);
            };
            c.prototype.toString = function() {
              return this.formatToString("TimerEvent", "type", "bubbles", "cancelable", "eventPhase");
            };
            c.prototype.updateAfterEvent = function() {
              d.AVM2.Runtime.AVM2.instance.globals["Shumway.Player.Utils"].requestRendering();
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.TIMER = "timer";
            c.TIMER_COMPLETE = "timerComplete";
            return c;
          }(a.events.Event);
          k.TimerEvent = u;
        })(a.events || (a.events = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.Debug.somewhatImplemented, u = d.Debug.dummyConstructor, l = function(a) {
            function g(d, g, l, h, f, b, e, r, p, n, k, v, w, M) {
              a.call(this, void 0, void 0, void 0);
              u("public flash.events.TouchEvent");
            }
            __extends(g, a);
            Object.defineProperty(g.prototype, "touchPointID", {get:function() {
              return this._touchPointID;
            }, set:function(a) {
              this._touchPointID = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "isPrimaryTouchPoint", {get:function() {
              return this._isPrimaryTouchPoint;
            }, set:function(a) {
              this._isPrimaryTouchPoint = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "localX", {get:function() {
              return this._localX;
            }, set:function(a) {
              this._localX = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "localY", {get:function() {
              return this._localY;
            }, set:function(a) {
              this._localY = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "sizeX", {get:function() {
              return this._sizeX;
            }, set:function(a) {
              this._sizeX = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "sizeY", {get:function() {
              return this._sizeY;
            }, set:function(a) {
              this._sizeY = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "pressure", {get:function() {
              return this._pressure;
            }, set:function(a) {
              this._pressure = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "relatedObject", {get:function() {
              return this._relatedObject;
            }, set:function(a) {
              this._relatedObject = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "ctrlKey", {get:function() {
              return this._ctrlKey;
            }, set:function(a) {
              this._ctrlKey = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "altKey", {get:function() {
              return this._altKey;
            }, set:function(a) {
              this._altKey = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "shiftKey", {get:function() {
              return this._shiftKey;
            }, set:function(a) {
              this._shiftKey = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "stageX", {get:function() {
              v("TouchEvent::get stageX");
              return this._localX;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "stageY", {get:function() {
              v("TouchEvent::get stageY");
              return this._localY;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "isRelatedObjectInaccessible", {get:function() {
              return this._isRelatedObjectInaccessible;
            }, set:function(a) {
              this._isRelatedObjectInaccessible = a;
            }, enumerable:!0, configurable:!0});
            g.prototype.clone = function() {
              return new k.TouchEvent(this.type, this.bubbles, this.cancelable, this.touchPointID, this.isPrimaryTouchPoint, this.localX, this.localY, this.sizeX, this.sizeY, this.pressure, this.relatedObject, this.ctrlKey, this.altKey, this.shiftKey);
            };
            g.prototype.toString = function() {
              return this.formatToString("TouchEvent", "type", "bubbles", "cancelable", "eventPhase", "touchPointID", "isPrimaryTouchPoint", "localX", "localY", "sizeX", "sizeY", "pressure", "relatedObject", "ctrlKey", "altKey", "shiftKey");
            };
            g.prototype.updateAfterEvent = function() {
              d.AVM2.Runtime.AVM2.instance.globals["Shumway.Player.Utils"].requestRendering();
            };
            g.classInitializer = null;
            g.initializer = null;
            g.classSymbols = null;
            g.instanceSymbols = null;
            g.TOUCH_BEGIN = "touchBegin";
            g.TOUCH_END = "touchEnd";
            g.TOUCH_MOVE = "touchMove";
            g.TOUCH_OVER = "touchOver";
            g.TOUCH_OUT = "touchOut";
            g.TOUCH_ROLL_OVER = "touchRollOver";
            g.TOUCH_ROLL_OUT = "touchRollOut";
            g.TOUCH_TAP = "touchTap";
            g.PROXIMITY_BEGIN = "proximityBegin";
            g.PROXIMITY_END = "proximityEnd";
            g.PROXIMITY_MOVE = "proximityMove";
            g.PROXIMITY_OUT = "proximityOut";
            g.PROXIMITY_OVER = "proximityOver";
            g.PROXIMITY_ROLL_OUT = "proximityRollOut";
            g.PROXIMITY_ROLL_OVER = "proximityRollOver";
            return g;
          }(a.events.Event);
          k.TouchEvent = l;
        })(a.events || (a.events = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.Debug.dummyConstructor, u = function(a) {
            function c(c, d, n, m) {
              a.call(this, void 0, void 0, void 0, void 0, void 0);
              v("public flash.events.UncaughtErrorEvent");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.UNCAUGHT_ERROR = "uncaughtError";
            return c;
          }(a.events.ErrorEvent);
          k.UncaughtErrorEvent = u;
        })(a.events || (a.events = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(a) {
        (function(d) {
          var k = function(a) {
            function l() {
              d.EventDispatcher.instanceConstructorNoInitialize.call(this);
            }
            __extends(l, a);
            l.classInitializer = null;
            l.initializer = null;
            l.classSymbols = null;
            l.instanceSymbols = null;
            return l;
          }(a.events.EventDispatcher);
          d.UncaughtErrorEvents = k;
        })(a.events || (a.events = {}));
      })(a.flash || (a.flash = {}));
    })(d.AS || (d.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(w) {
          var v = d.Debug.notImplemented, u = d.Debug.somewhatImplemented, l = d.isNullOrUndefined, c = d.AVM2.Runtime.asCoerceString, g = d.AVM2.Runtime.throwError, q = d.AVM2.Runtime.checkNullParameter, t = d.Bounds, m = a.geom, h = a.events;
          (function(a) {
            a[a.None = 0] = "None";
            a[a.Visible = 1] = "Visible";
            a[a.InvalidLineBounds = 2] = "InvalidLineBounds";
            a[a.InvalidFillBounds = 4] = "InvalidFillBounds";
            a[a.InvalidMatrix = 8] = "InvalidMatrix";
            a[a.InvalidInvertedMatrix = 16] = "InvalidInvertedMatrix";
            a[a.InvalidConcatenatedMatrix = 32] = "InvalidConcatenatedMatrix";
            a[a.InvalidInvertedConcatenatedMatrix = 64] = "InvalidInvertedConcatenatedMatrix";
            a[a.InvalidConcatenatedColorTransform = 128] = "InvalidConcatenatedColorTransform";
            a[a.Constructed = 256] = "Constructed";
            a[a.Destroyed = 512] = "Destroyed";
            a[a.NeedsLoadEvent = 1024] = "NeedsLoadEvent";
            a[a.OwnedByTimeline = 2048] = "OwnedByTimeline";
            a[a.AnimatedByTimeline = 4096] = "AnimatedByTimeline";
            a[a.HasFrameScriptPending = 8192] = "HasFrameScriptPending";
            a[a.ContainsFrameScriptPendingChildren = 16384] = "ContainsFrameScriptPendingChildren";
            a[a.ContainsMorph = 32768] = "ContainsMorph";
            a[a.CacheAsBitmap = 65536] = "CacheAsBitmap";
            a[a.DirtyMatrix = 1048576] = "DirtyMatrix";
            a[a.DirtyChildren = 2097152] = "DirtyChildren";
            a[a.DirtyGraphics = 4194304] = "DirtyGraphics";
            a[a.DirtyTextContent = 8388608] = "DirtyTextContent";
            a[a.DirtyBitmapData = 16777216] = "DirtyBitmapData";
            a[a.DirtyNetStream = 33554432] = "DirtyNetStream";
            a[a.DirtyColorTransform = 67108864] = "DirtyColorTransform";
            a[a.DirtyMask = 134217728] = "DirtyMask";
            a[a.DirtyClipDepth = 268435456] = "DirtyClipDepth";
            a[a.DirtyDescendents = 536870912] = "DirtyDescendents";
            a[a.DirtyMiscellaneousProperties = 1073741824] = "DirtyMiscellaneousProperties";
            a[a.Dirty = a.DirtyMatrix | a.DirtyChildren | a.DirtyGraphics | a.DirtyTextContent | a.DirtyBitmapData | a.DirtyNetStream | a.DirtyColorTransform | a.DirtyMask | a.DirtyClipDepth | a.DirtyMiscellaneousProperties] = "Dirty";
            a[a.Bubbling = a.ContainsFrameScriptPendingChildren | a.ContainsMorph] = "Bubbling";
          })(w.DisplayObjectFlags || (w.DisplayObjectFlags = {}));
          var f = w.DisplayObjectFlags;
          (function(a) {
            a[a.None = 0] = "None";
            a[a.Continue = 0] = "Continue";
            a[a.Stop = 1] = "Stop";
            a[a.Skip = 2] = "Skip";
            a[a.FrontToBack = 8] = "FrontToBack";
            a[a.Filter = 16] = "Filter";
          })(w.VisitorFlags || (w.VisitorFlags = {}));
          (function(a) {
            a[a.HitTestBounds = 0] = "HitTestBounds";
            a[a.HitTestBoundsAndMask = 1] = "HitTestBoundsAndMask";
            a[a.HitTestShape = 2] = "HitTestShape";
            a[a.Mouse = 3] = "Mouse";
            a[a.ObjectsUnderPoint = 4] = "ObjectsUnderPoint";
            a[a.Drop = 5] = "Drop";
          })(w.HitTestingType || (w.HitTestingType = {}));
          (function(a) {
            a[a.None = 0] = "None";
            a[a.Bounds = 1] = "Bounds";
            a[a.Shape = 2] = "Shape";
          })(w.HitTestingResult || (w.HitTestingResult = {}));
          var b = function(b) {
            function r() {
              h.EventDispatcher.instanceConstructorNoInitialize.call(this);
              this._addReference();
              this._setFlags(256);
            }
            __extends(r, b);
            r.getNextSyncID = function() {
              return this._syncID++;
            };
            r.reset = function() {
              this._advancableInstances = new d.WeakList;
            };
            r.prototype.createAnimatedDisplayObject = function(b, e, c) {
              var f = b.symbolClass;
              b = f.isSubtypeOf(a.display.BitmapData) ? a.display.Bitmap.initializeFrom(b) : f.initializeFrom(b);
              e.flags & 32 && (b._name = e.name);
              b._setFlags(4096);
              b._animate(e);
              c && f.instanceConstructorNoInitialize.call(b);
              return b;
            };
            r.performFrameNavigation = function(b, e) {
              b ? r._runScripts = e : e = r._runScripts;
              k.enterTimeline("DisplayObject.InitFrame");
              w.DisplayObject._advancableInstances.forEach(function(a) {
                a._initFrame(b);
              });
              k.leaveTimeline();
              k.enterTimeline("DisplayObject.EnterFrame");
              b && e && r._broadcastFrameEvent(h.Event.ENTER_FRAME);
              k.leaveTimeline();
              k.enterTimeline("DisplayObject.ConstructFrame");
              w.DisplayObject._advancableInstances.forEach(function(a) {
                a._constructFrame();
              });
              k.leaveTimeline();
              e ? (k.enterTimeline("DisplayObject.FrameConstructed"), r._broadcastFrameEvent(h.Event.FRAME_CONSTRUCTED), k.leaveTimeline(), k.enterTimeline("DisplayObject.EnqueueFrameScripts"), w.DisplayObject._advancableInstances.forEach(function(a) {
                w.DisplayObjectContainer.isInstanceOf(a) && !a.parent && a._enqueueFrameScripts();
              }), a.display.DisplayObject._stage._enqueueFrameScripts(), k.leaveTimeline(), k.enterTimeline("DisplayObject.RunFrameScript"), w.MovieClip.runFrameScripts(), k.leaveTimeline(), k.enterTimeline("DisplayObject.ExitFrame"), r._broadcastFrameEvent(h.Event.EXIT_FRAME), k.leaveTimeline()) : w.MovieClip.reset();
              b && (r._runScripts = !0);
            };
            r._broadcastFrameEvent = function(a) {
              var b;
              switch(a) {
                case h.Event.ENTER_FRAME:
                ;
                case h.Event.FRAME_CONSTRUCTED:
                ;
                case h.Event.EXIT_FRAME:
                ;
                case h.Event.RENDER:
                  b = h.Event.getBroadcastInstance(a);
              }
              h.EventDispatcher.broadcastEventDispatchQueue.dispatchEvent(b);
            };
            r.prototype._setInitialName = function() {
              this._name = "instance" + a.display.DisplayObject._instanceID++;
            };
            r.prototype._setParent = function(a, b) {
              var e = this._parent;
              this._parent = a;
              this._setDepth(b);
              if (a) {
                this._addReference();
                var c = 0;
                this._hasFlags(8192) && (c |= 16384);
                this._hasAnyFlags(f.Bubbling) && (c |= this._displayObjectFlags & f.Bubbling);
                c && a._propagateFlagsUp(c);
              }
              e && this._removeReference();
            };
            r.prototype._setDepth = function(a) {
              -1 < a ? this._setFlags(2048) : this._removeFlags(2048);
              this._depth = a;
            };
            r.prototype._setFillAndLineBoundsFromWidthAndHeight = function(a, b) {
              this._fillBounds.width = a;
              this._fillBounds.height = b;
              this._lineBounds.width = a;
              this._lineBounds.height = b;
              this._removeFlags(6);
              this._invalidateParentFillAndLineBounds(!0, !0);
            };
            r.prototype._setFillAndLineBoundsFromSymbol = function(a) {
              a.fillBounds && (this._fillBounds.copyFrom(a.fillBounds), this._removeFlags(4));
              a.lineBounds && (this._lineBounds.copyFrom(a.lineBounds), this._removeFlags(2));
              this._invalidateParentFillAndLineBounds(!!a.fillBounds, !!a.lineBounds);
            };
            r.prototype._setFlags = function(a) {
              this._displayObjectFlags |= a;
            };
            r.prototype._setDirtyFlags = function(a) {
              this._displayObjectFlags |= a;
              this._parent && this._parent._propagateFlagsUp(536870912);
            };
            r.prototype._toggleFlags = function(a, b) {
              this._displayObjectFlags = b ? this._displayObjectFlags | a : this._displayObjectFlags & ~a;
            };
            r.prototype._removeFlags = function(a) {
              this._displayObjectFlags &= ~a;
            };
            r.prototype._hasFlags = function(a) {
              return (this._displayObjectFlags & a) === a;
            };
            r.prototype._hasAnyFlags = function(a) {
              return !!(this._displayObjectFlags & a);
            };
            r.prototype._propagateFlagsUp = function(a) {
              if (!this._hasFlags(a)) {
                this._setFlags(a);
                var b = this._parent;
                b && b._propagateFlagsUp(a);
              }
            };
            r.prototype._propagateFlagsDown = function(a) {
              this._setFlags(a);
            };
            r.prototype._findNearestAncestor = function() {
              for (var a = this;a;) {
                if (!1 === a._hasFlags(128)) {
                  return a;
                }
                a = a._parent;
              }
              return null;
            };
            r.prototype._findFurthestAncestorOrSelf = function() {
              for (var a = this;a;) {
                if (!a._parent) {
                  return a;
                }
                a = a._parent;
              }
            };
            r.prototype._isAncestor = function(a) {
              for (;a;) {
                if (a === this) {
                  return !0;
                }
                a = a._parent;
              }
              return !1;
            };
            r._clampRotation = function(a) {
              a %= 360;
              180 < a ? a -= 360 : -180 > a && (a += 360);
              return a;
            };
            r._getAncestors = function(a, b) {
              var e = r._path;
              for (e.length = 0;a && a !== b;) {
                e.push(a), a = a._parent;
              }
              return e;
            };
            r.prototype._getConcatenatedMatrix = function() {
              this._hasFlags(32) && (this._parent ? this._parent._getConcatenatedMatrix().preMultiplyInto(this._getMatrix(), this._concatenatedMatrix) : this._concatenatedMatrix.copyFrom(this._getMatrix()), this._removeFlags(32));
              return this._concatenatedMatrix;
            };
            r.prototype._getInvertedConcatenatedMatrix = function() {
              this._hasFlags(64) && (this._getConcatenatedMatrix().invertInto(this._invertedConcatenatedMatrix), this._removeFlags(64));
              return this._invertedConcatenatedMatrix;
            };
            r.prototype._setMatrix = function(a, b) {
              if (b || !this._matrix.equals(a)) {
                var e = this._matrix;
                e.copyFrom(a);
                b && e.toTwipsInPlace();
                this._scaleX = e.getScaleX();
                this._scaleY = e.getScaleY();
                this._skewX = a.getSkewX();
                this._skewY = a.getSkewY();
                this._rotation = r._clampRotation(180 * this._skewY / Math.PI);
                this._removeFlags(8);
                this._setFlags(16);
                this._setDirtyFlags(1048576);
                this._invalidatePosition();
              }
            };
            r.prototype._getMatrix = function() {
              this._hasFlags(8) && (this._matrix.updateScaleAndRotation(this._scaleX, this._scaleY, this._skewX, this._skewY), this._removeFlags(8));
              return this._matrix;
            };
            r.prototype._getInvertedMatrix = function() {
              this._hasFlags(16) && (this._getMatrix().invertInto(this._invertedMatrix), this._removeFlags(16));
              return this._invertedMatrix;
            };
            r.prototype._getConcatenatedColorTransform = function() {
              if (!this.stage) {
                return this._colorTransform.clone();
              }
              if (this._hasFlags(128)) {
                var b = this._findNearestAncestor(), e = r._getAncestors(this, b), c = e.length - 1;
                a.display.Stage.isType(e[c]) && c--;
                for (var f = b && !a.display.Stage.isType(b) ? b._concatenatedColorTransform.clone() : new m.ColorTransform;0 <= c;) {
                  b = e[c--], f.preMultiply(b._colorTransform), f.convertToFixedPoint(), b._concatenatedColorTransform.copyFrom(f), b._removeFlags(128);
                }
              }
              return this._concatenatedColorTransform;
            };
            r.prototype._setColorTransform = function(a) {
              this._colorTransform.copyFrom(a);
              this._colorTransform.convertToFixedPoint();
              this._propagateFlagsDown(128);
              this._setDirtyFlags(67108864);
            };
            r.prototype._invalidateFillAndLineBounds = function(a, b) {
              this._propagateFlagsUp((b ? 2 : 0) | (a ? 4 : 0));
            };
            r.prototype._invalidateParentFillAndLineBounds = function(a, b) {
              this._parent && this._parent._invalidateFillAndLineBounds(a, b);
            };
            r.prototype._getContentBounds = function(a) {
              void 0 === a && (a = !0);
              var b, e;
              a ? (b = 2, e = this._lineBounds) : (b = 4, e = this._fillBounds);
              if (this._hasFlags(b)) {
                var c = this._getGraphics();
                c ? e.copyFrom(c._getContentBounds(a)) : e.setToSentinels();
                this._getChildBounds(e, a);
                this._removeFlags(b);
              }
              return e;
            };
            r.prototype._getChildBounds = function(a, b) {
            };
            r.prototype._getTransformedBounds = function(a, b) {
              var e = this._getContentBounds(b).clone();
              if (a === this || e.isEmpty()) {
                return e;
              }
              var c;
              a ? (c = m.Matrix.TEMP_MATRIX, a._getInvertedConcatenatedMatrix().preMultiplyInto(this._getConcatenatedMatrix(), c)) : c = this._getConcatenatedMatrix();
              c.transformBounds(e);
              return e;
            };
            r.prototype._stopTimelineAnimation = function() {
              this._removeFlags(4096);
            };
            r.prototype._invalidateMatrix = function() {
              this._setDirtyFlags(1048576);
              this._setFlags(24);
              this._invalidatePosition();
            };
            r.prototype._invalidatePosition = function() {
              this._propagateFlagsDown(96);
              this._invalidateParentFillAndLineBounds(!0, !0);
            };
            r.prototype._animate = function(b) {
              var e = !(b.flags & 1) && b.flags & 2;
              b.flags & 4 ? (m.Matrix.TEMP_MATRIX.copyFromUntyped(b.matrix), this._setMatrix(m.Matrix.TEMP_MATRIX, !1)) : e && this._setMatrix(m.Matrix.FROZEN_IDENTITY_MATRIX, !1);
              b.flags & 8 ? (m.ColorTransform.TEMP_COLOR_TRANSFORM.copyFromUntyped(b.cxform), this._setColorTransform(m.ColorTransform.TEMP_COLOR_TRANSFORM)) : e && this._setColorTransform(m.ColorTransform.FROZEN_IDENTITY_COLOR_TRANSFORM);
              if (b.flags & 16 || e) {
                var c = b.ratio | 0;
                c !== this._ratio && (this._ratio = c, this._setDirtyFlags(1073741824));
              }
              if (b.flags & 64 || e) {
                c = void 0 === b.clipDepth ? -1 : b.clipDepth, c !== this._clipDepth && (this._clipDepth = c, this._setDirtyFlags(268435456));
              }
              if (b.flags & 256) {
                for (var c = [], f = b.filters, h = 0;h < f.length;h++) {
                  var d = f[h], g;
                  switch(d.type) {
                    case 0:
                      g = a.filters.DropShadowFilter.FromUntyped(d);
                      break;
                    case 1:
                      g = a.filters.BlurFilter.FromUntyped(d);
                      break;
                    case 2:
                      g = a.filters.GlowFilter.FromUntyped(d);
                      break;
                    case 3:
                      g = a.filters.BevelFilter.FromUntyped(d);
                      break;
                    case 4:
                      g = a.filters.GradientGlowFilter.FromUntyped(d);
                      break;
                    case 5:
                      g = a.filters.ConvolutionFilter.FromUntyped(d);
                      break;
                    case 6:
                      g = a.filters.ColorMatrixFilter.FromUntyped(d);
                      break;
                    case 7:
                      g = a.filters.GradientBevelFilter.FromUntyped(d);
                  }
                  c.push(g);
                }
                this._filters = c;
                this._setDirtyFlags(1073741824);
              } else {
                e && (this._filters = null, this._setDirtyFlags(1073741824));
              }
              if (b.flags & 512 || e) {
                g = a.display.BlendMode.fromNumber(void 0 === b.blendMode ? 1 : b.blendMode), g !== this._blendMode && (this._blendMode = g, this._setDirtyFlags(1073741824));
              }
              if (b.flags & 1024 || e) {
                g = 0 < b.bmpCache, g !== this._hasFlags(65536) && (this._toggleFlags(65536, g), this._setDirtyFlags(1073741824));
              }
              if (b.flags & 8192 || e) {
                b = 0 !== b.visibility, b !== this._hasFlags(1) && (this._toggleFlags(1, b), this._setDirtyFlags(1073741824));
              }
            };
            r.prototype._propagateEvent = function(a) {
              this.visit(function(b) {
                b.dispatchEvent(a);
                return 0;
              }, 0);
            };
            Object.defineProperty(r.prototype, "x", {get:function() {
              return this._getX();
            }, set:function(a) {
              a = 20 * a | 0;
              this._stopTimelineAnimation();
              if (this._canHaveTextContent()) {
                var b = this._getContentBounds();
                a -= b.xMin;
              }
              a !== this._matrix.tx && (this._matrix.tx = a, this._invertedMatrix.tx = -a, this._invalidatePosition(), this._setDirtyFlags(1048576));
            }, enumerable:!0, configurable:!0});
            r.prototype._getX = function() {
              var a = this._matrix.tx;
              if (this._canHaveTextContent()) {
                var b = this._getContentBounds(), a = a + b.xMin
              }
              return a / 20;
            };
            Object.defineProperty(r.prototype, "y", {get:function() {
              return this._getY();
            }, set:function(a) {
              a = 20 * a | 0;
              this._stopTimelineAnimation();
              if (this._canHaveTextContent()) {
                var b = this._getContentBounds();
                a -= b.yMin;
              }
              a !== this._matrix.ty && (this._matrix.ty = a, this._invertedMatrix.ty = -a, this._invalidatePosition(), this._setDirtyFlags(1048576));
            }, enumerable:!0, configurable:!0});
            r.prototype._getY = function() {
              var a = this._matrix.ty;
              if (this._canHaveTextContent()) {
                var b = this._getContentBounds(), a = a + b.yMin
              }
              return a / 20;
            };
            Object.defineProperty(r.prototype, "scaleX", {get:function() {
              return Math.abs(this._scaleX);
            }, set:function(a) {
              a = +a;
              this._stopTimelineAnimation();
              a !== this._scaleX && (this._scaleX = a, this._invalidateMatrix());
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "scaleY", {get:function() {
              return this._scaleY;
            }, set:function(a) {
              a = +a;
              this._stopTimelineAnimation();
              a !== this._scaleY && (this._scaleY = a, this._invalidateMatrix());
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "scaleZ", {get:function() {
              return this._scaleZ;
            }, set:function(a) {
              v("public DisplayObject::set scaleZ");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "rotation", {get:function() {
              return this._rotation;
            }, set:function(a) {
              a = +a;
              this._stopTimelineAnimation();
              a = r._clampRotation(a);
              if (a !== this._rotation) {
                var b = (a - this._rotation) / 180 * Math.PI;
                this._skewX += b;
                this._skewY += b;
                this._rotation = a;
                this._invalidateMatrix();
              }
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "rotationX", {get:function() {
              return this._rotationX;
            }, set:function(a) {
              v("public DisplayObject::set rotationX");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "rotationY", {get:function() {
              return this._rotationY;
            }, set:function(a) {
              v("public DisplayObject::set rotationY");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "rotationZ", {get:function() {
              return this._rotationZ;
            }, set:function(a) {
              v("public DisplayObject::set rotationZ");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "width", {get:function() {
              return this._getWidth();
            }, set:function(a) {
              this._setWidth(a);
            }, enumerable:!0, configurable:!0});
            r.prototype._getWidth = function() {
              return this._getTransformedBounds(this._parent, !0).width / 20;
            };
            r.prototype._setWidth = function(a) {
              a = 20 * a | 0;
              this._stopTimelineAnimation();
              if (!(0 > a)) {
                var b = this._getContentBounds(!0);
                if (this._canHaveTextContent()) {
                  var e = this._getContentBounds();
                  this._setFillAndLineBoundsFromWidthAndHeight(a, b.height);
                } else {
                  var e = this._getTransformedBounds(this._parent, !0), c = this._rotation / 180 * Math.PI, f = b.getBaseWidth(c);
                  f && (this._scaleY = e.height / b.getBaseHeight(c), this._scaleX = a / f, this._invalidateMatrix());
                }
              }
            };
            Object.defineProperty(r.prototype, "height", {get:function() {
              return this._getHeight();
            }, set:function(a) {
              this._setHeight(a);
            }, enumerable:!0, configurable:!0});
            r.prototype._getHeight = function() {
              return this._getTransformedBounds(this._parent, !0).height / 20;
            };
            r.prototype._setHeight = function(a) {
              a = 20 * a | 0;
              this._stopTimelineAnimation();
              if (!(0 > a)) {
                var b = this._getContentBounds(!0);
                if (this._canHaveTextContent()) {
                  var e = this._getContentBounds();
                  this._setFillAndLineBoundsFromWidthAndHeight(b.width, a);
                } else {
                  var e = this._getTransformedBounds(this._parent, !0), c = this._rotation / 180 * Math.PI, f = b.getBaseHeight(c);
                  f && (b = b.getBaseWidth(c), this._scaleY = a / f, this._scaleX = e.width / b, this._invalidateMatrix());
                }
              }
            };
            Object.defineProperty(r.prototype, "mask", {get:function() {
              return this._mask;
            }, set:function(a) {
              if (this._mask !== a && a !== this) {
                a && a._maskedObject && (a._maskedObject.mask = null);
                if (this._mask = a) {
                  a._maskedObject = this;
                }
                this._setDirtyFlags(134217728);
              }
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "transform", {get:function() {
              return this._getTransform();
            }, set:function(a) {
              this._stopTimelineAnimation();
              a.matrix3D ? this._matrix3D = a.matrix3D : this._setMatrix(a.matrix, !0);
              this._setColorTransform(a.colorTransform);
            }, enumerable:!0, configurable:!0});
            r.prototype._getTransform = function() {
              return new a.geom.Transform(this);
            };
            r.prototype.destroy = function() {
              this._setFlags(512);
            };
            Object.defineProperty(r.prototype, "root", {get:function() {
              var a = this;
              do {
                if (a._root === a) {
                  return a;
                }
                a = a._parent;
              } while (a);
              return null;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "stage", {get:function() {
              var a = this;
              do {
                if (a._stage === a) {
                  return a;
                }
                a = a._parent;
              } while (a);
              return null;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "name", {get:function() {
              return this._name;
            }, set:function(a) {
              q(a, "name");
              this._name = c(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "parent", {get:function() {
              return this._parent;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "alpha", {get:function() {
              return this._colorTransform.alphaMultiplier;
            }, set:function(a) {
              this._stopTimelineAnimation();
              a = +a;
              a !== this._colorTransform.alphaMultiplier && (this._colorTransform.alphaMultiplier = a, this._colorTransform.convertToFixedPoint(), this._propagateFlagsDown(128), this._setDirtyFlags(67108864));
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "blendMode", {get:function() {
              return this._blendMode;
            }, set:function(a) {
              this._stopTimelineAnimation();
              a = c(a);
              a !== this._blendMode && (0 > w.BlendMode.toNumber(a) && g("ArgumentError", k.Errors.InvalidEnumError, "blendMode"), this._blendMode = a, this._setDirtyFlags(1073741824));
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "scale9Grid", {get:function() {
              return this._getScale9Grid();
            }, set:function(a) {
              this._stopTimelineAnimation();
              this._scale9Grid = t.FromRectangle(a);
              this._setDirtyFlags(1073741824);
            }, enumerable:!0, configurable:!0});
            r.prototype._getScale9Grid = function() {
              return this._scale9Grid ? a.geom.Rectangle.FromBounds(this._scale9Grid) : null;
            };
            Object.defineProperty(r.prototype, "cacheAsBitmap", {get:function() {
              return this._getCacheAsBitmap();
            }, set:function(a) {
              this._hasFlags(65536) || (this._toggleFlags(65536, !!a), this._setDirtyFlags(1073741824));
            }, enumerable:!0, configurable:!0});
            r.prototype._getCacheAsBitmap = function() {
              return this._filters && 0 < this._filters.length || this._hasFlags(65536);
            };
            Object.defineProperty(r.prototype, "filters", {get:function() {
              return this._getFilters();
            }, set:function(a) {
              this._filters || (this._filters = []);
              var b = !1;
              l(a) ? (b = 0 < this.filters.length, this._filters.length = 0) : (this._filters = a.map(function(a) {
                return a.clone();
              }), b = !0);
              b && this._setDirtyFlags(1073741824);
            }, enumerable:!0, configurable:!0});
            r.prototype._getFilters = function() {
              return this._filters ? this._filters.map(function(a) {
                return a.clone();
              }) : [];
            };
            Object.defineProperty(r.prototype, "visible", {get:function() {
              return this._hasFlags(1);
            }, set:function(a) {
              a = !!a;
              a !== this._hasFlags(1) && (this._toggleFlags(1, a), this._setDirtyFlags(1073741824));
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "z", {get:function() {
              return this._z;
            }, set:function(a) {
              this._z = +a;
              v("public DisplayObject::set z");
            }, enumerable:!0, configurable:!0});
            r.prototype.getBounds = function(a) {
              return m.Rectangle.FromBounds(this._getTransformedBounds(a || this, !0));
            };
            r.prototype.getRect = function(a) {
              return m.Rectangle.FromBounds(this._getTransformedBounds(a || this, !1));
            };
            r.prototype.globalToLocal = function(a) {
              return this._getInvertedConcatenatedMatrix().transformPointInPlace(a.clone().toTwips()).round().toPixels();
            };
            r.prototype.localToGlobal = function(a) {
              return this._getConcatenatedMatrix().transformPointInPlace(a.clone().toTwips()).round().toPixels();
            };
            r.prototype.globalToLocal3D = function(a) {
              v("public DisplayObject::globalToLocal3D");
              return null;
            };
            r.prototype.localToGlobal3D = function(a) {
              v("public DisplayObject::localToGlobal3D");
              return null;
            };
            r.prototype.local3DToGlobal = function(a) {
              v("public DisplayObject::local3DToGlobal");
              return null;
            };
            r.prototype.visit = function(a, b, e) {
              void 0 === e && (e = 0);
              var c, f, h = b & 8;
              for (c = [this];0 < c.length;) {
                f = c.pop();
                var d = 0, d = b & 16 && !f._hasAnyFlags(e) ? 2 : a(f);
                if (0 === d) {
                  if (f = f._children) {
                    for (var d = f.length, g = 0;g < d;g++) {
                      c.push(f[h ? g : d - 1 - g]);
                    }
                  }
                } else {
                  if (1 === d) {
                    break;
                  }
                }
              }
            };
            Object.defineProperty(r.prototype, "loaderInfo", {get:function() {
              var a = this.root;
              return a ? a._loaderInfo : null;
            }, enumerable:!0, configurable:!0});
            r.prototype._canHaveGraphics = function() {
              return !1;
            };
            r.prototype._getGraphics = function() {
              return null;
            };
            r.prototype._canHaveTextContent = function() {
              return !1;
            };
            r.prototype._getTextContent = function() {
              return null;
            };
            r.prototype._ensureGraphics = function() {
              if (this._graphics) {
                return this._graphics;
              }
              this._graphics = new a.display.Graphics;
              this._graphics._setParent(this);
              this._invalidateFillAndLineBounds(!0, !0);
              this._setDirtyFlags(4194304);
              return this._graphics;
            };
            r.prototype._setStaticContentFromSymbol = function(b) {
              this._canHaveGraphics() ? (this._graphics = b.graphics, this._setDirtyFlags(4194304)) : a.text.StaticText.isType(this) && (this._textContent = b.textContent, this._setDirtyFlags(8388608));
              this._symbol = b;
              this._setFillAndLineBoundsFromSymbol(b);
            };
            r.prototype.hitTestObject = function(a) {
              var b = this._getContentBounds(!1).clone(), e = a._getContentBounds(!1).clone();
              this._getConcatenatedMatrix().transformBounds(b);
              a._getConcatenatedMatrix().transformBounds(e);
              return b.intersects(e);
            };
            r.prototype.hitTestPoint = function(a, b, e) {
              return !!this._containsGlobalPoint(20 * +a | 0, 20 * +b | 0, e ? 2 : 0, null);
            };
            r.prototype._containsPoint = function(a, b, e, c, f, h) {
              var d = this._boundsAndMaskContainPoint(a, b, e, c, f);
              if (0 === d || 2 > f) {
                return d;
              }
              (a = this._containsPointDirectly(e, c, a, b)) && h && (5 === f ? h[0] = this : (4 === f || w.InteractiveObject.isType(this) && this._mouseEnabled) && h.push(this));
              return a ? 2 : d;
            };
            r.prototype._containsGlobalPoint = function(a, b, e, c) {
              var f = this._getInvertedConcatenatedMatrix();
              return this._containsPoint(a, b, f.transformX(a, b), f.transformY(a, b), e, c);
            };
            r.prototype._boundsAndMaskContainPoint = function(a, b, e, c, f) {
              return 1 <= f && this._hasFlags(32768) ? 1 : 3 <= f && !this._hasFlags(1) || !this._getContentBounds().contains(e, c) ? 0 : 0 !== f && this._mask ? this._mask._containsGlobalPoint(a, b, 1, null) : 1;
            };
            r.prototype._containsPointDirectly = function(a, b, e, c) {
              return !1;
            };
            Object.defineProperty(r.prototype, "scrollRect", {get:function() {
              return this._getScrollRect();
            }, set:function(a) {
              this._scrollRect = a ? a.clone() : null;
              u("public DisplayObject::set scrollRect");
            }, enumerable:!0, configurable:!0});
            r.prototype._getScrollRect = function() {
              return this._scrollRect ? this._scrollRect.clone() : null;
            };
            Object.defineProperty(r.prototype, "opaqueBackground", {get:function() {
              return this._opaqueBackground;
            }, set:function(a) {
              this._opaqueBackground = a;
            }, enumerable:!0, configurable:!0});
            r.prototype._getDistance = function(a) {
              for (var b = 0, e = this;e !== a;) {
                b++, e = e._parent;
              }
              return b;
            };
            r.prototype.findNearestCommonAncestor = function(a) {
              if (!a) {
                return null;
              }
              for (var b = this, e = b._getDistance(null), c = a._getDistance(null);e > c;) {
                b = b._parent, e--;
              }
              for (;c > e;) {
                a = a._parent, c--;
              }
              for (;b !== a;) {
                b = b._parent, a = a._parent;
              }
              return b;
            };
            r.prototype._getLocalMousePosition = function() {
              var b = a.ui.Mouse._currentPosition;
              this._parent && (b = this._parent.globalToLocal(a.ui.Mouse._currentPosition));
              return b;
            };
            Object.defineProperty(r.prototype, "mouseX", {get:function() {
              return this._getLocalMousePosition().x;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "mouseY", {get:function() {
              return this._getLocalMousePosition().y;
            }, enumerable:!0, configurable:!0});
            r.prototype.debugName = function(a) {
              void 0 === a && (a = !1);
              var b = this._id + " [" + this._depth + "]: (" + this._referenceCount + ") " + this;
              if (a) {
                a = [];
                for (var e = 0;32 > e;e++) {
                  this._hasFlags(1 << e) && a.push(f[1 << e]);
                }
                b += " " + a.join("|");
              }
              return b;
            };
            r.prototype.debugTrace = function() {
              var a, b;
              void 0 === a && (a = 1024);
              void 0 === b && (b = "");
              var e = this, c = new d.IndentingWriter;
              this.visit(function(f) {
                var h = f._getDistance(e);
                if (h > a) {
                  return 2;
                }
                h = b + d.StringUtilities.multiple(" ", h);
                c.writeObject(h + f.debugName() + ", bounds: " + f.getBounds(null).toString(), {"...":{value:f}});
                return 0;
              }, 0);
            };
            r.prototype._addReference = function() {
              this._referenceCount++;
            };
            r.prototype._removeReference = function() {
              this._referenceCount--;
              if (0 === this._referenceCount && this._children) {
                for (var a = this._children, b = 0;b < a.length;b++) {
                  a[b]._removeReference();
                }
              }
            };
            Object.defineProperty(r.prototype, "accessibilityProperties", {get:function() {
              return this._accessibilityProperties;
            }, set:function(a) {
              this._accessibilityProperties = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "blendShader", {set:function(a) {
              v("public DisplayObject::set blendShader");
            }, enumerable:!0, configurable:!0});
            r._syncID = 0;
            r._instanceID = 1;
            r.classInitializer = function() {
              this.reset();
            };
            r.initializer = function(b) {
              this._id = a.display.DisplayObject.getNextSyncID();
              this._displayObjectFlags = 2085617767;
              this._stage = this._root = null;
              this._setInitialName();
              this._mask = this._parent = null;
              this._z = 0;
              this._scaleY = this._scaleX = 1;
              this._skewY = this._skewX = 0;
              this._scaleZ = 1;
              this._height = this._width = this._rotationZ = this._rotationY = this._rotationX = this._rotation = 0;
              this._filters = this._scrollRect = this._opaqueBackground = null;
              this._blendMode = w.BlendMode.NORMAL;
              this._accessibilityProperties = this._loaderInfo = this._scale9Grid = null;
              this._fillBounds = new t(0, 0, 0, 0);
              this._lineBounds = new t(0, 0, 0, 0);
              this._clipDepth = -1;
              this._concatenatedMatrix = new m.Matrix;
              this._invertedConcatenatedMatrix = new m.Matrix;
              this._matrix = new m.Matrix;
              this._invertedMatrix = new m.Matrix;
              this._matrix3D = null;
              this._colorTransform = new m.ColorTransform;
              this._concatenatedColorTransform = new m.ColorTransform;
              this._depth = -1;
              this._ratio = 0;
              this._index = -1;
              this._maskedObject = null;
              this._mouseDown = this._mouseOver = !1;
              this._children = this._graphics = this._symbol = null;
              this._referenceCount = 0;
              b && (b.scale9Grid && (this._scale9Grid = b.scale9Grid), this._symbol = b);
            };
            r.classSymbols = null;
            r.instanceSymbols = null;
            r._runScripts = !0;
            r._path = [];
            return r;
          }(a.events.EventDispatcher);
          w.DisplayObject = b;
        })(a.display || (a.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(w) {
          var v = d.AVM2.Runtime.asCoerceString, u = d.AVM2.Runtime.throwError, l = function(c) {
            function g(a, c, d) {
              void 0 === a && (a = null);
              void 0 === c && (c = "auto");
              void 0 === d && (d = !1);
              w.DisplayObject.instanceConstructorNoInitialize.call(this);
              this._symbol ? this._bitmapData.class.instanceConstructorNoInitialize.call(this._bitmapData) : this.bitmapData = a;
              this._pixelSnapping = v(c);
              this._smoothing = !!d;
            }
            __extends(g, c);
            Object.defineProperty(g.prototype, "pixelSnapping", {get:function() {
              return this._pixelSnapping;
            }, set:function(a) {
              0 > w.PixelSnapping.toNumber(a) && u("ArgumentError", k.Errors.InvalidEnumError, "pixelSnapping");
              this._pixelSnapping = v(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "smoothing", {get:function() {
              return this._smoothing;
            }, set:function(a) {
              this._smoothing = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "bitmapData", {get:function() {
              return this._bitmapData;
            }, set:function(a) {
              this._bitmapData !== a && (this._bitmapData && this._bitmapData._removeBitmapReferrer(this), a && a._addBitmapReferrer(this));
              (this._bitmapData = a) && this._setFillAndLineBoundsFromWidthAndHeight(20 * a.width | 0, 20 * a.height | 0);
              this._invalidateParentFillAndLineBounds(!0, !0);
              this._setDirtyFlags(16777216);
            }, enumerable:!0, configurable:!0});
            g.prototype._getContentBounds = function(a) {
              return this._bitmapData ? this._bitmapData._getContentBounds() : new d.Bounds(0, 0, 0, 0);
            };
            g.prototype._containsPointDirectly = function(a, c, d, h) {
              return !0;
            };
            g.classInitializer = null;
            g.initializer = function(c) {
              this._smoothing = this._pixelSnapping = this._bitmapData = null;
              if (c) {
                var d = c.symbolClass;
                d.isSubtypeOf(a.display.Bitmap) && (d = a.display.BitmapData);
                this._bitmapData = d.initializeFrom(c);
                this._setFillAndLineBoundsFromWidthAndHeight(20 * c.width | 0, 20 * c.height | 0);
              }
            };
            g.classSymbols = null;
            g.instanceSymbols = null;
            return g;
          }(a.display.DisplayObject);
          w.Bitmap = l;
        })(a.display || (a.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.Debug.warning, u = function(a) {
            function c() {
              k.DisplayObject.instanceConstructorNoInitialize.call(this);
            }
            __extends(c, a);
            c.prototype._canHaveGraphics = function() {
              return !0;
            };
            c.prototype._getGraphics = function() {
              return this._graphics;
            };
            Object.defineProperty(c.prototype, "graphics", {get:function() {
              return this._ensureGraphics();
            }, enumerable:!0, configurable:!0});
            c.prototype._containsPointDirectly = function(a, c, d, l) {
              d = this._getGraphics();
              return !!d && d._containsPoint(a, c, !0, 0);
            };
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.classInitializer = null;
            c.initializer = function(a) {
              this._graphics = null;
              a && this._setStaticContentFromSymbol(a);
            };
            return c;
          }(a.display.DisplayObject);
          k.Shape = u;
          u = function(d) {
            function c(a, c) {
              d.call(this, a, c, !1);
              this.graphics = null;
            }
            __extends(c, d);
            c.FromData = function(d, l) {
              var k = new c(d, a.display.Shape);
              k._setBoundsFromData(d);
              k.graphics = a.display.Graphics.FromData(d);
              k.processRequires(d.require, l);
              return k;
            };
            c.prototype.processRequires = function(a, c) {
              if (a) {
                for (var d = this.graphics._textures, l = 0;l < a.length;l++) {
                  var h = c.getSymbolById(a[l]);
                  h ? d.push(h.getSharedInstance()) : (65535 !== a[l] && v("Bitmap symbol " + a[l] + " required by shape, but not defined."), d.push(null));
                }
              }
            };
            return c;
          }(d.Timeline.DisplaySymbol);
          k.ShapeSymbol = u;
        })(a.display || (a.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.Debug.notImplemented, u = d.Debug.somewhatImplemented, l = a.display.DisplayObject, c = a.events, g = function(a) {
            function d() {
              l.instanceConstructorNoInitialize.call(this);
            }
            __extends(d, a);
            Object.defineProperty(d.prototype, "tabEnabled", {get:function() {
              return this._tabEnabled;
            }, set:function(a) {
              a = !!a;
              var h = this._tabEnabled;
              this._tabEnabled = a;
              h !== a && this.dispatchEvent(c.Event.getInstance(c.Event.TAB_ENABLED_CHANGE, !0));
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "tabIndex", {get:function() {
              return this._tabIndex;
            }, set:function(a) {
              a |= 0;
              var h = this._tabIndex;
              this._tabIndex = a;
              h !== a && this.dispatchEvent(c.Event.getInstance(c.Event.TAB_INDEX_CHANGE, !0));
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "focusRect", {get:function() {
              return this._focusRect;
            }, set:function(a) {
              u("public flash.display.InteractiveObject::set focusRect");
              this._focusRect = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "mouseEnabled", {get:function() {
              return this._mouseEnabled;
            }, set:function(a) {
              this._mouseEnabled = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "doubleClickEnabled", {get:function() {
              return this._doubleClickEnabled;
            }, set:function(a) {
              this._doubleClickEnabled = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "accessibilityImplementation", {get:function() {
              return this._accessibilityImplementation;
            }, set:function(a) {
              v("public flash.display.InteractiveObject::set accessibilityImplementation");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "softKeyboardInputAreaOfInterest", {get:function() {
              return this._softKeyboardInputAreaOfInterest;
            }, set:function(a) {
              v("public flash.display.InteractiveObject::set softKeyboardInputAreaOfInterest");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "needsSoftKeyboard", {get:function() {
              return this._needsSoftKeyboard;
            }, set:function(a) {
              v("public flash.display.InteractiveObject::set needsSoftKeyboard");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "contextMenu", {get:function() {
              return this._contextMenu;
            }, set:function(a) {
              u("public flash.display.InteractiveObject::set contextMenu");
              this._contextMenu = a;
            }, enumerable:!0, configurable:!0});
            d.prototype.requestSoftKeyboard = function() {
              v("public flash.display.InteractiveObject::requestSoftKeyboard");
            };
            d.classInitializer = null;
            d.initializer = function() {
              this._tabEnabled = !1;
              this._tabIndex = -1;
              this._focusRect = null;
              this._mouseEnabled = !0;
              this._doubleClickEnabled = !1;
              this._softKeyboardInputAreaOfInterest = this._accessibilityImplementation = null;
              this._needsSoftKeyboard = !1;
              this._contextMenu = null;
            };
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(a.display.DisplayObject);
          k.InteractiveObject = g;
        })(a.display || (a.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.Debug.notImplemented, u = function(a) {
            function d(a, c, g, h) {
              void 0 === a && (a = null);
              void 0 === c && (c = null);
              void 0 === g && (g = null);
              void 0 === h && (h = null);
              k.InteractiveObject.instanceConstructorNoInitialize.call(this);
              a && (this.upState = a);
              c && (this.overState = c);
              g && (this.downState = g);
              h && (this.hitTestState = h);
              this._updateButton();
            }
            __extends(d, a);
            d.prototype._initFrame = function(a) {
              a && this._updateButton();
            };
            d.prototype._constructFrame = function() {
            };
            Object.defineProperty(d.prototype, "useHandCursor", {get:function() {
              return this._useHandCursor;
            }, set:function(a) {
              this._useHandCursor = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "enabled", {get:function() {
              return this._enabled;
            }, set:function(a) {
              this._enabled = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "trackAsMenu", {get:function() {
              return this._trackAsMenu;
            }, set:function(a) {
              v("public flash.display.SimpleButton::set trackAsMenu");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "upState", {get:function() {
              return this._upState;
            }, set:function(a) {
              var c = this._upState;
              a._parent && a._parent.removeChild(a);
              this._upState = a;
              this._currentState === c && this._updateButton();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "overState", {get:function() {
              return this._overState;
            }, set:function(a) {
              var c = this._overState;
              a._parent && a._parent.removeChild(a);
              this._overState = a;
              this._currentState === c && this._updateButton();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "downState", {get:function() {
              return this._downState;
            }, set:function(a) {
              var c = this._downState;
              a._parent && a._parent.removeChild(a);
              this._downState = a;
              this._currentState === c && this._updateButton();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "hitTestState", {get:function() {
              return this._hitTestState;
            }, set:function(a) {
              this._hitTestState = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "soundTransform", {get:function() {
              v("public flash.display.SimpleButton::get soundTransform");
            }, set:function(a) {
              v("public flash.display.SimpleButton::set soundTransform");
            }, enumerable:!0, configurable:!0});
            d.prototype._containsPoint = function(a, c, d, h, f, b) {
              d = 3 === f ? this._hitTestState : this._currentState;
              if (!d) {
                return 0;
              }
              d._parent = this;
              a = d._containsGlobalPoint(a, c, f, b);
              d._parent = null;
              0 !== a && 3 === f && b && this._mouseEnabled && (b[0] = this);
              return a;
            };
            d.prototype._getChildBounds = function(a, c) {
              this._currentState && (this._currentState._parent = this, a.unionInPlace(this._currentState._getTransformedBounds(this, c)), this._currentState._parent = null);
            };
            d.prototype._propagateFlagsDown = function(a) {
              this._hasFlags(a) || (this._setFlags(a), this._upState && this._upState._propagateFlagsDown(a), this._overState && this._overState._propagateFlagsDown(a), this._downState && this._downState._propagateFlagsDown(a), this._hitTestState && this._hitTestState._propagateFlagsDown(a));
            };
            d.prototype._updateButton = function() {
              var a;
              a = this._mouseOver ? this._mouseDown ? this._downState : this._overState : this._upState;
              a !== this._currentState && ((this._currentState = a) ? this._children[0] = a : this._children.length = 0, this._setDirtyFlags(2097152), this._invalidateFillAndLineBounds(!0, !0));
            };
            d.classInitializer = null;
            d.initializer = function(a) {
              k.DisplayObject._advancableInstances.push(this);
              this._enabled = this._useHandCursor = !0;
              this._trackAsMenu = !1;
              this._currentState = this._hitTestState = this._downState = this._overState = this._upState = null;
              this._children = [];
              if (this._symbol = a) {
                a.upState && (this._upState = this.createAnimatedDisplayObject(a.upState.symbol, a.upState.placeObjectTag, !0)), a.overState && (this._overState = this.createAnimatedDisplayObject(a.overState.symbol, a.overState.placeObjectTag, !0)), a.downState && (this._downState = this.createAnimatedDisplayObject(a.downState.symbol, a.downState.placeObjectTag, !0)), a.hitTestState && (this._hitTestState = this.createAnimatedDisplayObject(a.hitTestState.symbol, a.hitTestState.placeObjectTag, !0))
                ;
              }
            };
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(a.display.InteractiveObject);
          k.SimpleButton = u;
          var l = function() {
            return function(a, d) {
              this.symbol = a;
              this.placeObjectTag = d;
            };
          }();
          k.ButtonState = l;
          u = function(c) {
            function g(d, g) {
              c.call(this, d, a.display.SimpleButton, !0);
              this.hitTestState = this.downState = this.overState = this.upState = null;
              this.loaderInfo = g;
            }
            __extends(g, c);
            g.FromData = function(c, t) {
              var m = new g(c, t);
              t.actionScriptVersion === k.ActionScriptVersion.ACTIONSCRIPT2 && (m.isAVM1Object = !0);
              var h = c.states, f = null, b, e;
              for (e in h) {
                var r = h[e];
                if (1 === r.length) {
                  if (b = r[0], f = t.getSymbolById(b.symbolId), !f) {
                    continue;
                  }
                } else {
                  b = {flags:1, depth:1}, f = new a.display.SpriteSymbol({id:-1, className:null}, t), f.frames.push(new d.SWF.SWFFrame(r));
                }
                m[e + "State"] = new l(f, b);
              }
              return m;
            };
            return g;
          }(d.Timeline.DisplaySymbol);
          k.ButtonSymbol = u;
        })(a.display || (a.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(w) {
          var v = d.Debug.notImplemented, u = d.AVM2.Runtime.asCoerceString, l = d.AVM2.Runtime.throwError, c = d.AVM2.Runtime.checkParameterType, g = d.NumberUtilities.clamp, q = d.AVM2.ABC.Multiname, t = a.events, m = function(d) {
            function f() {
              w.InteractiveObject.instanceConstructorNoInitialize.call(this);
              this._setDirtyFlags(2097152);
            }
            __extends(f, d);
            f.prototype._invalidateChildren = function() {
              this._setDirtyFlags(2097152);
              this._invalidateFillAndLineBounds(!0, !0);
            };
            f.prototype._propagateFlagsDown = function(a) {
              if (!this._hasFlags(a)) {
                this._setFlags(a);
                for (var e = this._children, c = 0;c < e.length;c++) {
                  e[c]._propagateFlagsDown(a);
                }
              }
            };
            f.prototype._constructChildren = function() {
              for (var a = this._children, e = 0;e < a.length;e++) {
                var c = a[e];
                if (!c._hasFlags(256)) {
                  c.class.instanceConstructorNoInitialize.call(c);
                  c._removeReference();
                  c._name && (this[q.getPublicQualifiedName(c._name)] = c);
                  c._setFlags(256);
                  if (c._symbol && c._symbol.isAVM1Object) {
                    try {
                      c.dispatchEvent(t.Event.getInstance(t.Event.AVM1_INIT));
                    } catch (f) {
                      console.warn("caught error under DisplayObjectContainer AVM1_INIT event: ", f);
                    }
                    try {
                      c.dispatchEvent(t.Event.getInstance(t.Event.AVM1_CONSTRUCT));
                    } catch (d) {
                      console.warn("caught error under DisplayObjectContainer AVM1_CONSTRUCT event: ", d);
                    }
                    c._setFlags(1024);
                    c._hasAnyFlags(24576) && this._setFlags(16384);
                  }
                  try {
                    c.dispatchEvent(t.Event.getInstance(t.Event.ADDED, !0));
                  } catch (h) {
                    console.warn("caught error under DisplayObject ADDED event: ", h);
                  }
                  if (c.stage) {
                    try {
                      c.dispatchEvent(t.Event.getInstance(t.Event.ADDED_TO_STAGE));
                    } catch (g) {
                      console.warn("caught error under DisplayObject ADDED_TO_STAGE event: ", g);
                    }
                  }
                }
              }
            };
            f.prototype._enqueueFrameScripts = function() {
              if (this._hasFlags(16384)) {
                this._removeFlags(16384);
                for (var a = this._children, e = 0;e < a.length;e++) {
                  var c = a[e];
                  (f.isType(c) || w.AVM1Movie.isType(c)) && c._enqueueFrameScripts();
                }
              }
            };
            Object.defineProperty(f.prototype, "numChildren", {get:function() {
              return this._children.length;
            }, enumerable:!0, configurable:!0});
            f.prototype._getNumChildren = function() {
              return this._children.length;
            };
            Object.defineProperty(f.prototype, "textSnapshot", {get:function() {
              v("public DisplayObjectContainer::get textSnapshot");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "tabChildren", {get:function() {
              return this._tabChildren;
            }, set:function(a) {
              this._setTabChildren(a);
            }, enumerable:!0, configurable:!0});
            f.prototype._getTabChildren = function() {
              return this._tabChildren;
            };
            f.prototype._setTabChildren = function(a) {
              a = !!a;
              var e = this._tabChildren;
              this._tabChildren = a;
              e !== a && this.dispatchEvent(t.Event.getInstance(t.Event.TAB_CHILDREN_CHANGE, !0));
            };
            Object.defineProperty(f.prototype, "mouseChildren", {get:function() {
              return this._mouseChildren;
            }, set:function(a) {
              this._setMouseChildren(a);
            }, enumerable:!0, configurable:!0});
            f.prototype._getMouseChildren = function() {
              return this._mouseChildren;
            };
            f.prototype._setMouseChildren = function(a) {
              this._mouseChildren = !!a;
            };
            f.prototype.addChild = function(b) {
              c(b, "child", a.display.DisplayObject);
              return this.addChildAt(b, this._children.length);
            };
            f.prototype.addChildAt = function(b, e) {
              c(b, "child", a.display.DisplayObject);
              e |= 0;
              b === this && l("ArgumentError", k.Errors.CantAddSelfError);
              f.isType(b) && b.contains(this) && l("ArgumentError", k.Errors.CantAddParentError);
              var d = this._children;
              (0 > e || e > d.length) && l("RangeError", k.Errors.ParamRangeError);
              if (b._parent === this) {
                return this.setChildIndex(b, g(e, 0, d.length - 1)), b;
              }
              b._parent && (f.prototype.removeChildAt.call(b._parent, b._parent.getChildIndex(b)), e = g(e, 0, d.length));
              for (var h = d.length - 1;h >= e;h--) {
                d[h]._index++;
              }
              d.splice(e, 0, b);
              b._setParent(this, -1);
              b._index = e;
              b._invalidatePosition();
              this._invalidateChildren();
              b._addReference();
              b.dispatchEvent(t.Event.getInstance(t.Event.ADDED, !0));
              b.stage && b._propagateEvent(t.Event.getInstance(t.Event.ADDED_TO_STAGE));
              return b;
            };
            f.prototype.addTimelineObjectAtDepth = function(a, e) {
              e |= 0;
              for (var c = this._children, f = c.length - 1, d = f + 1, h = f;0 <= h;h--) {
                var g = c[h];
                if (-1 < g._depth) {
                  if (g._depth < e) {
                    d = h + 1;
                    break;
                  }
                  d = h;
                }
              }
              if (d > f) {
                c.push(a), a._index = d;
              } else {
                for (c.splice(d, 0, a), h = d;h < c.length;h++) {
                  c[h]._index = h;
                }
              }
              a._setParent(this, e);
              a._invalidatePosition();
              this._invalidateChildren();
            };
            f.prototype.removeChild = function(b) {
              c(b, "child", a.display.DisplayObject);
              return this.removeChildAt(this.getChildIndex(b));
            };
            f.prototype.removeChildAt = function(a) {
              a |= 0;
              var e = this._children;
              (0 > a || a >= e.length) && l("RangeError", k.Errors.ParamRangeError);
              var c = e[a];
              c._hasFlags(256) && (c.dispatchEvent(t.Event.getInstance(t.Event.REMOVED, !0)), this.stage && c._propagateEvent(t.Event.getInstance(t.Event.REMOVED_FROM_STAGE)), a = this.getChildIndex(c));
              e.splice(a, 1);
              for (var f = e.length - 1;f >= a;f--) {
                e[f]._index--;
              }
              c._setParent(null, -1);
              c._index = -1;
              c._invalidatePosition();
              this._invalidateChildren();
              return c;
            };
            f.prototype.getChildIndex = function(b) {
              c(b, "child", a.display.DisplayObject);
              b._parent !== this && l("ArgumentError", k.Errors.NotAChildError);
              return b._index;
            };
            f.prototype.setChildIndex = function(b, e) {
              e |= 0;
              c(b, "child", a.display.DisplayObject);
              var f = this._children;
              (0 > e || e >= f.length) && l("RangeError", k.Errors.ParamRangeError);
              b._parent !== this && l("ArgumentError", k.Errors.NotAChildError);
              b._setDepth(-1);
              var d = this.getChildIndex(b);
              if (1 !== f.length && d !== e) {
                if (e === d + 1 || e === d - 1) {
                  this._swapChildrenAt(d, e);
                } else {
                  for (f.splice(d, 1), f.splice(e, 0, b), d = d < e ? d : e;d < f.length;) {
                    f[d]._index = d++;
                  }
                }
                this._invalidateChildren();
              }
            };
            f.prototype.getChildAt = function(a) {
              a |= 0;
              var e = this._children;
              (0 > a || a >= e.length) && l("RangeError", k.Errors.ParamRangeError);
              a = this._lookupChildByIndex(a);
              if (!a) {
                return null;
              }
              a._addReference();
              return a;
            };
            f.prototype.getTimelineObjectAtDepth = function(a) {
              a |= 0;
              for (var e = this._children, c = 0;c < e.length;c++) {
                var f = e[c];
                if (f._depth > a) {
                  break;
                }
                if (f._depth === a) {
                  return f;
                }
              }
              return null;
            };
            f.prototype.getClipDepthIndex = function(a) {
              a |= 0;
              for (var e = this._children, c = this._children.length - 1, f = !0, d = c;0 <= d;d--) {
                var h = e[d];
                if (!(0 > h._depth)) {
                  if (h._depth <= a) {
                    return f ? c : d;
                  }
                  f = !1;
                }
              }
              return 0;
            };
            f.prototype.getChildByName = function(a) {
              a = u(a);
              return (a = this._lookupChildByName(a)) ? (a._addReference(), a) : null;
            };
            f.prototype._lookupChildByIndex = function(a) {
              return (a = this._children[a]) && a._hasFlags(256) ? a : null;
            };
            f.prototype._lookupChildByName = function(a) {
              for (var e = this._children, c = 0;c < e.length;c++) {
                var f = e[c];
                if (f._hasFlags(256) && f.name === a) {
                  return f;
                }
              }
              return null;
            };
            f.prototype._containsPoint = function(a, e, c, f, d, h) {
              return this._containsPointImpl(a, e, c, f, d, h, !1);
            };
            f.prototype._containsPointImpl = function(a, e, c, f, d, h, g) {
              var l;
              if (!g && (l = this._boundsAndMaskContainPoint(a, e, c, f, d), 0 === l || 2 > d)) {
                return l;
              }
              g = !1;
              for (var m = this._getUnclippedChildren(d, a, e), k = m ? m.length : 0;k--;) {
                if (l = m[k], !l._maskedObject && (l = l._containsGlobalPoint(a, e, d, h), 2 === l)) {
                  if (3 > d) {
                    return l;
                  }
                  g = !0;
                  if (!(4 <= d)) {
                    if (!this._mouseEnabled) {
                      return h.length = 0, l;
                    }
                    this._mouseChildren || (h[0] = this);
                    if (0 !== h.length) {
                      return 2;
                    }
                  }
                }
              }
              if (g && 4 > d) {
                return 3 === d && 0 === h.length && (h[0] = this), 2;
              }
              (a = this._containsPointDirectly(c, f, a, e)) && (5 === d ? h[0] = this : (4 === d || h && this._mouseEnabled) && h.push(this));
              return g || a ? 2 : 0;
            };
            f.prototype._getUnclippedChildren = function(a, e, c) {
              var f = this._children;
              if (!f) {
                return null;
              }
              for (var d, h = 0;f && h < f.length;h++) {
                var g = f[h];
                -1 !== g._clipDepth ? (d || (d = f.slice(0, h)), 2 !== a && (g._containsGlobalPoint(e, c, 2, null) || (h = this.getClipDepthIndex(g._clipDepth)))) : d && d.push(g);
              }
              return d || f;
            };
            f.prototype._getChildBounds = function(a, e) {
              for (var c = this._children, f = 0;f < c.length;f++) {
                a.unionInPlace(c[f]._getTransformedBounds(this, e));
              }
            };
            f.prototype.getObjectsUnderPoint = function(a) {
              var e = [];
              this._containsGlobalPoint(20 * a.x | 0, 20 * a.y | 0, 4, e);
              return e.reverse();
            };
            f.prototype.areInaccessibleObjectsUnderPoint = function(a) {
              v("public DisplayObjectContainer::areInaccessibleObjectsUnderPoint");
            };
            f.prototype.contains = function(b) {
              c(b, "child", a.display.DisplayObject);
              return this._isAncestor(b);
            };
            f.prototype.swapChildrenAt = function(a, e) {
              a |= 0;
              e |= 0;
              var c = this._children;
              (0 > a || a >= c.length || 0 > e || e >= c.length) && l("RangeError", k.Errors.ParamRangeError);
              this._swapChildrenAt(a, e);
              a !== e && this._invalidateChildren();
            };
            f.prototype._swapChildrenAt = function(a, e) {
              var c = this._children, f = c[a], d = c[e];
              c[e] = f;
              f._setDepth(-1);
              f._index = e;
              c[a] = d;
              d._setDepth(-1);
              d._index = a;
            };
            f.prototype.swapChildren = function(b, e) {
              c(b, "child", a.display.DisplayObject);
              c(e, "child", a.display.DisplayObject);
              this.swapChildrenAt(this.getChildIndex(b), this.getChildIndex(e));
            };
            f.prototype.removeChildren = function(a, e) {
              void 0 === a && (a = 0);
              void 0 === e && (e = 2147483647);
              a |= 0;
              e |= 0;
              (0 > a || 0 > e || e < a || e >= this._children.length) && l("RangeError", k.Errors.ParamRangeError);
              var c = e - a + 1;
              if (0 < c) {
                for (;c--;) {
                  this.removeChildAt(a);
                }
              }
            };
            f.bindings = null;
            f.classSymbols = null;
            f.classInitializer = null;
            f.initializer = function() {
              this._mouseChildren = this._tabChildren = !0;
              this._children = [];
            };
            return f;
          }(a.display.InteractiveObject);
          w.DisplayObjectContainer = m;
        })(a.display || (a.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.display.JointStyle");
            }
            __extends(c, a);
            c.fromNumber = function(a) {
              switch(a) {
                case 0:
                  return c.ROUND;
                case 1:
                  return c.BEVEL;
                case 2:
                  return c.MITER;
                default:
                  return null;
              }
            };
            c.toNumber = function(a) {
              switch(a) {
                case c.ROUND:
                  return 0;
                case c.BEVEL:
                  return 1;
                case c.MITER:
                  return 2;
                default:
                  return -1;
              }
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.ROUND = "round";
            c.BEVEL = "bevel";
            c.MITER = "miter";
            return c;
          }(a.ASNative);
          k.JointStyle = u;
        })(k.display || (k.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.display.CapsStyle");
            }
            __extends(c, a);
            c.fromNumber = function(a) {
              switch(a) {
                case 0:
                  return c.ROUND;
                case 1:
                  return c.NONE;
                case 2:
                  return c.SQUARE;
                default:
                  return null;
              }
            };
            c.toNumber = function(a) {
              switch(a) {
                case c.ROUND:
                  return 0;
                case c.NONE:
                  return 1;
                case c.SQUARE:
                  return 2;
                default:
                  return -1;
              }
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.ROUND = "round";
            c.NONE = "none";
            c.SQUARE = "square";
            return c;
          }(a.ASNative);
          k.CapsStyle = u;
        })(k.display || (k.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.display.LineScaleMode");
            }
            __extends(c, a);
            c.fromNumber = function(a) {
              switch(a) {
                case 0:
                  return c.NONE;
                case 1:
                  return c.NORMAL;
                case 2:
                  return c.VERTICAL;
                case 3:
                  return c.HORIZONTAL;
                default:
                  return null;
              }
            };
            c.toNumber = function(a) {
              switch(a) {
                case c.NONE:
                  return 0;
                case c.NORMAL:
                  return 1;
                case c.VERTICAL:
                  return 2;
                case c.HORIZONTAL:
                  return 3;
                default:
                  return -1;
              }
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.NORMAL = "normal";
            c.VERTICAL = "vertical";
            c.HORIZONTAL = "horizontal";
            c.NONE = "none";
            return c;
          }(a.ASNative);
          k.LineScaleMode = u;
        })(k.display || (k.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.display.GradientType");
            }
            __extends(c, a);
            c.fromNumber = function(a) {
              switch(a) {
                case 16:
                  return c.LINEAR;
                case 18:
                  return c.RADIAL;
                default:
                  return null;
              }
            };
            c.toNumber = function(a) {
              switch(a) {
                case c.LINEAR:
                  return 16;
                case c.RADIAL:
                  return 18;
                default:
                  return -1;
              }
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.LINEAR = "linear";
            c.RADIAL = "radial";
            return c;
          }(a.ASNative);
          k.GradientType = u;
        })(k.display || (k.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.display.SpreadMethod");
            }
            __extends(c, a);
            c.fromNumber = function(a) {
              switch(a) {
                case 0:
                  return c.PAD;
                case 1:
                  return c.REFLECT;
                case 2:
                  return c.REPEAT;
                default:
                  return null;
              }
            };
            c.toNumber = function(a) {
              switch(a) {
                case c.PAD:
                  return 0;
                case c.REFLECT:
                  return 1;
                case c.REPEAT:
                  return 2;
                default:
                  return -1;
              }
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.PAD = "pad";
            c.REFLECT = "reflect";
            c.REPEAT = "repeat";
            return c;
          }(a.ASNative);
          k.SpreadMethod = u;
        })(k.display || (k.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.display.InterpolationMethod");
            }
            __extends(c, a);
            c.fromNumber = function(a) {
              switch(a) {
                case 0:
                  return c.RGB;
                case 1:
                  return c.LINEAR_RGB;
                default:
                  return null;
              }
            };
            c.toNumber = function(a) {
              switch(a) {
                case c.RGB:
                  return 0;
                case c.LINEAR_RGB:
                  return 1;
                default:
                  return -1;
              }
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.RGB = "rgb";
            c.LINEAR_RGB = "linearRGB";
            return c;
          }(a.ASNative);
          k.InterpolationMethod = u;
        })(k.display || (k.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(d) {
        (function(d) {
          var k = function(a) {
            function d(a, g, l, k) {
              void 0 === a && (a = null);
              void 0 === g && (g = null);
              void 0 === l && (l = !0);
              void 0 === k && (k = !1);
              this.bitmapData = a;
              this.matrix = g;
              this.repeat = !!l;
              this.smooth = !!k;
            }
            __extends(d, a);
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(a.ASNative);
          d.GraphicsBitmapFill = k;
        })(d.display || (d.display = {}));
      })(a.flash || (a.flash = {}));
    })(d.AS || (d.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.display.GraphicsEndFill");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.ASNative);
          k.GraphicsEndFill = u;
        })(k.display || (k.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.AVM2.Runtime.asCoerceString, u = function(a) {
            function c(a, c, d, l, h, f, b, e) {
              void 0 === a && (a = "linear");
              void 0 === c && (c = null);
              void 0 === d && (d = null);
              void 0 === l && (l = null);
              void 0 === h && (h = null);
              void 0 === f && (f = "pad");
              void 0 === b && (b = "rgb");
              void 0 === e && (e = 0);
              this.type = n(a);
              this.colors = c;
              this.alphas = d;
              this.ratios = l;
              this.matrix = h;
              this.spreadMethod = f;
              this.interpolationMethod = n(b);
              this.focalPointRatio = +e;
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.ASNative);
          k.GraphicsGradientFill = u;
        })(k.display || (k.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.AVM2.Runtime.asCoerceString, u = function(a) {
            function c(a, c, d) {
              void 0 === a && (a = null);
              void 0 === c && (c = null);
              void 0 === d && (d = "evenOdd");
              this.commands = a;
              this.data = c;
              this.winding = n(d);
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.ASNative);
          k.GraphicsPath = u;
        })(k.display || (k.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.display.GraphicsPathCommand");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.NO_OP = void 0;
            c.MOVE_TO = 1;
            c.LINE_TO = 2;
            c.CURVE_TO = 3;
            c.WIDE_MOVE_TO = 4;
            c.WIDE_LINE_TO = 5;
            c.CUBIC_CURVE_TO = 6;
            return c;
          }(a.ASNative);
          k.GraphicsPathCommand = u;
        })(k.display || (k.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.display.GraphicsPathWinding");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.EVEN_ODD = "evenOdd";
            c.NON_ZERO = "nonZero";
            return c;
          }(a.ASNative);
          k.GraphicsPathWinding = u;
        })(k.display || (k.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(d) {
        (function(d) {
          var k = function(a) {
            function d(a, g) {
              void 0 === a && (a = 0);
              void 0 === g && (g = 1);
              this.color = a >>> 0;
              this.alpha = +g;
            }
            __extends(d, a);
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(a.ASNative);
          d.GraphicsSolidFill = k;
        })(d.display || (d.display = {}));
      })(a.flash || (a.flash = {}));
    })(d.AS || (d.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.AVM2.Runtime.asCoerceString, u = function(a) {
            function c(a, c, d, l, h, f, b) {
              void 0 === a && (a = NaN);
              void 0 === c && (c = !1);
              void 0 === d && (d = "normal");
              void 0 === l && (l = "none");
              void 0 === h && (h = "round");
              void 0 === f && (f = 3);
              void 0 === b && (b = null);
              this.thickness = +a;
              this.pixelHinting = !!c;
              this.scaleMode = n(d);
              this.caps = n(l);
              this.joints = n(h);
              this.miterLimit = +f;
              this.fill = b;
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.ASNative);
          k.GraphicsStroke = u;
        })(k.display || (k.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = d.AVM2.Runtime.asCoerceString, l = function(a) {
            function d(a, c, g, h) {
              void 0 === h && (h = "none");
              u(h);
              n("public flash.display.GraphicsTrianglePath");
            }
            __extends(d, a);
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(a.ASNative);
          k.GraphicsTrianglePath = l;
        })(k.display || (k.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(n) {
        (function(w) {
          function v(a, b, e, c) {
            a = e - a;
            b = c - b;
            return a * a + b * b;
          }
          function u(a, b, e, c) {
            var f = 1 - c;
            return a * f * f + 2 * b * f * c + e * c * c;
          }
          function l(a, b, e) {
            var c = (a - b) / (a - 2 * b + e);
            return 0 > c ? a : 1 < c ? e : u(a, b, e, c);
          }
          function c(a, b, e, c, f) {
            var d = f * f, h = 1 - f, g = h * h;
            return a * h * g + 3 * b * f * g + 3 * e * h * d + c * f * d;
          }
          function g(a, b, e, f) {
            var d = b - a, h;
            h = 2 * (e - b);
            var g = f - e;
            d + g === h && (g *= 1.0001);
            var l = 2 * d - h, m = h - 2 * d, m = Math.sqrt(m * m - 4 * d * (d - h + g));
            h = 2 * (d - h + g);
            d = (l + m) / h;
            l = (l - m) / h;
            m = [];
            0 <= d && 1 >= d && m.push(Math.round(c(a, b, e, f, d)));
            0 <= l && 1 >= l && m.push(Math.round(c(a, b, e, f, l)));
            return m;
          }
          function q(a, b, e, c, f, d, h, g, l) {
            function m(a) {
              return a * (n + a * (v + a * C)) + b - l;
            }
            function p(b) {
              0 > b ? b = 0 : 1 < b && (b = 1);
              return a + b * (k + b * (q + b * u));
            }
            function r(a, b, e, c) {
              if (!(Math.abs(e - b) <= c)) {
                var f = .5 * (b + e);
                0 >= a(b) * a(e) ? (w = b, I = e) : (r(a, b, f, c), r(a, f, e, c));
              }
            }
            var k = 3 * (e - a), n = 3 * (c - b), q = 3 * (f - e) - k, v = 3 * (d - c) - n, u = h - a - k - q, C = g - b - n - v, w = 0, I = 1;
            r(m, 0, 1, .05);
            d = t(w, I, m);
            if (1E-5 < Math.abs(m(d))) {
              return [];
            }
            e = [];
            1 >= d && e.push(p(d));
            c = C;
            f = d * c + v;
            h = f * f - 4 * c * (d * f + n);
            if (0 > h) {
              return e;
            }
            h = Math.sqrt(h);
            c = 1 / (c + c);
            d = (h - f) * c;
            c *= -f - h;
            0 <= d && 1 >= d && e.push(p(d));
            0 <= c && 1 >= c && e.push(p(c));
            return e;
          }
          function t(a, b, e) {
            var c, f, d, h, g, l, m = a;
            f = e(a);
            if (0 === f) {
              return a;
            }
            h = e(b);
            if (0 === h) {
              return b;
            }
            if (0 < h * f) {
              return a;
            }
            for (var p = 0, r = 0;50 > r;++r) {
              p++;
              c = .5 * (b + a);
              d = e(c);
              if (0 === d) {
                break;
              }
              if (1E-6 > Math.abs(c - a)) {
                break;
              }
              0 < d * f && (a = b, b = f, f = h, h = b);
              b = d - f;
              l = h - d;
              g = h - f;
              if (h * g < 2 * d * b) {
                b = c, h = d;
              } else {
                h = (c - a) / b;
                b = (b - l) / (l * g);
                b = a - h * f * (1 - b * d);
                h = e(b);
                if (0 === h || 1E-6 > Math.abs(b - m)) {
                  return b;
                }
                m = b;
                0 > h * f || (a = b, f = h, b = c, h = d);
              }
            }
            return c;
          }
          function m(a, b, e, c, f, d) {
            return d > b !== c > b && a < (e - f) * (b - d) / (c - d) + f;
          }
          var h = d.Debug.notImplemented, f = d.AVM2.Runtime.asCoerceString, b = d.AVM2.Runtime.throwError, e = d.NumberUtilities.clamp, r = d.Bounds, p = n.display.GradientType, C = n.display.SpreadMethod, I = n.display.InterpolationMethod, B = n.display.LineScaleMode, D = n.display.CapsStyle, M = n.display.JointStyle, E = d.ShapeData, J = function(a) {
            function t() {
              this._id = n.display.DisplayObject.getNextSyncID();
              this._graphicsData = new E;
              this._textures = [];
              this._fillBounds = new r(134217728, 134217728, 134217728, 134217728);
              this._lineBounds = new r(134217728, 134217728, 134217728, 134217728);
              this._lastX = this._lastY = 0;
              this._boundsIncludeLastCoordinates = !0;
              this._parent = null;
              this._topLeftStrokeWidth = this._bottomRightStrokeWidth = 0;
              this._isDirty = !0;
            }
            __extends(t, a);
            t.FromData = function(a) {
              var b = new n.display.Graphics;
              b._graphicsData = E.FromPlainObject(a.shape);
              a.lineBounds && (b._lineBounds.copyFrom(a.lineBounds), b._fillBounds.copyFrom(a.fillBounds || a.lineBounds));
              return b;
            };
            t.prototype.getGraphicsData = function() {
              return this._graphicsData;
            };
            t.prototype.getUsedTextures = function() {
              return this._textures;
            };
            t.prototype._setStrokeWidth = function(a) {
              switch(a) {
                case 1:
                  this._topLeftStrokeWidth = 0;
                  this._bottomRightStrokeWidth = 1;
                  break;
                case 3:
                  this._topLeftStrokeWidth = 1;
                  this._bottomRightStrokeWidth = 2;
                  break;
                default:
                  this._bottomRightStrokeWidth = this._topLeftStrokeWidth = a = Math.ceil(.5 * a) | 0;
              }
            };
            t.prototype._setParent = function(a) {
              this._parent = a;
            };
            t.prototype._invalidate = function() {
              this._parent._invalidateFillAndLineBounds(!0, !0);
              this._parent._propagateFlagsUp(536870912);
              this._isDirty = !0;
            };
            t.prototype._getContentBounds = function(a) {
              void 0 === a && (a = !0);
              return a ? this._lineBounds : this._fillBounds;
            };
            t.prototype.clear = function() {
              this._graphicsData.isEmpty() || (this._graphicsData.clear(), this._textures.length = 0, this._fillBounds.setToSentinels(), this._lineBounds.setToSentinels(), this._lastX = this._lastY = 0, this._boundsIncludeLastCoordinates = !1, this._invalidate());
            };
            t.prototype.beginFill = function(a, b) {
              void 0 === b && (b = 1);
              a = a >>> 0 & 16777215;
              b = Math.round(255 * e(+b, -1, 1)) | 0;
              this._graphicsData.beginFill(a << 8 | b);
            };
            t.prototype.beginGradientFill = function(a, b, e, c, f, d, h, g) {
              void 0 === f && (f = null);
              void 0 === d && (d = "pad");
              void 0 === h && (h = "rgb");
              void 0 === g && (g = 0);
              this._writeGradientStyle(2, a, b, e, c, f, d, h, g, !1);
            };
            t.prototype.beginBitmapFill = function(a, b, e, c) {
              void 0 === b && (b = null);
              void 0 === e && (e = !0);
              void 0 === c && (c = !1);
              this._writeBitmapStyle(3, a, b, e, c, !1);
            };
            t.prototype.endFill = function() {
              this._graphicsData.endFill();
            };
            t.prototype.lineStyle = function(a, b, c, d, h, g, l, m) {
              void 0 === b && (b = 0);
              void 0 === c && (c = 1);
              void 0 === d && (d = !1);
              void 0 === h && (h = "normal");
              void 0 === g && (g = null);
              void 0 === l && (l = null);
              void 0 === m && (m = 3);
              a = +a;
              b = b >>> 0 & 16777215;
              c = Math.round(255 * e(+c, -1, 1));
              d = !!d;
              h = f(h);
              g = f(g);
              l = f(l);
              m = e(+m | 0, 0, 255);
              isNaN(a) ? (this._setStrokeWidth(0), this._graphicsData.endLine()) : (a = 20 * e(+a, 0, 255) | 0, this._setStrokeWidth(a), h = B.toNumber(f(h)), 0 > h && (h = B.toNumber(B.NORMAL)), g = D.toNumber(f(g)), 0 > g && (g = D.toNumber(D.ROUND)), l = M.toNumber(f(l)), 0 > l && (l = M.toNumber(M.ROUND)), this._graphicsData.lineStyle(a, b << 8 | c, d, h, g, l, m));
            };
            t.prototype.lineGradientStyle = function(a, b, e, c, f, d, h, g) {
              void 0 === f && (f = null);
              void 0 === d && (d = "pad");
              void 0 === h && (h = "rgb");
              void 0 === g && (g = 0);
              this._writeGradientStyle(6, a, b, e, c, f, d, h, g, !this._graphicsData.hasLines);
            };
            t.prototype.lineBitmapStyle = function(a, b, e, c) {
              void 0 === b && (b = null);
              void 0 === e && (e = !0);
              void 0 === c && (c = !1);
              this._writeBitmapStyle(7, a, b, e, c, !this._graphicsData.hasLines);
            };
            t.prototype.drawRect = function(a, b, e, c) {
              a = 20 * a | 0;
              b = 20 * b | 0;
              e = a + (20 * e | 0);
              c = b + (20 * c | 0);
              a === this._lastX && b === this._lastY || this._graphicsData.moveTo(a, b);
              this._graphicsData.lineTo(e, b);
              this._graphicsData.lineTo(e, c);
              this._graphicsData.lineTo(a, c);
              this._graphicsData.lineTo(a, b);
              this._extendBoundsByPoint(e, c);
              this._applyLastCoordinates(a, b);
              this._invalidate();
            };
            t.prototype.drawRoundRect = function(a, b, e, c, f, d) {
              a = +a;
              b = +b;
              e = +e;
              c = +c;
              f = +f;
              if ((d = +d) && f) {
                f = f / 2 | 0;
                d = d / 2 | 0;
                var h = e / 2, g = c / 2;
                f > h && (f = h);
                d > g && (d = g);
                h === f && g === d ? f === d ? this.drawCircle(a + f, b + d, f) : this.drawEllipse(a, b, 2 * f, 2 * d) : (e = a + e, c = b + c, h = a + f, f = e - f, g = b + d, d = c - d, this.moveTo(e, d), this.curveTo(e, c, f, c), this.lineTo(h, c), this.curveTo(a, c, a, d), this.lineTo(a, g), this.curveTo(a, b, h, b), this.lineTo(f, b), this.curveTo(e, b, e, g), this.lineTo(e, d));
              } else {
                this.drawRect(a, b, e, c);
              }
            };
            t.prototype.drawRoundRectComplex = function(a, b, e, c, f, d, h, g) {
              a = +a;
              b = +b;
              e = +e;
              c = +c;
              f = +f;
              d = +d;
              h = +h;
              g = +g;
              if (f | d | h | g) {
                e = a + e;
                c = b + c;
                var l = a + f;
                this.moveTo(e, c - g);
                this.curveTo(e, c, e - g, c);
                this.lineTo(a + h, c);
                this.curveTo(a, c, a, c - h);
                this.lineTo(a, b + f);
                this.curveTo(a, b, l, b);
                this.lineTo(e - d, b);
                this.curveTo(e, b, e, b + d);
                this.lineTo(e, c - g);
              } else {
                this.drawRect(a, b, e, c);
              }
            };
            t.prototype.drawCircle = function(a, b, e) {
              e = +e;
              this.drawEllipse(+a - e, +b - e, 2 * e, 2 * e);
            };
            t.prototype.drawEllipse = function(a, b, e, c) {
              e = +e / 2;
              c = +c / 2;
              a = +a + e;
              b = +b + c;
              var f = a + e, d = b;
              this.moveTo(f, d);
              for (var h = 0, g = 1, l = 0, m = 0;4 > m;m++) {
                var p = h + Math.PI / 2, h = 4 / 3 * Math.tan((p - h) / 4), r = f - l * h * e, k = d + g * h * c, g = Math.cos(p), l = Math.sin(p), f = a + g * e, d = b + l * c;
                this.cubicCurveTo(r, k, f + l * h * e, d - g * h * c, f, d);
                h = p;
              }
            };
            t.prototype.moveTo = function(a, b) {
              a = 20 * a | 0;
              b = 20 * b | 0;
              this._graphicsData.moveTo(a, b);
              this._lastX = a;
              this._lastY = b;
              this._boundsIncludeLastCoordinates = !1;
            };
            t.prototype.lineTo = function(a, b) {
              a = 20 * a | 0;
              b = 20 * b | 0;
              this._graphicsData.lineTo(a, b);
              this._applyLastCoordinates(a, b);
              this._invalidate();
            };
            t.prototype.curveTo = function(a, b, e, c) {
              a = 20 * a | 0;
              b = 20 * b | 0;
              e = 20 * e | 0;
              c = 20 * c | 0;
              this._graphicsData.curveTo(a, b, e, c);
              (a < this._lastX || a > e) && this._extendBoundsByX(l(this._lastX, a, e) | 0);
              (b < this._lastY || b > c) && this._extendBoundsByY(l(this._lastY, b, c) | 0);
              this._applyLastCoordinates(e, c);
              this._invalidate();
            };
            t.prototype.cubicCurveTo = function(a, b, e, c, f, d) {
              a = 20 * a | 0;
              b = 20 * b | 0;
              e = 20 * e | 0;
              c = 20 * c | 0;
              f = 20 * f | 0;
              d = 20 * d | 0;
              this._graphicsData.cubicCurveTo(a, b, e, c, f, d);
              var h = this._lastX, l = this._lastY;
              if (a < h || e < h || a > f || e > f) {
                for (a = g(h, a, e, f), e = a.length;e--;) {
                  this._extendBoundsByX(a[e] | 0);
                }
              }
              if (b < l || c < l || b > d || c > d) {
                for (a = g(l, b, c, d), e = a.length;e--;) {
                  this._extendBoundsByY(a[e] | 0);
                }
              }
              this._applyLastCoordinates(f, d);
              this._invalidate();
            };
            t.prototype.copyFrom = function(a) {
              this._graphicsData = a._graphicsData.clone();
              this._fillBounds = a._fillBounds.clone();
              this._lineBounds = a._lineBounds.clone();
              this._textures = a._textures.concat();
              this._lastX = a._lastX;
              this._lastY = a._lastY;
              this._boundsIncludeLastCoordinates = a._boundsIncludeLastCoordinates;
              this._invalidate();
            };
            t.prototype.drawPath = function(a, b, e) {
              void 0 === e && (e = "evenOdd");
              f(e);
              h("public flash.display.Graphics::drawPath");
            };
            t.prototype.drawTriangles = function(a, b, e, c) {
              void 0 === c && (c = "none");
              f(c);
              h("public flash.display.Graphics::drawTriangles");
            };
            t.prototype.drawGraphicsData = function(a) {
              h("public flash.display.Graphics::drawGraphicsData");
            };
            t.prototype._containsPoint = function(a, b, e, c) {
              var f = this._graphicsData.hasLines;
              if (!c && !(e && f ? this._lineBounds : this._fillBounds).contains(a, b)) {
                return !1;
              }
              f = !1;
              this._graphicsData.hasFills && (f = this._fillContainsPoint(a, b, c));
              !f && e && (f = this._linesContainsPoint(a, b, c));
              return f;
            };
            t.prototype._fillContainsPoint = function(a, b, e) {
              for (var c = this._graphicsData, f = c.commands, d = c.commandsPosition, h = c.coordinates, c = c.morphCoordinates, g = 0, l = 0, p = 0, r = 0, k = 0, n, t, v = !1, C = !1, w = 0, I = 0, B = !1, D = 0;D < d;D++) {
                n = f[D];
                switch(n) {
                  case 9:
                    v && C && m(a, b, l, p, w, I) && (B = !B);
                    v = !0;
                    l = w = h[g++];
                    p = I = h[g++];
                    e && (l = w += (c[g - 2] - w) * e, p = I += (c[g - 2] - I) * e);
                    continue;
                  case 10:
                    r = h[g++];
                    k = h[g++];
                    e && (r += (c[g - 2] - r) * e, k += (c[g - 1] - k) * e);
                    C && m(a, b, l, p, r, k) && (B = !B);
                    break;
                  case 11:
                    n = h[g++];
                    t = h[g++];
                    r = h[g++];
                    k = h[g++];
                    e && (n += (c[g - 4] - n) * e, t += (c[g - 3] - t) * e, r += (c[g - 2] - r) * e, k += (c[g - 1] - k) * e);
                    var M;
                    if (M = C) {
                      if (t > b === p > b && k > b === p > b) {
                        M = !1;
                      } else {
                        if (l >= a && n >= a && r >= a) {
                          M = !0;
                        } else {
                          M = p - 2 * t + k;
                          t = 2 * (t - p);
                          var E = t * t - 4 * M * (p - b);
                          0 > E ? M = !1 : (E = Math.sqrt(E), M = 1 / (M + M), p = (E - t) * M, t = (-t - E) * M, M = !1, 0 <= p && 1 >= p && u(l, n, r, p) > a && (M = !M), 0 <= t && 1 >= t && u(l, n, r, t) > a && (M = !M));
                        }
                      }
                    }
                    M && (B = !B);
                    break;
                  case 12:
                    n = h[g++];
                    t = h[g++];
                    var E = h[g++], J = h[g++], r = h[g++], k = h[g++];
                    e && (n += (c[g - 6] - n) * e, t += (c[g - 5] - t) * e, E += (c[g - 4] - E) * e, J += (c[g - 3] - J) * e, r += (c[g - 2] - r) * e, k += (c[g - 1] - k) * e);
                    if (M = C) {
                      M = a;
                      var y = p > b;
                      if (t > b === y && J > b === y && k > b === y) {
                        M = !1;
                      } else {
                        if (l < M && n < M && E < M && r < M) {
                          M = !1;
                        } else {
                          y = !1;
                          l = q(l, p, n, t, E, J, r, k, b);
                          for (n = l.length;n;n--) {
                            l[n] >= M && (y = !y);
                          }
                          M = y;
                        }
                      }
                    }
                    M && (B = !B);
                    break;
                  case 1:
                  ;
                  case 2:
                  ;
                  case 3:
                  ;
                  case 4:
                    v && C && m(a, b, l, p, w, I) && (B = !B);
                    if (B) {
                      return !0;
                    }
                    v = !1;
                    C = 4 !== n;
                    break;
                  case 5:
                    g++;
                }
                l = r;
                p = k;
              }
              v && C && m(a, b, l, p, w, I) && (B = !B);
              return B;
            };
            t.prototype._linesContainsPoint = function(a, b, e) {
              for (var f = this._graphicsData, d = f.commands, h = f.commandsPosition, m = f.coordinates, f = f.morphCoordinates, p = 0, r = 0, k = 0, n = 0, q = 0, t, C, w, I, B, D = 0, M = t = 0, E = 0, J = 0, y = 0, P = 0, ja = 0;ja < h;ja++) {
                switch(d[ja]) {
                  case 9:
                    r = m[p++];
                    k = m[p++];
                    e && (r += (f[p - 2] - r) * e, k += (f[p - 1] - k) * e);
                    continue;
                  case 10:
                    if (0 === D) {
                      r = m[p++];
                      k = m[p++];
                      e && (r += (f[p - 2] - r) * e, k += (f[p - 1] - k) * e);
                      continue;
                    }
                    n = m[p++];
                    q = m[p++];
                    e && (n += (f[p - 2] - n) * e, q += (f[p - 1] - q) * e);
                    if (r === n && k === q) {
                      break;
                    }
                    if (J < r && J < n || E > r && E > n || P < k && P < q || y > k && y > q) {
                      break;
                    }
                    if (n === r || q === k) {
                      return !0;
                    }
                    B = ((a - r) * (n - r) + (b - k) * (q - k)) / v(r, k, n, q);
                    if (0 > B) {
                      if (v(a, b, r, k) <= M) {
                        return !0;
                      }
                      break;
                    }
                    if (1 < B) {
                      if (v(a, b, n, q) <= M) {
                        return !0;
                      }
                      break;
                    }
                    if (v(a, b, r + B * (n - r), k + B * (q - k)) <= M) {
                      return !0;
                    }
                    break;
                  case 11:
                    if (0 === D) {
                      p += 2;
                      r = m[p++];
                      k = m[p++];
                      e && (r += (f[p - 2] - r) * e, k += (f[p - 1] - k) * e);
                      continue;
                    }
                    t = m[p++];
                    C = m[p++];
                    n = m[p++];
                    q = m[p++];
                    e && (t += (f[p - 4] - t) * e, C += (f[p - 3] - C) * e, n += (f[p - 2] - n) * e, q += (f[p - 1] - q) * e);
                    var ga = l(r, t, n);
                    if (J < r && J < ga && J < n || E > r && E > ga && E > n) {
                      break;
                    }
                    ga = l(k, C, q);
                    if (P < k && P < ga && P < q || y > k && y > ga && y > q) {
                      break;
                    }
                    for (B = 0;1 > B;B += .02) {
                      if (w = u(r, t, n, B), !(w < E || w > J) && (I = u(k, C, q, B), !(I < y || I > P) && (a - w) * (a - w) + (b - I) * (b - I) < M)) {
                        return !0;
                      }
                    }
                    break;
                  case 12:
                    if (0 === D) {
                      p += 4;
                      p++;
                      r = m[p++];
                      e && (r += (f[p - 2] - r) * e, k += (f[p - 1] - k) * e);
                      continue;
                    }
                    t = m[p++];
                    C = m[p++];
                    var ga = m[p++], ca = m[p++], n = m[p++], q = m[p++];
                    e && (t += (f[p - 6] - t) * e, C += (f[p - 5] - C) * e, ga += (f[p - 4] - ga) * e, ca += (f[p - 3] - ca) * e, n += (f[p - 2] - n) * e, q += (f[p - 1] - q) * e);
                    for (w = g(r, t, ga, n);2 > w.length;) {
                      w.push(n);
                    }
                    if (J < r && J < n && J < w[0] && J < w[1] || E > r && E > n && E > w[0] && E > w[1]) {
                      break;
                    }
                    for (w = g(k, C, ca, q);2 > w.length;) {
                      w.push(q);
                    }
                    if (P < k && P < q && P < w[0] && P < w[1] || y > k && y > q && y > w[0] && y > w[1]) {
                      break;
                    }
                    for (B = 0;1 > B;B += .02) {
                      if (w = c(r, t, ga, n, B), !(w < E || w > J) && (I = c(k, C, ca, q, B), !(I < y || I > P) && (a - w) * (a - w) + (b - I) * (b - I) < M)) {
                        return !0;
                      }
                    }
                    break;
                  case 5:
                    D = m[p++], e && (D += (f[p - 1] - D) * e), t = D >> 2, M = t * t, E = a - t, J = a + t, y = b - t, P = b + t;
                }
                r = n;
                k = q;
              }
              return !1;
            };
            t.prototype._writeBitmapStyle = function(a, e, c, f, h, g) {
              d.isNullOrUndefined(e) ? b("TypeError", k.Errors.NullPointerError, "bitmap") : n.display.BitmapData.isType(e) || b("TypeError", k.Errors.CheckTypeFailedError, "bitmap", "flash.display.BitmapData");
              d.isNullOrUndefined(c) ? c = n.geom.Matrix.FROZEN_IDENTITY_MATRIX : n.geom.Matrix.isType(c) || b("TypeError", k.Errors.CheckTypeFailedError, "matrix", "flash.geom.Matrix");
              f = !!f;
              h = !!h;
              g || (g = this._textures.length, this._textures.push(e), this._graphicsData.beginBitmap(a, g, c, f, h));
            };
            t.prototype._writeGradientStyle = function(a, c, h, g, l, m, r, q, t, v) {
              d.isNullOrUndefined(c) && b("TypeError", k.Errors.NullPointerError, "type");
              c = p.toNumber(f(c));
              0 > c && b("ArgumentError", k.Errors.InvalidEnumError, "type");
              d.isNullOrUndefined(h) && b("TypeError", k.Errors.NullPointerError, "colors");
              h instanceof Array || b("TypeError", k.Errors.CheckTypeFailedError, "colors", "Array");
              g instanceof Array || b("TypeError", k.Errors.CheckTypeFailedError, "alphas", "Array");
              d.isNullOrUndefined(g) && b("TypeError", k.Errors.NullPointerError, "alphas");
              l instanceof Array || b("TypeError", k.Errors.CheckTypeFailedError, "ratios", "Array");
              d.isNullOrUndefined(l) && b("TypeError", k.Errors.NullPointerError, "ratios");
              var u = [], w = [], B = h.length, D = B === g.length && B === l.length;
              if (D) {
                for (var M = 0;M < B;M++) {
                  var E = +l[M];
                  if (255 < E || 0 > E) {
                    D = !1;
                    break;
                  }
                  u[M] = h[M] << 8 & 4294967040 | 255 * e(+g[M], 0, 1);
                  w[M] = E;
                }
              }
              D && (d.isNullOrUndefined(m) ? m = n.geom.Matrix.FROZEN_IDENTITY_MATRIX : n.geom.Matrix.isType(m) || b("TypeError", k.Errors.CheckTypeFailedError, "matrix", "flash.geom.Matrix"), v || (h = C.toNumber(f(r)), 0 > h && (h = C.toNumber(C.PAD)), q = I.toNumber(f(q)), 0 > q && (q = I.toNumber(I.RGB)), t = e(+t, -1, 1) / 2 * 255 | 0, this._graphicsData.beginGradient(a, u, w, c, m, h, q, t)));
            };
            t.prototype._extendBoundsByPoint = function(a, b) {
              this._extendBoundsByX(a);
              this._extendBoundsByY(b);
            };
            t.prototype._extendBoundsByX = function(a) {
              this._fillBounds.extendByX(a);
              var b = this._lineBounds;
              134217728 === b.xMin ? (b.xMin = a - this._topLeftStrokeWidth, b.xMax = a + this._bottomRightStrokeWidth) : (b.xMin = Math.min(a - this._topLeftStrokeWidth, b.xMin), b.xMax = Math.max(a + this._bottomRightStrokeWidth, b.xMax));
            };
            t.prototype._extendBoundsByY = function(a) {
              this._fillBounds.extendByY(a);
              var b = this._lineBounds;
              134217728 === b.yMin ? (b.yMin = a - this._topLeftStrokeWidth, b.yMax = a + this._bottomRightStrokeWidth) : (b.yMin = Math.min(a - this._topLeftStrokeWidth, b.yMin), b.yMax = Math.max(a + this._bottomRightStrokeWidth, b.yMax));
            };
            t.prototype._applyLastCoordinates = function(a, b) {
              this._boundsIncludeLastCoordinates || this._extendBoundsByPoint(this._lastX, this._lastY);
              this._boundsIncludeLastCoordinates = !0;
              this._lastX = a;
              this._lastY = b;
              this._extendBoundsByPoint(a, b);
            };
            t.classInitializer = null;
            t.initializer = null;
            t.classSymbols = null;
            t.instanceSymbols = null;
            return t;
          }(a.ASNative);
          w.Graphics = J;
        })(n.display || (n.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.Debug.notImplemented, u = d.Timeline, l = d.NumberUtilities.clamp, c;
          (function(a) {
            a[a.Inactive = 0] = "Inactive";
            a[a.LockToPointer = 1] = "LockToPointer";
            a[a.PreserveDistance = 2] = "PreserveDistance";
          })(c || (c = {}));
          c = function(c) {
            function q() {
              k.DisplayObjectContainer.instanceConstructorNoInitialize.call(this);
              this._constructChildren();
            }
            __extends(q, c);
            q.prototype._addFrame = function(a) {
              var c = this._symbol.frames;
              c.push(a);
              1 === c.length && this._initializeChildren(a);
            };
            q.prototype._initializeChildren = function(a) {
              a.controlTags && this._processControlTags(a.controlTags, !1);
            };
            q.prototype._processControlTags = function(a, c) {
              if (c) {
                for (var h = this._children.slice(), f = 0;f < h.length;f++) {
                  var b = h[f];
                  if (!(0 > b._depth)) {
                    for (var e = null, g = 0;g < a.length;g++) {
                      if (a[g].depth === b._depth) {
                        e = a[g];
                        break;
                      }
                    }
                    e && b._symbol.id === e.symbolId && b._ratio === (e.ratio | 0) || this._removeAnimatedChild(b);
                  }
                }
              }
              h = this._symbol.loaderInfo;
              for (f = 0;f < a.length;f++) {
                switch(b = a[f], e = void 0 === b.tagCode ? b : h._file.getParsedTag(b), e.code) {
                  case 5:
                  ;
                  case 28:
                    (b = this.getTimelineObjectAtDepth(e.depth | 0)) && this._removeAnimatedChild(b);
                    break;
                  case 4:
                  ;
                  case 26:
                  ;
                  case 70:
                    var g = e, l = g.depth, b = this.getTimelineObjectAtDepth(l), k = -1 < g.symbolId;
                    if (g.flags & 1) {
                      if (!b) {
                        break;
                      }
                    } else {
                      if (!k || b && (!c || !k)) {
                        break;
                      }
                    }
                    var n = null;
                    if (k && (n = h.getSymbolById(g.symbolId), !n)) {
                      break;
                    }
                    b ? (n && !n.dynamic && b._setStaticContentFromSymbol(n), b._hasFlags(4096) && b._animate(e)) : (b = this.createAnimatedDisplayObject(n, g, !1), this.addTimelineObjectAtDepth(b, l), n.isAVM1Object && d.AVM1.Lib.initializeAVM1Object(b, n.avm1Context, g));
                }
              }
            };
            q.prototype._removeAnimatedChild = function(a) {
              this.removeChild(a);
              if (a._name) {
                var c = d.AVM2.ABC.Multiname.getPublicQualifiedName(a._name);
                this[c] === a && (this[c] = null);
              }
            };
            q.prototype._canHaveGraphics = function() {
              return !0;
            };
            q.prototype._getGraphics = function() {
              return this._graphics;
            };
            Object.defineProperty(q.prototype, "graphics", {get:function() {
              return this._ensureGraphics();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "buttonMode", {get:function() {
              return this._buttonMode;
            }, set:function(a) {
              this._buttonMode = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "dropTarget", {get:function() {
              return this._dropTarget;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "hitArea", {get:function() {
              return this._hitArea;
            }, set:function(a) {
              this._hitArea !== a && (a && a._hitTarget && (a._hitTarget._hitArea = null), this._hitArea = a) && (a._hitTarget = this);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "useHandCursor", {get:function() {
              return this._useHandCursor;
            }, set:function(a) {
              this._useHandCursor = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "soundTransform", {get:function() {
              v("public flash.display.Sprite::get soundTransform");
            }, set:function(a) {
              v("public flash.display.Sprite::set soundTransform");
            }, enumerable:!0, configurable:!0});
            q.prototype.startDrag = function(c, d) {
              void 0 === c && (c = !1);
              void 0 === d && (d = null);
              if (c) {
                this._dragMode = 1;
              } else {
                this._dragMode = 2;
                var h = this._getLocalMousePosition();
                this._dragDeltaX = this.x - h.x;
                this._dragDeltaY = this.y - h.y;
              }
              this._dragBounds = d;
              a.ui.Mouse.draggableObject = this;
            };
            q.prototype.stopDrag = function() {
              a.ui.Mouse.draggableObject === this && (a.ui.Mouse.draggableObject = null, this._dragDeltaY = this._dragDeltaX = this._dragMode = 0, this._dragBounds = null);
            };
            q.prototype._updateDragState = function(a) {
              void 0 === a && (a = null);
              var c = this._getLocalMousePosition(), d = c.x, c = c.y;
              2 === this._dragMode && (d += this._dragDeltaX, c += this._dragDeltaY);
              if (this._dragBounds) {
                var f = this._dragBounds, d = l(d, f.left, f.right), c = l(c, f.top, f.bottom)
              }
              this.x = d;
              this.y = c;
              this._dropTarget = a;
            };
            q.prototype.startTouchDrag = function(a, c, d) {
              v("public flash.display.Sprite::startTouchDrag");
            };
            q.prototype.stopTouchDrag = function(a) {
              v("public flash.display.Sprite::stopTouchDrag");
            };
            q.prototype._containsPoint = function(a, c, d, f, b, e) {
              if (!(5 === b && 0 < this._dragMode)) {
                var g = this._boundsAndMaskContainPoint(a, c, d, f, b);
                !g && 3 === b && this._hitArea && this._mouseEnabled && (g = this._hitArea._getInvertedConcatenatedMatrix(), g = this._hitArea._boundsAndMaskContainPoint(a, c, g.transformX(a, c), g.transformY(a, c), b));
                return 0 === g || 2 > b ? g : this._containsPointImpl(a, c, d, f, b, e, !0);
              }
            };
            q.prototype._containsPointDirectly = function(a, c, d, f) {
              if (this._hitArea) {
                return !!this._hitArea._containsGlobalPoint(d, f, 2, null);
              }
              d = this._getGraphics();
              return !!d && d._containsPoint(a, c, !0, 0);
            };
            q.classInitializer = null;
            q.initializer = function(a) {
              this._graphics = null;
              this._buttonMode = !1;
              this._hitArea = this._dropTarget = null;
              this._useHandCursor = !0;
              this._dragDeltaY = this._dragDeltaX = this._dragMode = 0;
              this._hitTarget = this._dragBounds = null;
              a && (a.isRoot && (this._root = this), a.numFrames && 0 < a.frames.length && this._initializeChildren(a.frames[0]));
            };
            q.classSymbols = null;
            q.instanceSymbols = null;
            return q;
          }(a.display.DisplayObjectContainer);
          k.Sprite = c;
          u = function(c) {
            function d(l, m) {
              c.call(this, l, a.display.MovieClip, !0);
              this.numFrames = 1;
              this.frames = [];
              this.labels = [];
              this.frameScripts = [];
              this.loaderInfo = m;
            }
            __extends(d, c);
            d.FromData = function(c, g) {
              var h = new d(c, g);
              h.numFrames = c.frameCount;
              g.actionScriptVersion === k.ActionScriptVersion.ACTIONSCRIPT2 && (h.isAVM1Object = !0, h.avm1Context = g._avm1Context);
              h.frameScripts = [];
              for (var f = c.frames, b = 0;b < f.length;b++) {
                var e = g.getFrame(c, b), l = e.actionBlocks;
                if (l) {
                  for (var p = 0;p < l.length;p++) {
                    h.frameScripts.push(b), h.frameScripts.push(l[p]);
                  }
                }
                e.labelName && h.labels.push(new a.display.FrameLabel(e.labelName, b + 1));
                h.frames.push(e);
              }
              return h;
            };
            return d;
          }(u.DisplaySymbol);
          k.SpriteSymbol = u;
        })(a.display || (a.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(w) {
          var v = d.AVM2.Runtime.asCoerceString, u = d.AVM2.Runtime.throwError, l = a.events;
          (function(a) {
            a[a.SWF1 = 1] = "SWF1";
            a[a.SWF9 = 9] = "SWF9";
            a[a.SWF10 = 10] = "SWF10";
          })(w.FrameNavigationModel || (w.FrameNavigationModel = {}));
          var c = function() {
            function a(c) {
              this._mc = c;
              this._soundStream = this._startSoundRegistrations = null;
            }
            a.prototype.registerStartSounds = function(a, c) {
              null === this._startSoundRegistrations && (this._startSoundRegistrations = {});
              this._startSoundRegistrations[a] = c;
            };
            a.prototype.initSoundStream = function(a) {
              this._soundStream = new w.MovieClipSoundStream(a, this._mc);
            };
            a.prototype.addSoundStreamBlock = function(a, c) {
              this._soundStream && this._soundStream.appendBlock(a, c);
            };
            a.prototype._startSounds = function(a) {
              if (a = this._startSoundRegistrations[a]) {
                for (var c = this._soundClips || (this._soundClips = {}), d = this._mc.loaderInfo, f = 0;f < a.length;f++) {
                  var b = a[f], e = b.soundId, b = b.soundInfo, g = c[e];
                  if (!g) {
                    var l = d.getSymbolById(e);
                    if (!l) {
                      continue;
                    }
                    g = l.symbolClass;
                    l = g.initializeFrom(l);
                    g.instanceConstructorNoInitialize.call(l);
                    c[e] = g = {object:l};
                  }
                  g.channel && b.stop && (g.channel.stop(), g.channel = null);
                  b.stop || g.channel && g.channel.playing || (g.channel = g.object.play(0, b.hasLoops ? b.loopCount : 0));
                }
              }
            };
            a.prototype.syncSounds = function(a) {
              null !== this._startSoundRegistrations && this._startSounds(a);
              this._soundStream && this._soundStream.playFrame(a);
            };
            return a;
          }(), g = function(g) {
            function t() {
              w.Sprite.instanceConstructorNoInitialize.call(this);
            }
            __extends(t, g);
            t.reset = function() {
              t.frameNavigationModel = 10;
              t._callQueue = [];
            };
            t.runFrameScripts = function() {
              k.enterTimeline("MovieClip.executeFrame");
              var a = t._callQueue;
              t._callQueue = [];
              for (var c = 0;c < a.length;c++) {
                var f = a[c];
                f._hasFlags(1024) ? (f._removeFlags(1024), f.dispatchEvent(l.Event.getInstance(l.Event.AVM1_LOAD))) : (f._allowFrameNavigation = 1 === w.MovieClip.frameNavigationModel, f.callFrame(f._currentFrame), f._allowFrameNavigation = !0, f._nextFrame !== f._currentFrame && (9 === w.MovieClip.frameNavigationModel ? (f._advanceFrame(), f._constructFrame(), f._removeFlags(8192), f.callFrame(f._currentFrame)) : w.DisplayObject.performFrameNavigation(!1, !0)));
              }
              k.leaveTimeline();
            };
            t.prototype._addFrame = function(a) {
              var c = this._symbol, f = c.frames;
              f.push(a);
              a.labelName && this.addFrameLabel(a.labelName, f.length);
              a.soundStreamHead && this._initSoundStream(a.soundStreamHead);
              a.soundStreamBlock && this._addSoundStreamBlock(f.length, a.soundStreamBlock);
              if (c.isAVM1Object && (d.AVM1.Lib.getAVM1Object(this, c.avm1Context).addFrameActionBlocks(f.length - 1, a), a.exports)) {
                a = a.exports;
                for (var b = 0;b < a.length;b++) {
                  var e = a[b];
                  c.avm1Context.addAsset(e.className, e.symbolId, null);
                }
              }
              1 === f.length && this._initializeChildren(f[0]);
            };
            t.prototype._initFrame = function(a) {
              if (a) {
                if (this.buttonMode && (a = null, this._mouseOver ? a = this._mouseDown ? "_down" : "_over" : null !== this._currentButtonState && (a = "_up"), a !== this._currentButtonState && this._buttonFrames[a])) {
                  this.stop();
                  this._gotoFrame(a, null);
                  this._currentButtonState = a;
                  this._advanceFrame();
                  return;
                }
                1 < this._totalFrames && !this._stopped && this._hasFlags(256) && this._nextFrame++;
              }
              this._advanceFrame();
            };
            t.prototype._constructFrame = function() {
              this._constructChildren();
            };
            t.prototype._enqueueFrameScripts = function() {
              this._hasFlags(1024) && t._callQueue.push(this);
              this._hasFlags(8192) && (this._removeFlags(8192), t._callQueue.push(this));
              g.prototype._enqueueFrameScripts.call(this);
            };
            Object.defineProperty(t.prototype, "currentFrame", {get:function() {
              return this._currentFrame - this._sceneForFrameIndex(this._currentFrame).offset;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(t.prototype, "framesLoaded", {get:function() {
              return this._frames.length;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(t.prototype, "totalFrames", {get:function() {
              return this._totalFrames;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(t.prototype, "trackAsMenu", {get:function() {
              return this._trackAsMenu;
            }, set:function(a) {
              this._trackAsMenu = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(t.prototype, "scenes", {get:function() {
              return this._scenes.map(function(a) {
                return a.clone();
              });
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(t.prototype, "currentScene", {get:function() {
              return this._sceneForFrameIndex(this._currentFrame).clone();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(t.prototype, "currentLabel", {get:function() {
              var a = this._labelForFrame(this._currentFrame);
              return a ? a.name : null;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(t.prototype, "currentLabels", {get:function() {
              return this._sceneForFrameIndex(this._currentFrame).labels;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(t.prototype, "currentFrameLabel", {get:function() {
              var a = this._sceneForFrameIndex(this._currentFrame);
              return (a = a.getLabelByFrame(this._currentFrame - a.offset)) && a.name;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(t.prototype, "enabled", {get:function() {
              return this._enabled;
            }, set:function(a) {
              this._enabled = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(t.prototype, "isPlaying", {get:function() {
              return this._isPlaying;
            }, enumerable:!0, configurable:!0});
            t.prototype.play = function() {
              1 < this._totalFrames && (this._isPlaying = !0);
              this._stopped = !1;
            };
            t.prototype.stop = function() {
              this._isPlaying = !1;
              this._stopped = !0;
            };
            t.prototype._getAbsFrameNumber = function(a, c) {
              var f = 10 !== w.MovieClip.frameNavigationModel, b;
              if (null !== c) {
                c = v(c);
                for (var e = this._scenes, d = 0;d < e.length && (b = e[d], b.name !== c);d++) {
                }
                if (d === e.length) {
                  if (f) {
                    return;
                  }
                  u("ArgumentError", k.Errors.SceneNotFoundError, c);
                }
              } else {
                b = this._sceneForFrameIndex(this._currentFrame);
              }
              e = parseInt(a, 10);
              if (e != a) {
                e = b.getLabelByName(a, f);
                if (!e) {
                  if (f) {
                    return;
                  }
                  u("ArgumentError", k.Errors.FrameLabelNotFoundError, a, c);
                }
                e = e.frame;
              }
              return b.offset + e;
            };
            t.prototype._gotoFrame = function(a, c) {
              var f = this._getAbsFrameNumber(a, c);
              void 0 !== f && this._gotoFrameAbs(f);
            };
            t.prototype._gotoFrameAbs = function(a) {
              1 > a ? a = 1 : a > this._totalFrames && (a = this._totalFrames);
              a !== this._nextFrame && (this._nextFrame = a, this._allowFrameNavigation && (9 === w.MovieClip.frameNavigationModel ? (this._advanceFrame(), this._constructFrame()) : w.DisplayObject.performFrameNavigation(!1, !0)));
            };
            t.prototype._advanceFrame = function() {
              var a = this._currentFrame, c = this._nextFrame;
              c > this._totalFrames && (c = 1);
              if (a === c) {
                this._nextFrame = c;
              } else {
                if (c > this.framesLoaded) {
                  this._nextFrame = c;
                } else {
                  var f = this._frames[c - 1];
                  if (f !== this._frames[a - 1] && (this._seekToFrame(c), f.controlTags)) {
                    for (var a = f.controlTags, b, f = 0;f < a.length;f++) {
                      var e = a[f];
                      15 === e.tagCode && (e = this._symbol.loaderInfo._file.getParsedTag(e));
                      15 === e.code && (b || (b = []), b.push(new d.Timeline.SoundStart(e.soundId, e.soundInfo)));
                    }
                    b && this._registerStartSounds(c, b);
                  }
                  this._frameScripts[c] && (this._setFlags(8192), this._parent && this._propagateFlagsUp(16384));
                  this._currentFrame = this._nextFrame = c;
                  this._syncSounds(c);
                }
              }
            };
            t.prototype._seekToFrame = function(a) {
              var c = this._currentFrame, f = this._frames;
              if (a === c + 1) {
                f = f[a - 1], f.controlTags && this._processControlTags(f.controlTags, !1);
              } else {
                for (var b = f[c - 1], e = this._symbol.loaderInfo, d = a < c, g = [], l, c = d ? 0 : c;a-- > c;) {
                  var k = f[a];
                  if (k !== b && (b = k, k = k.controlTags)) {
                    for (var n = k.length;n--;) {
                      var q = k[n], q = void 0 === q.tagCode ? q : e._file.getParsedTag(q);
                      switch(q.code) {
                        case 5:
                        ;
                        case 28:
                          l || (l = Object.create(null));
                          l[q.depth] = !0;
                          d || g.push(q);
                          break;
                        case 4:
                        ;
                        case 26:
                        ;
                        case 70:
                          l && l[q.depth] || g.push(q);
                          break;
                        default:
                          g.push(q);
                      }
                    }
                  }
                }
                g.reverse();
                this._processControlTags(g, d);
              }
            };
            t.prototype._sceneForFrameIndex = function(a) {
              var c = this._scenes;
              if (0 === a) {
                return c[0];
              }
              for (var f = 0;f < c.length;f++) {
                var b = c[f];
                if (b.offset < a && b.offset + b.numFrames >= a) {
                  return b;
                }
              }
            };
            t.prototype._labelForFrame = function(a) {
              for (var c = this._scenes, f = null, b = 0;b < c.length;b++) {
                var e = c[b];
                if (e.offset > a) {
                  break;
                }
                for (var d = e.labels, g = 0;g < d.length;g++) {
                  var l = d[g];
                  if (l.frame > a - e.offset) {
                    return f;
                  }
                  f = l;
                }
              }
              return f;
            };
            t.prototype.callFrame = function(a) {
              if (a = this._frameScripts[a | 0]) {
                try {
                  a.call(this);
                } catch (c) {
                  throw this.stop(), c;
                }
              }
            };
            t.prototype.nextFrame = function() {
              this.gotoAndStop(this._currentFrame + 1);
            };
            t.prototype.prevFrame = function() {
              this.gotoAndStop(this._currentFrame - 1);
            };
            t.prototype.gotoAndPlay = function(a, c) {
              void 0 === c && (c = null);
              (0 === arguments.length || 2 < arguments.length) && u("ArgumentError", k.Errors.WrongArgumentCountError, "flash.display::MovieClip/gotoAndPlay()", 1, arguments.length);
              c = v(c);
              a = v(a) + "";
              this.play();
              this._gotoFrame(a, c);
            };
            t.prototype.gotoAndStop = function(a, c) {
              void 0 === c && (c = null);
              (0 === arguments.length || 2 < arguments.length) && u("ArgumentError", k.Errors.WrongArgumentCountError, "flash.display::MovieClip/gotoAndPlay()", 1, arguments.length);
              c = v(c);
              a = v(a) + "";
              this.stop();
              this._gotoFrame(a, c);
            };
            t.prototype.addFrameScript = function(a, c) {
              if (this._currentFrame) {
                var f = arguments.length;
                f & 1 && u("ArgumentError", k.Errors.TooFewArgumentsError, f, f + 1);
                for (var b = this._frameScripts, e = this._totalFrames, d = 0;d < f;d += 2) {
                  var g = (arguments[d] | 0) + 1;
                  1 > g || g > e || (b[g] = arguments[d + 1], g === this._currentFrame && (this._setFlags(8192), this._parent && this._propagateFlagsUp(16384)));
                }
              }
            };
            Object.defineProperty(t.prototype, "_avm1SymbolClass", {get:function() {
              return this._symbol && this._symbol.avm1SymbolClass || null;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(t.prototype, "_isFullyLoaded", {get:function() {
              return this.framesLoaded >= this.totalFrames;
            }, enumerable:!0, configurable:!0});
            t.prototype._registerStartSounds = function(a, d) {
              null === this._sounds && (this._sounds = new c(this));
              this._sounds.registerStartSounds(a, d);
            };
            t.prototype._initSoundStream = function(a) {
              null === this._sounds && (this._sounds = new c(this));
              this._sounds.initSoundStream(a);
            };
            t.prototype._addSoundStreamBlock = function(a, c) {
              this._sounds.addSoundStreamBlock(a, c);
            };
            t.prototype._syncSounds = function(a) {
              null !== this._sounds && this._sounds.syncSounds(a);
            };
            t.prototype.addScene = function(a, c, f, b) {
              this._scenes.push(new w.Scene(a, c, f, b));
            };
            t.prototype.addFrameLabel = function(c, d) {
              var f = this._sceneForFrameIndex(d);
              f.getLabelByName(c, !1) || f.labels.push(new a.display.FrameLabel(c, d - f.offset));
            };
            t.prototype.prevScene = function() {
              var a = this._sceneForFrameIndex(this._currentFrame);
              0 !== a.offset && this._gotoFrameAbs(this._sceneForFrameIndex(a.offset).offset + 1);
            };
            t.prototype.nextScene = function() {
              var a = this._sceneForFrameIndex(this._currentFrame);
              a.offset + a.numFrames !== this._totalFrames && this._gotoFrameAbs(a.offset + a.numFrames + 1);
            };
            t.prototype._containsPointImpl = function(a, c, f, b, e, d, l) {
              a = g.prototype._containsPointImpl.call(this, a, c, f, b, e, d, !0);
              2 === a && 3 === e && "_as2Object" in this && !this.buttonMode && d[0] === this && (d.length = 0);
              return a;
            };
            t.classInitializer = function() {
              t.reset();
            };
            t.initializer = function(a) {
              w.DisplayObject._advancableInstances.push(this);
              this._currentFrame = 0;
              this._totalFrames = 1;
              this._trackAsMenu = !1;
              this._scenes = [];
              this._enabled = !0;
              this._isPlaying = !1;
              this._frames = [];
              this._frameScripts = [];
              this._nextFrame = 1;
              this._stopped = !1;
              this._allowFrameNavigation = !0;
              this._sounds = null;
              this._buttonFrames = Object.create(null);
              this._currentButtonState = null;
              if (a) {
                if (this._totalFrames = a.numFrames, this._currentFrame = 1, a.isRoot || this.addScene("", a.labels, 0, a.numFrames), this._frames = a.frames, a.isAVM1Object) {
                  if (a.frameScripts) {
                    var c = d.AVM1.Lib.getAVM1Object(this, a.avm1Context);
                    c.context = a.avm1Context;
                    for (var f = a.frameScripts, b = 0;b < f.length;b += 2) {
                      c.addFrameScript(f[b], f[b + 1]);
                    }
                  }
                  a.avm1Name && (this.name = a.avm1Name);
                }
              } else {
                this.addScene("", [], 0, this._totalFrames);
              }
            };
            t.classSymbols = null;
            t.instanceSymbols = null;
            return t;
          }(a.display.Sprite);
          w.MovieClip = g;
        })(a.display || (a.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(w) {
          function v(a, c) {
            var f = !1, b;
            a.addEventListener("timeupdate", function(a) {
              f ? performance.now() : (b = performance.now(), f = !0);
            });
            a.addEventListener("pause", function(a) {
              f = !1;
            });
            a.addEventListener("seeking", function(a) {
              f = !1;
            });
          }
          var u = d.SWF.MP3DecoderSession, l = function() {
            function a(c) {
              this._element = c;
            }
            Object.defineProperty(a.prototype, "isReady", {get:function() {
              return !!this._channel;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "element", {get:function() {
              return this._element;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "currentTime", {get:function() {
              return this._element.currentTime;
            }, enumerable:!0, configurable:!0});
            a.prototype.playFrom = function(a) {
              var c = this._element;
              c.paused ? (c.play(), c.addEventListener("playing", function e(d) {
                c.removeEventListener("playing", e);
                c.currentTime = a;
              })) : c.currentTime = a;
            };
            Object.defineProperty(a.prototype, "paused", {get:function() {
              return this._element.paused;
            }, set:function(a) {
              var c = this._element;
              a ? c.paused || c.pause() : c.paused && c.play();
            }, enumerable:!0, configurable:!0});
            a.prototype.createChannel = function() {
              this._channel = k.media.SoundChannel.initializeFrom({element:this._element});
            };
            a.prototype.queueData = function(a) {
            };
            a.prototype.finish = function() {
            };
            return a;
          }(), c = function(a) {
            function c(f) {
              a.call(this, f);
              this._mediaSource = new MediaSource;
              this._sourceBuffer = null;
              this._updating = !1;
              this._loading = !0;
              this._rawFrames = [];
              this._isReady = !1;
              this._mediaSource.addEventListener("sourceopen", this._openMediaSource.bind(this));
              this.element.src = URL.createObjectURL(this._mediaSource);
            }
            __extends(c, a);
            c.prototype._appendSoundData = function() {
              0 !== this._rawFrames.length && !this._updating && this._sourceBuffer && (this._loading ? (this._updating = !0, this._sourceBuffer.appendBuffer(this._rawFrames.shift()), this._isReady || (this._isReady = !0, this.createChannel())) : this._mediaSource.endOfStream());
            };
            c.prototype._openMediaSource = function() {
              var a = this._mediaSource.addSourceBuffer("audio/mpeg");
              a.addEventListener("update", function() {
                this._updating = !1;
                this._appendSoundData();
              }.bind(this));
              this._sourceBuffer = a;
              this._appendSoundData();
            };
            c.prototype.queueData = function(a) {
              this._rawFrames.push(a.data);
              this._appendSoundData();
            };
            c.prototype.finish = function() {
              this._loading = !1;
              this._appendSoundData();
            };
            return c;
          }(l), g = function(a) {
            function c(f) {
              a.call(this, f);
              this._rawFrames = [];
            }
            __extends(c, a);
            c.prototype.queueData = function(a) {
              this._rawFrames.push(a.data);
            };
            c.prototype.finish = function() {
              this.element.src = URL.createObjectURL(new Blob(this._rawFrames));
              this.createChannel();
            };
            return c;
          }(l), q = function() {
            function a(c) {
              this._sound = this._channel = null;
              this._data = c;
              this._position = 0;
            }
            Object.defineProperty(a.prototype, "currentTime", {get:function() {
              return NaN;
            }, enumerable:!0, configurable:!0});
            a.prototype.playFrom = function(a) {
            };
            Object.defineProperty(a.prototype, "paused", {get:function() {
              return !1;
            }, set:function(a) {
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(a.prototype, "isReady", {get:function() {
              return !!this._channel;
            }, enumerable:!0, configurable:!0});
            a.prototype.queueData = function(a) {
              this._data.pcm.set(a.pcm, this._position);
              this._position += a.pcm.length;
            };
            a.prototype.finish = function() {
              var a = k.media.Sound.initializeFrom(this._data), c = a.play();
              this._sound = a;
              this._channel = c;
            };
            return a;
          }(), t = function(a) {
            function c(f) {
              a.call(this, f);
              this._decoderPosition = 0;
              this._decoderSession = new u;
              this._decoderSession.onframedata = function(a) {
                var e = this._decoderPosition;
                f.pcm.set(a, e);
                this._decoderPosition = e + a.length;
              }.bind(this);
              this._decoderSession.onclosed = function() {
                q.prototype.finish.call(this);
              }.bind(this);
              this._decoderSession.onerror = function(a) {
                console.warn("MP3DecoderSession error: " + a);
              };
            }
            __extends(c, a);
            c.prototype.queueData = function(a) {
              this._decoderSession.pushAsync(a.data);
            };
            c.prototype.finish = function() {
              this._decoderSession.close();
            };
            return c;
          }(q), l = function() {
            function d(h, f) {
              this.movieClip = f;
              this.decode = h.decode;
              this.data = {sampleRate:h.sampleRate, channels:h.channels};
              this.seekIndex = [];
              this.position = 0;
              this.wasFullyLoaded = !1;
              this.waitFor = this.expectedFrame = 0;
              var b = "mp3" === h.format;
              if (b && !a.webAudioMP3Option.value) {
                var e = document.createElement("audio");
                e.preload = "metadata";
                e.loop = !1;
                v(e, f);
                if (e.canPlayType("audio/mpeg")) {
                  this.element = e;
                  a.mediaSourceMP3Option.value ? "undefined" !== typeof MediaSource && MediaSource.isTypeSupported("audio/mpeg") ? this.soundStreamAdapter = new c(e) : (console.warn("MediaSource is not supported"), this.soundStreamAdapter = new g(e)) : this.soundStreamAdapter = new g(e);
                  return;
                }
              }
              this.data.pcm = new Float32Array((h.samplesCount + 1) * this.movieClip.totalFrames * h.channels);
              this.soundStreamAdapter = b ? new t(this.data) : new q(this.data);
            }
            d.prototype.appendBlock = function(a, c) {
              var b = this.decode(c), e = this.position;
              this.seekIndex[a] = e + b.seek * this.data.channels;
              this.position = e + b.samplesCount * this.data.channels;
              this.soundStreamAdapter.queueData(b);
            };
            d.prototype.playFrame = function(a) {
              if (!isNaN(this.seekIndex[a]) && (!this.wasFullyLoaded && this.movieClip._isFullyLoaded && (this.wasFullyLoaded = !0, this.soundStreamAdapter.finish()), this.soundStreamAdapter.isReady && !isNaN(this.soundStreamAdapter.currentTime))) {
                var c = this.data, c = this.seekIndex[a] / c.sampleRate / c.channels, b = this.soundStreamAdapter.currentTime;
                this.expectedFrame !== a ? this.soundStreamAdapter.playFrom(c) : 0 < this.waitFor ? this.waitFor <= c && (this.soundStreamAdapter.paused = !1, this.waitFor = 0) : 1 < b - c ? (console.warn("Sound is faster than frames by " + (b - c)), this.waitFor = b - .25, this.soundStreamAdapter.paused = !0) : 1 < c - b && (console.warn("Sound is slower than frames by " + (c - b)), this.soundStreamAdapter.playFrom(c + .25));
                this.expectedFrame = a + 1;
              }
            };
            return d;
          }();
          w.MovieClipSoundStream = l;
        })(k.display || (k.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(n) {
        (function(w) {
          var v = d.Debug.notImplemented, u = d.Debug.somewhatImplemented, l = d.AVM2.Runtime.asCoerceString, c = d.AVM2.Runtime.throwError, g = function(d) {
            function g() {
              w.DisplayObjectContainer.instanceConstructorNoInitialize.call(this);
              this._root = this;
              this._stage = this;
              this._frameRate = 24;
              this._scaleMode = w.StageScaleMode.SHOW_ALL;
              this._align = "";
              this._stageHeight = this._stageWidth = 0;
              this._showDefaultContextMenu = !0;
              this._focus = null;
              this._colorCorrection = w.ColorCorrection.DEFAULT;
              this._colorCorrectionSupport = w.ColorCorrectionSupport.DEFAULT_OFF;
              this._stageFocusRect = !0;
              this._quality = w.StageQuality.HIGH;
              this._fullScreenSourceRect = this._displayState = null;
              this._mouseLock = !1;
              this._stageVideos = new a.GenericVector(0, !0, a.ASObject);
              this._stage3Ds = null;
              this._colorARGB = 4294967295;
              this._fullScreenHeight = this._fullScreenWidth = 0;
              this._wmodeGPU = !1;
              this._softKeyboardRect = new n.geom.Rectangle;
              this._allowsFullScreenInteractive = this._allowsFullScreen = !1;
              this._contentsScaleFactor = 1;
              this._displayContextInfo = null;
              this._stageContainerHeight = this._stageContainerWidth = this._timeout = -1;
              this._invalidated = !1;
            }
            __extends(g, d);
            g.prototype.setRoot = function(a) {
              this.addTimelineObjectAtDepth(a, 0);
            };
            Object.defineProperty(g.prototype, "frameRate", {get:function() {
              return this._frameRate;
            }, set:function(a) {
              this._frameRate = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "scaleMode", {get:function() {
              return this._scaleMode;
            }, set:function(a) {
              a = l(a);
              0 > n.display.StageScaleMode.toNumber(a) && c("ArgumentError", k.Errors.InvalidEnumError, "scaleMode");
              this._scaleMode = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "align", {get:function() {
              return this._align;
            }, set:function(a) {
              a = l(a);
              a = n.display.StageAlign.toNumber(a);
              this._align = n.display.StageAlign.fromNumber(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "stageWidth", {get:function() {
              return this.scaleMode !== w.StageScaleMode.NO_SCALE ? this._stageWidth / 20 | 0 : this._stageContainerWidth;
            }, set:function(a) {
            }, enumerable:!0, configurable:!0});
            g.prototype._setInitialName = function() {
              this._name = null;
            };
            g.prototype.setStageWidth = function(a) {
              this._stageWidth = 20 * a | 0;
            };
            Object.defineProperty(g.prototype, "stageHeight", {get:function() {
              return this.scaleMode !== w.StageScaleMode.NO_SCALE ? this._stageHeight / 20 | 0 : this._stageContainerHeight;
            }, set:function(a) {
            }, enumerable:!0, configurable:!0});
            g.prototype.setStageHeight = function(a) {
              this._stageHeight = 20 * a | 0;
            };
            g.prototype.setStageColor = function(a) {
              this._colorARGB = a;
            };
            g.prototype.setStageContainerSize = function(a, c, f) {
              this._contentsScaleFactor = f;
              if (this._stageContainerWidth !== a || this._stageContainerHeight !== c) {
                this._stageContainerWidth = a, this._stageContainerHeight = c, this.scaleMode === w.StageScaleMode.NO_SCALE && this.dispatchEvent(n.events.Event.getInstance(n.events.Event.RESIZE));
              }
            };
            Object.defineProperty(g.prototype, "showDefaultContextMenu", {get:function() {
              return this._showDefaultContextMenu;
            }, set:function(a) {
              this._showDefaultContextMenu = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "focus", {get:function() {
              return this._focus;
            }, set:function(a) {
              this._focus = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "colorCorrection", {get:function() {
              return this._colorCorrection;
            }, set:function(a) {
              v("public flash.display.Stage::set colorCorrection");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "colorCorrectionSupport", {get:function() {
              return this._colorCorrectionSupport;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "stageFocusRect", {get:function() {
              return this._stageFocusRect;
            }, set:function(a) {
              this._stageFocusRect = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "quality", {get:function() {
              return this._quality.toUpperCase();
            }, set:function(a) {
              a = (l(a) || "").toLowerCase();
              0 > n.display.StageQuality.toNumber(a) && (a = n.display.StageQuality.HIGH);
              this._quality = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "displayState", {get:function() {
              return this._displayState;
            }, set:function(a) {
              a = l(a);
              0 > n.display.StageDisplayState.toNumber(a) && (a = n.display.StageDisplayState.NORMAL);
              this._displayState = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "fullScreenSourceRect", {get:function() {
              return this._fullScreenSourceRect;
            }, set:function(a) {
              v("public flash.display.Stage::set fullScreenSourceRect");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "mouseLock", {get:function() {
              return this._mouseLock;
            }, set:function(a) {
              u("public flash.display.Stage::set mouseLock");
              this._mouseLock = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "stageVideos", {get:function() {
              u("public flash.display.Stage::get stageVideos");
              return this._stageVideos;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "stage3Ds", {get:function() {
              v("public flash.display.Stage::get stage3Ds");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "color", {get:function() {
              return this._colorARGB;
            }, set:function(a) {
              this._colorARGB = a | 4278190080;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "alpha", {get:function() {
              return this._colorTransform.alphaMultiplier;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "fullScreenWidth", {get:function() {
              return this._fullScreenWidth;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "fullScreenHeight", {get:function() {
              return this._fullScreenHeight;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "wmodeGPU", {get:function() {
              return this._wmodeGPU;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "softKeyboardRect", {get:function() {
              return this._softKeyboardRect;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "allowsFullScreen", {get:function() {
              return this._allowsFullScreen;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "allowsFullScreenInteractive", {get:function() {
              return this._allowsFullScreenInteractive;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "contentsScaleFactor", {get:function() {
              return this._contentsScaleFactor;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "displayContextInfo", {get:function() {
              return this._displayContextInfo;
            }, enumerable:!0, configurable:!0});
            g.prototype.removeChildAt = function(a) {
              return d.prototype.removeChildAt.call(this, a);
            };
            g.prototype.swapChildrenAt = function(a, c) {
              d.prototype.swapChildrenAt.call(this, a, c);
            };
            Object.defineProperty(g.prototype, "width", {get:function() {
              return this._getWidth();
            }, set:function(a) {
              this._setWidth(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "height", {get:function() {
              return this._getHeight();
            }, set:function(a) {
              this._setHeight(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "mouseChildren", {get:function() {
              return this._mouseChildren;
            }, set:function(a) {
              this._setMouseChildren(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "numChildren", {get:function() {
              return this._children.length;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "tabChildren", {get:function() {
              return this._tabChildren;
            }, set:function(a) {
              this._setTabChildren(a);
            }, enumerable:!0, configurable:!0});
            g.prototype.addChild = function(a) {
              return d.prototype.addChild.call(this, a);
            };
            g.prototype.addChildAt = function(a, c) {
              return d.prototype.addChildAt.call(this, a, c);
            };
            g.prototype.setChildIndex = function(a, c) {
              d.prototype.setChildIndex.call(this, a, c);
            };
            g.prototype.addEventListener = function(a, c, f, b, e) {
              d.prototype.addEventListener.call(this, a, c, f, b, e);
            };
            g.prototype.hasEventListener = function(a) {
              return d.prototype.hasEventListener.call(this, a);
            };
            g.prototype.willTrigger = function(a) {
              return d.prototype.willTrigger.call(this, a);
            };
            g.prototype.dispatchEvent = function(a) {
              return d.prototype.dispatchEvent.call(this, a);
            };
            g.prototype.invalidate = function() {
              this._invalidated = !0;
            };
            g.prototype.isFocusInaccessible = function() {
              v("public flash.display.Stage::isFocusInaccessible");
            };
            g.prototype.requireOwnerPermissions = function() {
            };
            g.prototype.render = function() {
              this._invalidated && (w.DisplayObject._broadcastFrameEvent(n.events.Event.RENDER), this._invalidated = !1);
            };
            Object.defineProperty(g.prototype, "name", {get:function() {
              return this._name;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "mask", {get:function() {
              return this._mask;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "visible", {get:function() {
              return this._hasFlags(1);
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "x", {get:function() {
              return this._getX();
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "y", {get:function() {
              return this._getY();
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "z", {get:function() {
              return this._z;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "scaleX", {get:function() {
              return Math.abs(this._scaleX);
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "scaleY", {get:function() {
              return this._scaleY;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "scaleZ", {get:function() {
              return this._scaleZ;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "rotation", {get:function() {
              return this._rotation;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "rotationX", {get:function() {
              return this._rotationX;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "rotationY", {get:function() {
              return this._rotationX;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "rotationZ", {get:function() {
              return this._rotationX;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "cacheAsBitmap", {get:function() {
              return this._getCacheAsBitmap();
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "opaqueBackground", {get:function() {
              return this._opaqueBackground;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "scrollRect", {get:function() {
              return this._getScrollRect();
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "filters", {get:function() {
              return this._getFilters();
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "blendMode", {get:function() {
              return this._blendMode;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "transform", {get:function() {
              return this._getTransform();
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "accessibilityProperties", {get:function() {
              return this._accessibilityProperties;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "scale9Grid", {get:function() {
              return this._getScale9Grid();
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "tabEnabled", {get:function() {
              return this._tabEnabled;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "tabIndex", {get:function() {
              return this._tabIndex;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "focusRect", {get:function() {
              return this._focusRect;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "mouseEnabled", {get:function() {
              return this._mouseEnabled;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "accessibilityImplementation", {get:function() {
              return this._accessibilityImplementation;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "textSnapshot", {get:function() {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
              return null;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "contextMenu", {get:function() {
              return this._contextMenu;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            g.classInitializer = null;
            g.classSymbols = null;
            g.instanceSymbols = null;
            g.initializer = null;
            return g;
          }(n.display.DisplayObjectContainer);
          w.Stage = g;
        })(n.display || (n.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.display.ActionScriptVersion");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.ACTIONSCRIPT2 = 2;
            c.ACTIONSCRIPT3 = 3;
            return c;
          }(a.ASNative);
          k.ActionScriptVersion = u;
        })(k.display || (k.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.display.BlendMode");
            }
            __extends(c, a);
            c.fromNumber = function(a) {
              switch(a) {
                case 0:
                ;
                case 1:
                  return c.NORMAL;
                case 2:
                  return c.LAYER;
                case 3:
                  return c.MULTIPLY;
                case 4:
                  return c.SCREEN;
                case 5:
                  return c.LIGHTEN;
                case 6:
                  return c.DARKEN;
                case 7:
                  return c.DIFFERENCE;
                case 8:
                  return c.ADD;
                case 9:
                  return c.SUBTRACT;
                case 10:
                  return c.INVERT;
                case 11:
                  return c.ALPHA;
                case 12:
                  return c.ERASE;
                case 13:
                  return c.OVERLAY;
                case 14:
                  return c.HARDLIGHT;
                default:
                  return null;
              }
            };
            c.toNumber = function(a) {
              switch(a) {
                case c.NORMAL:
                  return 1;
                case c.LAYER:
                  return 2;
                case c.MULTIPLY:
                  return 3;
                case c.SCREEN:
                  return 4;
                case c.LIGHTEN:
                  return 5;
                case c.DARKEN:
                  return 6;
                case c.DIFFERENCE:
                  return 7;
                case c.ADD:
                  return 8;
                case c.SUBTRACT:
                  return 9;
                case c.INVERT:
                  return 10;
                case c.ALPHA:
                  return 11;
                case c.ERASE:
                  return 12;
                case c.OVERLAY:
                  return 13;
                case c.HARDLIGHT:
                  return 14;
                default:
                  return -1;
              }
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.NORMAL = "normal";
            c.LAYER = "layer";
            c.MULTIPLY = "multiply";
            c.SCREEN = "screen";
            c.LIGHTEN = "lighten";
            c.DARKEN = "darken";
            c.ADD = "add";
            c.SUBTRACT = "subtract";
            c.DIFFERENCE = "difference";
            c.INVERT = "invert";
            c.OVERLAY = "overlay";
            c.HARDLIGHT = "hardlight";
            c.ALPHA = "alpha";
            c.ERASE = "erase";
            c.SHADER = "shader";
            return c;
          }(a.ASNative);
          k.BlendMode = u;
        })(k.display || (k.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.display.ColorCorrection");
            }
            __extends(c, a);
            c.fromNumber = function(a) {
              switch(a) {
                case 0:
                  return c.DEFAULT;
                case 1:
                  return c.ON;
                case 2:
                  return c.OFF;
                default:
                  return null;
              }
            };
            c.toNumber = function(a) {
              switch(a) {
                case c.DEFAULT:
                  return 0;
                case c.ON:
                  return 1;
                case c.OFF:
                  return 2;
                default:
                  return -1;
              }
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.DEFAULT = "default";
            c.ON = "on";
            c.OFF = "off";
            return c;
          }(a.ASNative);
          k.ColorCorrection = u;
        })(k.display || (k.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.display.ColorCorrectionSupport");
            }
            __extends(c, a);
            c.fromNumber = function(a) {
              switch(a) {
                case 0:
                  return c.UNSUPPORTED;
                case 1:
                  return c.DEFAULT_ON;
                case 2:
                  return c.DEFAULT_OFF;
                default:
                  return null;
              }
            };
            c.toNumber = function(a) {
              switch(a) {
                case c.UNSUPPORTED:
                  return 0;
                case c.DEFAULT_ON:
                  return 1;
                case c.DEFAULT_OFF:
                  return 2;
                default:
                  return -1;
              }
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.UNSUPPORTED = "unsupported";
            c.DEFAULT_ON = "defaultOn";
            c.DEFAULT_OFF = "defaultOff";
            return c;
          }(a.ASNative);
          k.ColorCorrectionSupport = u;
        })(k.display || (k.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.display.FocusDirection");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.TOP = "top";
            c.BOTTOM = "bottom";
            c.NONE = "none";
            return c;
          }(a.ASNative);
          k.FocusDirection = u;
        })(k.display || (k.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.AVM2.Runtime.asCoerceString, u = function(a) {
            function c(a, c) {
              this._name = v(a);
              this._frame = c | 0;
            }
            __extends(c, a);
            Object.defineProperty(c.prototype, "name", {get:function() {
              return this._name;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "frame", {get:function() {
              return this._frame;
            }, enumerable:!0, configurable:!0});
            c.prototype.clone = function() {
              return new c(this._name, this._frame);
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.events.EventDispatcher);
          k.FrameLabel = u;
        })(a.display || (a.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(n) {
        (function(w) {
          var v = d.Debug.notImplemented, u = d.Debug.somewhatImplemented, l = d.ArrayUtilities.DataBuffer, c = d.AVM2.Runtime.asCoerceString, g = d.AVM2.Runtime.throwError, q = d.AVM2.Runtime.AVM2, t = d.IntegerUtilities.swap32, m = d.ColorUtilities.premultiplyARGB, h = d.ColorUtilities.unpremultiplyARGB, f = d.ColorUtilities.RGBAToARGB, b = d.ArrayUtilities.indexOf, e = n.geom.Rectangle, r = function(p) {
            function r(a, b, c, f) {
              void 0 === c && (c = !0);
              void 0 === f && (f = 4294967295);
              a |= 0;
              b |= 0;
              c = !!c;
              f |= 0;
              var d = this._symbol;
              d && (a = d.width | 0, b = d.height | 0);
              (a > r.MAXIMUM_WIDTH || 0 >= a || b > r.MAXIMUM_HEIGHT || 0 >= b || a * b > r.MAXIMUM_DIMENSION) && g("ArgumentError", k.Errors.InvalidBitmapData);
              this._rect = new e(0, 0, a, b);
              this._transparent = c;
              d ? (this._id = d.syncId, 1 === d.type || 2 === d.type || 3 === d.type ? this._setData(d.data, d.type) : (this._isDirty = !1, this._isRemoteDirty = !0), this._solidFillColorPBGRA = null) : (this._id = n.display.DisplayObject.getNextSyncID(), this._setData(new Uint8Array(a * b * 4), 1), 0 === f >> 24 && c ? this._solidFillColorPBGRA = 0 : this.fillRect(this._rect, f));
              this._bitmapReferrers = [];
            }
            __extends(r, p);
            r.prototype._setData = function(a, b) {
              a instanceof Uint8ClampedArray && (a = new Uint8Array(a.buffer));
              this._data = a;
              this._type = b;
              this._view = new Int32Array(a.buffer);
              this._dataBuffer = l.FromArrayBuffer(a.buffer);
              this._isDirty = !0;
              this._isRemoteDirty = !1;
            };
            r.prototype._addBitmapReferrer = function(a) {
              b(this._bitmapReferrers, a);
              this._bitmapReferrers.push(a);
            };
            r.prototype._removeBitmapReferrer = function(a) {
              a = b(this._bitmapReferrers, a);
              this._bitmapReferrers[a] = null;
            };
            r.prototype._invalidate = function() {
              if (!this._isDirty) {
                this._isDirty = !0;
                this._isRemoteDirty = !1;
                for (var a = 0;a < this._bitmapReferrers.length;a++) {
                  var b = this._bitmapReferrers[a];
                  b && b._setDirtyFlags(16777216);
                }
              }
            };
            r.prototype._getTemporaryRectangleFrom = function(a, b) {
              void 0 === b && (b = 0);
              var e = r._temporaryRectangles[b];
              a && e.copyFrom(a);
              return e;
            };
            r.prototype.getDataBuffer = function() {
              return this._dataBuffer;
            };
            r.prototype._getContentBounds = function() {
              return d.Bounds.FromRectangle(this._rect);
            };
            r.prototype._getPixelData = function(a) {
              var b = this._getTemporaryRectangleFrom(this._rect).intersectInPlace(a);
              if (!b.isEmpty()) {
                a = b.x;
                for (var e = b.x + b.width, c = b.y, f = b.y + b.height, d = this._view, g = this._rect.width, b = new Int32Array(b.area), h = 0;c < f;c++) {
                  for (var l = c * g, m = a;m < e;m++) {
                    var p = d[l + m], r = p & 255, p = 255 * (p >>> 8) / r << 8 | r;
                    b[h++] = p;
                  }
                }
                return b;
              }
            };
            r.prototype._putPixelData = function(a, b) {
              var e = this._getTemporaryRectangleFrom(this._rect).intersectInPlace(a);
              if (!e.isEmpty()) {
                for (var c = e.x, f = e.x + e.width, d = e.y + e.height, g = this._view, h = this._rect.width, l = a.width * a.height - e.height + (c - a.x), m = a.width - e.width, p = this._transparent ? 0 : 255, e = e.y;e < d;e++) {
                  for (var r = e * h, k = c;k < f;k++) {
                    var n = b[l++], q = n & p;
                    g[r + k] = (((n >>> 8) * q + 254) / 255 & 16777215) << 8 | q;
                  }
                  l += m;
                }
                this._invalidate();
              }
            };
            Object.defineProperty(r.prototype, "width", {get:function() {
              return this._rect.width;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "height", {get:function() {
              return this._rect.height;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "rect", {get:function() {
              return this._rect.clone();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(r.prototype, "transparent", {get:function() {
              return this._transparent;
            }, enumerable:!0, configurable:!0});
            r.prototype.clone = function() {
              u("public flash.display.BitmapData::clone");
              var a = new r(this._rect.width, this._rect.height, this._transparent, this._solidFillColorPBGRA);
              a._view.set(this._view);
              return a;
            };
            r.prototype.getPixel = function(a, b) {
              return this.getPixel32(a | 0, b | 0) & 16777215;
            };
            r.prototype.getPixel32 = function(a, b) {
              a |= 0;
              b |= 0;
              if (!this._rect.contains(a, b)) {
                return 0;
              }
              this._ensureBitmapData();
              var e = this._view[b * this._rect.width + a];
              switch(this._type) {
                case 1:
                  return e = t(e), h(e) >>> 0;
                case 3:
                  return f(t(e));
                default:
                  return d.Debug.notImplemented(d.ImageType[this._type]), 0;
              }
            };
            r.prototype.setPixel = function(a, b, e) {
              a |= 0;
              b |= 0;
              e |= 0;
              this._rect.contains(a, b) && (this._ensureBitmapData(), a = b * this._rect.width + a, e = e & 16777215 | (this._view[a] & 255) << 24, e = m(e), this._view[a] = t(e), this._invalidate(), this._solidFillColorPBGRA = null);
            };
            r.prototype.setPixel32 = function(a, b, e) {
              a |= 0;
              b |= 0;
              if (this._rect.contains(a, b)) {
                this._ensureBitmapData();
                var c = e >>> 24;
                e &= 16777215;
                c = this._transparent ? m(e | c << 24) : e | 4278190080;
                this._view[b * this._rect.width + a] = t(c);
                this._invalidate();
                this._solidFillColorPBGRA = null;
              }
            };
            r.prototype.applyFilter = function(a, b, e, c) {
              u("public flash.display.BitmapData::applyFilter " + c);
            };
            r.prototype.colorTransform = function(a, b) {
              u("public flash.display.BitmapData::colorTransform");
            };
            r.prototype.compare = function(a) {
              v("public flash.display.BitmapData::compare");
            };
            r.prototype.copyChannel = function(a, b, e, c, f) {
              v("public flash.display.BitmapData::copyChannel");
            };
            r.prototype.copyPixels = function(a, b, e, c, f, d) {
              void 0 === c && (c = null);
              void 0 === f && (f = null);
              void 0 === d && (d = !1);
              d = !!d;
              if (c || f) {
                v("public flash.display.BitmapData::copyPixels - Alpha");
              } else {
                var g = this._getTemporaryRectangleFrom(b, 0).roundInPlace();
                b = this._rect;
                f = a._rect;
                var h = Math.max(g.x, 0);
                c = Math.max(g.y, 0);
                var l = Math.min(g.x + g.width, f.width), m = Math.min(g.y + g.height, f.height);
                f = e.x | 0 + (h - g.x);
                g = e.y | 0 + (c - g.y);
                0 > f && (h -= f, f = 0);
                0 > g && (c -= g, g = 0);
                e = Math.min(l - h, b.width - f);
                b = Math.min(m - c, b.height - g);
                if (!(0 >= e || 0 >= b)) {
                  var l = h, m = c, p = f, r = g;
                  c = a._rect.width;
                  f = this._rect.width;
                  this._ensureBitmapData();
                  a._ensureBitmapData();
                  h = a._view;
                  g = this._view;
                  a._type !== this._type && u("public flash.display.BitmapData::copyPixels - Color Format Conversion");
                  if (d && 1 !== this._type) {
                    v("public flash.display.BitmapData::copyPixels - Merge Alpha");
                  } else {
                    if (null === this._solidFillColorPBGRA || this._solidFillColorPBGRA !== a._solidFillColorPBGRA) {
                      null !== a._solidFillColorPBGRA && 255 === (a._solidFillColorPBGRA & 255) && (d = !1);
                      if (d) {
                        this._copyPixelsAndMergeAlpha(h, l, m, c, g, p, r, f, e, b);
                      } else {
                        if (a = m * c + l | 0, d = r * f + p | 0, 0 === (e & 3)) {
                          for (l = 0;l < b;l = l + 1 | 0) {
                            for (m = 0;m < e;m = m + 4 | 0) {
                              g[d + m + 0 | 0] = h[a + m + 0 | 0], g[d + m + 1 | 0] = h[a + m + 1 | 0], g[d + m + 2 | 0] = h[a + m + 2 | 0], g[d + m + 3 | 0] = h[a + m + 3 | 0];
                            }
                            a = a + c | 0;
                            d = d + f | 0;
                          }
                        } else {
                          for (l = 0;l < b;l = l + 1 | 0) {
                            for (m = 0;m < e;m = m + 1 | 0) {
                              g[d + m | 0] = h[a + m | 0];
                            }
                            a = a + c | 0;
                            d = d + f | 0;
                          }
                        }
                      }
                      this._solidFillColorPBGRA = null;
                      this._invalidate();
                    }
                  }
                }
              }
            };
            r.prototype._copyPixelsAndMergeAlpha = function(a, b, e, c, f, d, g, h, l, m) {
              b = e * c + b | 0;
              d = g * h + d | 0;
              for (g = 0;g < m;g = g + 1 | 0) {
                for (e = 0;e < l;e = e + 1 | 0) {
                  var p = a[b + e | 0], r = p & 255;
                  if (255 === r) {
                    f[d + e | 0] = p;
                  } else {
                    if (0 !== r) {
                      var k = p & 16711935, p = p >> 8 & 16711935, n = f[d + e | 0], q = n & 16711935, n = n >> 8 & 16711935, r = 256 - r, q = Math.imul(q, r) >> 8, n = Math.imul(n, r) >> 8;
                      f[d + e | 0] = (p + n & 16711935) << 8 | k + q & 16711935;
                    }
                  }
                }
                b = b + c | 0;
                d = d + h | 0;
              }
            };
            r.prototype.dispose = function() {
              this._rect.setEmpty();
              this._view = null;
              this._invalidate();
            };
            r.prototype.draw = function(a, b, e, c, f, d) {
              void 0 === b && (b = null);
              void 0 === e && (e = null);
              void 0 === c && (c = null);
              void 0 === f && (f = null);
              void 0 === d && (d = !1);
              u("public flash.display.BitmapData::draw");
              var g = q.instance.globals["Shumway.Player.Utils"];
              b && (b = b.clone().toTwipsInPlace());
              g.drawToBitmap(this, a, b, e, c, f, d);
              this._isRemoteDirty = !0;
            };
            r.prototype.drawWithQuality = function(a, b, e, f, d, g, h) {
              void 0 === f && (f = null);
              void 0 === h && (h = null);
              c(f);
              c(h);
              v("public flash.display.BitmapData::drawWithQuality");
            };
            r.prototype.fillRect = function(a, b) {
              this._ensureBitmapData();
              var e = this._transparent ? m(b) : b | 4278190080, e = t(e), c = this._getTemporaryRectangleFrom(this._rect).intersectInPlace(a);
              if (!c.isEmpty() && this._solidFillColorPBGRA !== e) {
                var f = this._view;
                if (c.equals(this._rect)) {
                  var d = f.length | 0;
                  if (0 === (d & 3)) {
                    for (var g = 0;g < d;g += 4) {
                      f[g] = e, f[g + 1] = e, f[g + 2] = e, f[g + 3] = e;
                    }
                  } else {
                    for (g = 0;g < d;g++) {
                      f[g] = e;
                    }
                  }
                  this._solidFillColorPBGRA = e;
                } else {
                  for (var d = c.x | 0, g = c.x + c.width | 0, h = c.y + c.height | 0, l = this._rect.width | 0, c = c.y | 0;c < h;c++) {
                    for (var p = c * l | 0, r = d;r < g;r++) {
                      f[p + r] = e;
                    }
                  }
                  this._solidFillColorPBGRA = null;
                }
                this._invalidate();
              }
            };
            r.prototype.floodFill = function(a, b, e) {
              v("public flash.display.BitmapData::floodFill");
            };
            r.prototype.generateFilterRect = function(a, b) {
              v("public flash.display.BitmapData::generateFilterRect");
            };
            r.prototype.getColorBoundsRect = function(a, b, e) {
              v("public flash.display.BitmapData::getColorBoundsRect");
            };
            r.prototype.getPixels = function(a) {
              var b = new n.utils.ByteArray;
              this.copyPixelsToByteArray(a, b);
              return b;
            };
            r.prototype.copyPixelsToByteArray = function(a, b) {
              var e = this._getPixelData(a);
              e && b.writeRawBytes(new Uint8Array(e));
            };
            r.prototype.getVector = function(b) {
              var e = new a.Uint32Vector(c.length), c = this._getPixelData(b);
              if (!c) {
                return e;
              }
              e.length = c.length;
              e._view().set(c);
              return e;
            };
            r.prototype.hitTest = function(a, b, e, c, f) {
              v("public flash.display.BitmapData::hitTest");
            };
            r.prototype.merge = function(a, b, e, c, f, d, g) {
              u("public flash.display.BitmapData::merge");
            };
            r.prototype.noise = function(a, b, e, c, f) {
              u("public flash.display.BitmapData::noise");
            };
            r.prototype.paletteMap = function(a, b, e, c, f, d, g) {
              u("public flash.display.BitmapData::paletteMap");
            };
            r.prototype.perlinNoise = function(a, b, e, c, f, d, g, h, l) {
              u("public flash.display.BitmapData::perlinNoise");
            };
            r.prototype.pixelDissolve = function(a, b, e, c, f, d) {
              v("public flash.display.BitmapData::pixelDissolve");
            };
            r.prototype.scroll = function(a, b) {
              v("public flash.display.BitmapData::scroll");
            };
            r.prototype.setPixels = function(a, b) {
              this._putPixelData(a, new Int32Array(b.readRawBytes()));
            };
            r.prototype.setVector = function(a, b) {
              this._putPixelData(a, b._view());
            };
            r.prototype.threshold = function(a, b, e, f, d, g, h, l) {
              c(f);
              v("public flash.display.BitmapData::threshold");
            };
            r.prototype.lock = function() {
              this._locked = !0;
            };
            r.prototype.unlock = function(a) {
              this._locked = !1;
            };
            r.prototype.histogram = function(a) {
              v("public flash.display.BitmapData::histogram");
            };
            r.prototype.encode = function(a, b, e) {
              v("public flash.display.BitmapData::encode");
            };
            r.prototype._ensureBitmapData = function() {
              if (this._isRemoteDirty) {
                var a = d.AVM2.Runtime.AVM2.instance.globals["Shumway.Player.Utils"].requestBitmapData(this);
                this._setData(a.getBytes(), 3);
                this._isDirty = this._isRemoteDirty = !1;
                this._solidFillColorPBGRA = null;
              }
              1 !== this._type && (d.ColorUtilities.convertImage(this._type, 1, this._view, this._view), this._type = 1, this._solidFillColorPBGRA = null);
            };
            r.classInitializer = function() {
            };
            r.initializer = function(a) {
              this._symbol = a;
            };
            r.classSymbols = null;
            r.instanceSymbols = null;
            r.MAXIMUM_WIDTH = 8191;
            r.MAXIMUM_HEIGHT = 8191;
            r.MAXIMUM_DIMENSION = 16777215;
            r._temporaryRectangles = [new n.geom.Rectangle, new n.geom.Rectangle, new n.geom.Rectangle];
            return r;
          }(a.ASNative);
          w.BitmapData = r;
          r = function(a) {
            function b(e) {
              a.call(this, e, n.display.BitmapData, !1);
              this.ready = !1;
            }
            __extends(b, a);
            b.FromData = function(a) {
              var e = new b(a);
              e.width = a.width || -1;
              e.height = a.height || -1;
              e.syncId = n.display.DisplayObject.getNextSyncID();
              e.data = a.data;
              switch(a.mimeType) {
                case "application/octet-stream":
                  e.type = a.dataType;
                  e.ready = !0;
                  break;
                case "image/jpeg":
                  e.type = 4;
                  break;
                case "image/png":
                  e.type = 5;
                  break;
                case "image/gif":
                  e.type = 6;
                  break;
                default:
                  v(a.mimeType);
              }
              return e;
            };
            b.prototype.getSharedInstance = function() {
              return this.sharedInstance || this.createSharedInstance();
            };
            b.prototype.createSharedInstance = function() {
              this.sharedInstance = this.symbolClass.initializeFrom(this);
              this.symbolClass.instanceConstructorNoInitialize.call(this.sharedInstance);
              return this.sharedInstance;
            };
            Object.defineProperty(b.prototype, "resolveAssetCallback", {get:function() {
              return this._unboundResolveAssetCallback.bind(this);
            }, enumerable:!0, configurable:!0});
            b.prototype._unboundResolveAssetCallback = function(a) {
              this.ready = !0;
              a && (this.width = a.width, this.height = a.height);
            };
            return b;
          }(d.Timeline.DisplaySymbol);
          w.BitmapSymbol = r;
        })(n.display || (n.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.display.BitmapDataChannel");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.RED = 1;
            c.GREEN = 2;
            c.BLUE = 4;
            c.ALPHA = 8;
            return c;
          }(a.ASNative);
          k.BitmapDataChannel = u;
        })(k.display || (k.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.display.BitmapEncodingColorSpace");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.COLORSPACE_AUTO = "auto";
            c.COLORSPACE_4_4_4 = "4:4:4";
            c.COLORSPACE_4_2_2 = "4:2:2";
            c.COLORSPACE_4_2_0 = "4:2:0";
            return c;
          }(a.ASNative);
          k.BitmapEncodingColorSpace = u;
        })(k.display || (k.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c(a) {
              n("public flash.display.JPEGEncoderOptions");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.ASNative);
          k.JPEGEncoderOptions = u;
        })(k.display || (k.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(w) {
          var v = d.Debug.somewhatImplemented, u = d.AVM2.Runtime.throwError, l = a.display.ActionScriptVersion, c = d.AVM2.Runtime.AVM2, g = a.events, q = d.FileLoader, t = d.AVM2.ABC.AbcFile, m = d.SWF.SWFFile, h = d.AVM2.enterTimeline, f = d.AVM2.leaveTimeline, b;
          (function(a) {
            a[a.Unloaded = 0] = "Unloaded";
            a[a.Opened = 1] = "Opened";
            a[a.Initialized = 2] = "Initialized";
            a[a.Complete = 3] = "Complete";
          })(b || (b = {}));
          var e;
          (function(a) {
            a[a.External = 0] = "External";
            a[a.Bytes = 1] = "Bytes";
          })(e || (e = {}));
          b = function(b) {
            function e() {
              w.DisplayObjectContainer.instanceConstructorNoInitialize.call(this);
              this._content = null;
              e._rootLoader && (this._contentID = w.DisplayObject._instanceID++);
              this._contentLoaderInfo = new w.LoaderInfo(w.LoaderInfo.CtorToken);
              this._contentLoaderInfo._loader = this;
              var a = c.currentAbc();
              a && (this._contentLoaderInfo._loaderUrl = a.env.loaderInfo.url);
              this._fileLoader = null;
              this._loadStatus = 0;
            }
            __extends(e, b);
            e.getRootLoader = function() {
              if (e._rootLoader) {
                return e._rootLoader;
              }
              var b = new a.display.Loader;
              a.display.DisplayObject._instanceID--;
              b._contentLoaderInfo._loader = null;
              return e._rootLoader = b;
            };
            e.reset = function() {
              e._loadQueue.forEach(function(a) {
                return a.unload();
              });
              e.classInitializer();
            };
            e.processEvents = function() {
              e.processEarlyEvents();
              e.processLateEvents();
            };
            e.processEarlyEvents = function() {
              for (var a = e._loadQueue, b = 0;b < a.length;b++) {
                var c = a[b], l = c._contentLoaderInfo, m = c._imageSymbol;
                if (l._file instanceof d.ImageFile) {
                  if (!m || !m.ready || c._queuedLoadUpdate) {
                    continue;
                  }
                  c._applyDecodedImage(m);
                }
                if (1 === c._loadStatus && c._content) {
                  h("Loader.INIT");
                  try {
                    l.dispatchEvent(g.Event.getInstance(g.Event.INIT));
                  } catch (r) {
                    console.warn("caught error under loaderInfo INIT event:", r);
                  }
                  f();
                  c._loadStatus = 2;
                  if (c === e._rootLoader) {
                    h("Loader.Progress", "rootLoader");
                    try {
                      l.dispatchEvent(new g.ProgressEvent(g.ProgressEvent.PROGRESS, !1, !1, l.bytesLoaded, l.bytesTotal));
                    } catch (k) {
                      console.warn("caught error under loaderInfo PROGRESS event:", k);
                    }
                    f();
                  }
                }
                if (2 === c._loadStatus && l.bytesLoaded === l.bytesTotal) {
                  a.splice(b--, 1);
                  c._loadStatus = 3;
                  h("Loader.Complete");
                  try {
                    l.dispatchEvent(g.Event.getInstance(g.Event.COMPLETE));
                  } catch (n) {
                    console.warn("caught error under loaderInfo COMPLETE event: ", n);
                  }
                  f();
                }
              }
            };
            e.processLateEvents = function() {
              for (var a = e._loadQueue, b = 0;b < a.length;b++) {
                var c = a[b], d = c._contentLoaderInfo, l = c._queuedLoadUpdate, m = d._bytesTotal;
                if (l && m || 1 === c._loadStatus) {
                  c._queuedLoadUpdate = null;
                  if (0 === c._loadStatus) {
                    if (0 === c._loadingType) {
                      h("Loader.Open");
                      try {
                        d.dispatchEvent(g.Event.getInstance(g.Event.OPEN));
                      } catch (r) {
                        console.warn("caught error under loaderInfo OPEN event: ", r);
                      }
                      f();
                    }
                    h("Loader.Progress");
                    try {
                      d.dispatchEvent(new g.ProgressEvent(g.ProgressEvent.PROGRESS, !1, !1, 0, m));
                    } catch (k) {
                      console.warn("caught error under loaderInfo PROGRESS event: ", k);
                    }
                    f();
                    c._loadStatus = 1;
                  }
                  if (l) {
                    c._applyLoadUpdate(l);
                    h("Loader.Progress");
                    try {
                      d.dispatchEvent(new g.ProgressEvent(g.ProgressEvent.PROGRESS, !1, !1, l.bytesLoaded, m));
                    } catch (n) {
                      console.warn("caught error under loaderInfo PROGRESS event: ", n);
                    }
                    f();
                  }
                }
              }
            };
            e.prototype._setStage = function(a) {
              this._stage = a;
            };
            e.prototype._initFrame = function(a) {
            };
            e.prototype._constructFrame = function() {
              this === e.getRootLoader() && this._content ? (w.DisplayObject._advancableInstances.remove(this), this._children[0] = this._content, this._constructChildren(), this._children.length = 0) : this._constructChildren();
            };
            e.prototype.addChild = function(a) {
              u("IllegalOperationError", k.Errors.InvalidLoaderMethodError);
              return null;
            };
            e.prototype.addChildAt = function(a, b) {
              u("IllegalOperationError", k.Errors.InvalidLoaderMethodError);
              return null;
            };
            e.prototype.removeChild = function(a) {
              u("IllegalOperationError", k.Errors.InvalidLoaderMethodError);
              return null;
            };
            e.prototype.removeChildAt = function(a) {
              u("IllegalOperationError", k.Errors.InvalidLoaderMethodError);
              return null;
            };
            e.prototype.setChildIndex = function(a, b) {
              u("IllegalOperationError", k.Errors.InvalidLoaderMethodError);
            };
            e.prototype._describeData = function(a) {
              var b = [], e;
              for (e in a) {
                b.push(e + ":" + d.StringUtilities.toSafeString(a[e]));
              }
              return "{" + b.join(", ") + "}";
            };
            Object.defineProperty(e.prototype, "content", {get:function() {
              return 0 === this._loadStatus ? null : this._content;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(e.prototype, "contentLoaderInfo", {get:function() {
              return this._contentLoaderInfo;
            }, enumerable:!0, configurable:!0});
            e.prototype._getJPEGLoaderContextdeblockingfilter = function(b) {
              return a.system.JPEGLoaderContext.isType(b) ? b.deblockingFilter : 0;
            };
            Object.defineProperty(e.prototype, "uncaughtErrorEvents", {get:function() {
              v("public flash.display.Loader::uncaughtErrorEvents");
              this._uncaughtErrorEvents || (this._uncaughtErrorEvents = new g.UncaughtErrorEvents);
              return this._uncaughtErrorEvents;
            }, enumerable:!0, configurable:!0});
            e.prototype._canLoadSWFFromDomain = function(a) {
              a = d.FileLoadingService.instance.resolveUrl(a);
              return c.instance.globals["Shumway.Player.Utils"].checkDomainForSWFLoading(a);
            };
            e.prototype.load = function(a, b) {
              this.close();
              this._contentLoaderInfo._url = a.url;
              this._applyLoaderContext(b);
              this._loadingType = 0;
              this._fileLoader = new q(this);
              Promise.resolve(void 0).then(function(a, b) {
                this._canLoadSWFFromDomain(b.url) ? a.loadFile(b) : console.error("Loading of " + b.url + " was rejected based on allowDomain heuristic.");
              }.bind(this, this._fileLoader, a._toFileRequest()));
              this._queuedLoadUpdate = null;
              e._loadQueue.push(this);
            };
            e.prototype.loadBytes = function(a, b) {
              this.close();
              this._contentLoaderInfo._url = (this.loaderInfo ? this.loaderInfo._url : "") + "/[[DYNAMIC]]/" + ++e._embeddedContentLoadCount;
              this._applyLoaderContext(b);
              this._loadingType = 1;
              this._fileLoader = new q(this);
              this._queuedLoadUpdate = null;
              this._fileLoader.loadBytes(new Uint8Array(a.bytes, 0, a.length));
              e._loadQueue.push(this);
            };
            e.prototype.close = function() {
              var a = e._loadQueue.indexOf(this);
              -1 < a && e._loadQueue.splice(a, 1);
              this._contentLoaderInfo.reset();
              this._fileLoader && (this._fileLoader = null);
            };
            e.prototype._unload = function(a, b) {
              2 > this._loadStatus ? this._loadStatus = 0 : (this.close(), this._content = null, this._contentLoaderInfo._loader = null, this._loadStatus = 0, this.dispatchEvent(g.Event.getInstance(g.Event.UNLOAD)));
            };
            e.prototype.unload = function() {
              this._unload(!1, !1);
            };
            e.prototype.unloadAndStop = function(a) {
              this._unload(!0, !!a);
            };
            e.prototype._applyLoaderContext = function(b) {
              var e = {};
              if (b && b.parameters) {
                var c = b.parameters, f;
                for (f in c) {
                  var g = c[f];
                  d.isString(g) || u("IllegalOperationError", k.Errors.ObjectWithStringsParamError, "LoaderContext.parameters");
                  e[f] = g;
                }
              }
              b && b.applicationDomain && (b = new a.system.ApplicationDomain(a.system.ApplicationDomain.currentDomain), this._contentLoaderInfo._applicationDomain = b);
              this._contentLoaderInfo._parameters = e;
            };
            e.prototype.onLoadOpen = function(a) {
              this._contentLoaderInfo.setFile(a);
            };
            e.prototype.onLoadProgress = function(a) {
              this._queuedLoadUpdate = a;
            };
            e.prototype.onNewEagerlyParsedSymbols = function(a, b) {
              for (var e = [], c = a.length - b;c < a.length;c++) {
                var f = this._contentLoaderInfo.getSymbolById(a[c].id);
                f.ready || e.push(f.resolveAssetPromise.promise);
              }
              return Promise.all(e);
            };
            e.prototype.onImageBytesLoaded = function() {
              var a = this._contentLoaderInfo._file, a = {id:-1, data:a.data, mimeType:a.mimeType, dataType:a.type, type:"image"}, b = w.BitmapSymbol.FromData(a);
              this._imageSymbol = b;
              c.instance.globals["Shumway.Player.Utils"].registerImage(b, a);
            };
            e.prototype._applyDecodedImage = function(b) {
              b = b.createSharedInstance();
              this._content = new a.display.Bitmap(b);
              this._contentLoaderInfo._width = 20 * this._content.width;
              this._contentLoaderInfo._height = 20 * this._content.height;
              this.addTimelineObjectAtDepth(this._content, 0);
            };
            e.prototype._applyLoadUpdate = function(b) {
              var e = this._contentLoaderInfo;
              e._bytesLoaded = b.bytesLoaded;
              var f = e._file;
              if (f instanceof m && 0 !== f.framesLoaded) {
                if (e._allowCodeExecution) {
                  var d = c.instance.applicationDomain, g = f.abcBlocks.length;
                  if (0 < g - e._abcBlocksLoaded) {
                    for (b = e._abcBlocksLoaded;b < g;b++) {
                      var h = f.abcBlocks[b], l = new t(h.data, h.name);
                      l.env.loaderInfo = e;
                      h.flags ? d.loadAbc(l) : d.executeAbc(l);
                    }
                    e._abcBlocksLoaded = g;
                  }
                  g = f.symbolClassesList.length;
                  if (0 < g - e._mappedSymbolsLoaded) {
                    for (b = e._mappedSymbolsLoaded;b < g;b++) {
                      h = f.symbolClassesList[b], l = d.getClass(h.className), Object.defineProperty(l, "defaultInitializerArgument", {get:e.getSymbolResolver(l, h.id), configurable:!0});
                    }
                    e._mappedSymbolsLoaded = g;
                  }
                }
                if (inFirefox && (d = f.fonts.length, 0 < d - e._fontsLoaded)) {
                  for (b = e._fontsLoaded;b < d;b++) {
                    a.text.Font.registerEmbeddedFont(f.fonts[b], e);
                  }
                  e._fontsLoaded = d;
                }
                d = e.getRootSymbol();
                g = f.framesLoaded - d.frames.length;
                if (0 !== g) {
                  for ((b = this._content) || (b = this.createContentRoot(d, f.sceneAndFrameLabelData)), f = b, b = 0;b < g;b++) {
                    h = e.getFrame(null, d.frames.length), f._addFrame(h);
                  }
                }
              }
            };
            e.prototype.onLoadComplete = function() {
            };
            e.prototype.onLoadError = function() {
            };
            e.prototype._addScenesToMovieClip = function(a, b, e) {
              if (b) {
                for (var c = [], f = b.scenes, d = 0;d < f.length;d++) {
                  c.push({offset:f[d].offset, name:f[d].name});
                }
                c.sort(function(a, b) {
                  return a.offset - b.offset;
                });
                var g = c.length, h, l;
                0 < g && 0 < c[0].offset && (h = c[0].offset, l = Math.min(h, e), a.addScene("Scene 0", [], 0, l));
                d = 0;
                for (g = c.length;d < g;d++) {
                  var m = c[d];
                  h = m.offset;
                  if (h >= e) {
                    break;
                  }
                  l = d < g - 1 ? Math.min(f[d + 1].offset, e) : e;
                  a.addScene(m.name, [], h, l - h);
                }
                b = b.labels;
                for (d = 0;d < b.length;d++) {
                  e = b[d], a.addFrameLabel(e.name, e.frame + 1);
                }
              } else {
                a.addScene("Scene 1", [], 0, e);
              }
            };
            e.prototype.createContentRoot = function(b, c) {
              b.isAVM1Object && this._initAvm1(b);
              var f = b.symbolClass.initializeFrom(b);
              a.display.DisplayObject._instanceID--;
              f._name = this === e._rootLoader ? "root1" : "instance" + this._contentID;
              w.MovieClip.isType(f) && this._addScenesToMovieClip(f, c, b.numFrames);
              var d = this._contentLoaderInfo;
              f._loaderInfo = d;
              var g = f;
              d.actionScriptVersion === l.ACTIONSCRIPT2 ? f = this._initAvm1Root(f) : this === e.getRootLoader() && (w.MovieClip.frameNavigationModel = 10 > d.swfVersion ? 9 : 10);
              this._content = f;
              this === e.getRootLoader() ? (e.runtimeStartTime = Date.now(), this._stage.setRoot(f)) : this.addTimelineObjectAtDepth(f, 0);
              return g;
            };
            e.prototype._initAvm1 = function(a) {
              var b = this._contentLoaderInfo, c;
              this.loaderInfo && this.loaderInfo._avm1Context ? c = b._avm1Context = this.loaderInfo._avm1Context : (d.AVM1.Lib.installObjectMethods(), c = d.AVM1.AVM1Context.create(b), b._avm1Context = c, this === e.getRootLoader() && (c.globals.Key._bind(this._stage, c), c.globals.Mouse._bind(this._stage, c), w.MovieClip.frameNavigationModel = 1));
              a.avm1Context = c;
            };
            e.prototype._initAvm1Root = function(b) {
              var e = this._contentLoaderInfo._avm1Context, c = d.AVM1.Lib.getAVM1Object(b, e);
              if (this.loaderInfo && this.loaderInfo._avm1Context) {
                return c.context = this.loaderInfo._avm1Context, b;
              }
              e.root = c;
              b.addEventListener("frameConstructed", e.flushPendingScripts.bind(e), !1, Number.MAX_VALUE);
              b = new a.display.AVM1Movie(b);
              var e = this._contentLoaderInfo._parameters, f;
              for (f in e) {
                f in c || (c[f] = e[f]);
              }
              return b;
            };
            e.classInitializer = function() {
              e._rootLoader = null;
              e._loadQueue = [];
              e.runtimeStartTime = 0;
              e._embeddedContentLoadCount = 0;
            };
            e.initializer = function() {
              w.DisplayObject._advancableInstances.push(this);
            };
            e.classSymbols = null;
            e.instanceSymbols = null;
            return e;
          }(a.display.DisplayObjectContainer);
          w.Loader = b;
        })(a.display || (a.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(w) {
          var v = d.Debug.notImplemented, u = d.Debug.somewhatImplemented, l = d.SWF.SWFFile, c = function(c) {
            function q(c) {
              c !== q.CtorToken && throwError("ArgumentError", k.Errors.CantInstantiateError, "LoaderInfo$");
              a.events.EventDispatcher.instanceConstructorNoInitialize.call(this);
              this._loader = null;
              this._loaderUrl = "";
              this.reset();
            }
            __extends(q, c);
            q.prototype.reset = function() {
              this._url = "";
              this._file = null;
              this._bytesTotal = this._bytesLoaded = 0;
              this._parameters = this._applicationDomain = null;
              this._height = this._width = 0;
              this._uncaughtErrorEvents = this._bytes = this._content = this._childSandboxBridge = this._parentSandboxBridge = this._sharedEvents = null;
              this._allowCodeExecution = !0;
              this._dictionary = [];
              this._fontsLoaded = this._mappedSymbolsLoaded = this._abcBlocksLoaded = 0;
              this._avm1Context = null;
            };
            q.prototype.setFile = function(a) {
              this._file = a;
              this._bytesTotal = a.bytesTotal;
              a instanceof l && (a = a.bounds, this._width = a.xMax - a.xMin, this._height = a.yMax - a.yMin);
            };
            q.getLoaderInfoByDefinition = function(a) {
              v("public flash.display.LoaderInfo::static getLoaderInfoByDefinition");
            };
            Object.defineProperty(q.prototype, "loaderURL", {get:function() {
              if (!this._loader) {
                var a = d.AVM2.Runtime.AVM2.instance.globals["Shumway.Player.Utils"];
                return this._url === a.swfUrl && a.loaderUrl || this._url;
              }
              return this._loaderUrl;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "url", {get:function() {
              return this._file ? this._url : null;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "isURLInaccessible", {get:function() {
              u("public flash.display.LoaderInfo::get isURLInaccessible");
              return this._file ? !1 : !0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "bytesLoaded", {get:function() {
              return this._bytesLoaded;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "bytesTotal", {get:function() {
              return this._bytesTotal;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "applicationDomain", {get:function() {
              u("public flash.display.LoaderInfo::get applicationDomain");
              return this._file ? a.system.ApplicationDomain.currentDomain : null;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "swfVersion", {get:function() {
              this._file || throwError("Error", k.Errors.LoadingObjectNotInitializedError);
              this._file instanceof l || throwError("Error", k.Errors.LoadingObjectNotSWFError);
              return this._file.swfVersion;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "actionScriptVersion", {get:function() {
              this._file || throwError("Error", k.Errors.LoadingObjectNotInitializedError);
              this._file instanceof l || throwError("Error", k.Errors.LoadingObjectNotSWFError);
              return this._file.useAVM1 ? w.ActionScriptVersion.ACTIONSCRIPT2 : w.ActionScriptVersion.ACTIONSCRIPT3;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "frameRate", {get:function() {
              this._file || throwError("Error", k.Errors.LoadingObjectNotInitializedError);
              this._file instanceof l || throwError("Error", k.Errors.LoadingObjectNotSWFError);
              return this._file.frameRate;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "width", {get:function() {
              this._file || throwError("Error", k.Errors.LoadingObjectNotInitializedError);
              return this._width / 20 | 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "height", {get:function() {
              this._file || throwError("Error", k.Errors.LoadingObjectNotInitializedError);
              return this._height / 20 | 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "contentType", {get:function() {
              return this._file ? this._file instanceof d.ImageFile ? this._file.mimeType : "application/x-shockwave-flash" : null;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "sharedEvents", {get:function() {
              u("public flash.display.LoaderInfo::get sharedEvents");
              this._sharedEvents || (this._sharedEvents = new a.events.EventDispatcher);
              return this._sharedEvents;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "parentSandboxBridge", {get:function() {
              u("public flash.display.LoaderInfo::get parentSandboxBridge");
              return this._parentSandboxBridge;
            }, set:function(a) {
              u("public flash.display.LoaderInfo::set parentSandboxBridge");
              this._parentSandboxBridge = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "childSandboxBridge", {get:function() {
              u("public flash.display.LoaderInfo::get childSandboxBridge");
              return this._childSandboxBridge;
            }, set:function(a) {
              u("public flash.display.LoaderInfo::set childSandboxBridge");
              this._childSandboxBridge = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "sameDomain", {get:function() {
              this._file || throwError("Error", k.Errors.LoadingObjectNotInitializedError);
              u("public flash.display.LoaderInfo::get sameDomain");
              return !0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "childAllowsParent", {get:function() {
              this._file || throwError("Error", k.Errors.LoadingObjectNotInitializedError);
              u("public flash.display.LoaderInfo::get childAllowsParent");
              return !0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "parentAllowsChild", {get:function() {
              this._file || throwError("Error", k.Errors.LoadingObjectNotInitializedError);
              u("public flash.display.LoaderInfo::get parentAllowsChild");
              return !0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "loader", {get:function() {
              return this._loader;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "content", {get:function() {
              return this._loader && this._loader.content;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "bytes", {get:function() {
              if (!this._file) {
                return new a.utils.ByteArray;
              }
              v("public flash.display.LoaderInfo::get bytes");
              return null;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "parameters", {get:function() {
              u("public flash.display.LoaderInfo::get parameters");
              return this._parameters ? d.ObjectUtilities.cloneObject(this._parameters) : {};
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "uncaughtErrorEvents", {get:function() {
              u("public flash.display.LoaderInfo::_getUncaughtErrorEvents");
              this._uncaughtErrorEvents || (this._uncaughtErrorEvents = new a.events.UncaughtErrorEvents);
              return this._uncaughtErrorEvents;
            }, enumerable:!0, configurable:!0});
            q.prototype.getSymbolResolver = function(a, c) {
              return this.resolveClassSymbol.bind(this, a, c);
            };
            q.prototype.getSymbolById = function(c) {
              var g = this._dictionary[c];
              if (g) {
                return !1 === g.ready ? null : g;
              }
              var h = this._file.getSymbol(c);
              if (!h) {
                return null;
              }
              switch(h.type) {
                case "shape":
                  g = a.display.ShapeSymbol.FromData(h, this);
                  break;
                case "morphshape":
                  g = a.display.MorphShapeSymbol.FromData(h, this);
                  break;
                case "image":
                  h.definition && (h = h.definition);
                  g = a.display.BitmapSymbol.FromData(h);
                  break;
                case "label":
                  g = a.text.TextSymbol.FromLabelData(h, this);
                  break;
                case "text":
                  g = a.text.TextSymbol.FromTextData(h, this);
                  this._syncAVM1Attributes(g);
                  break;
                case "button":
                  g = a.display.ButtonSymbol.FromData(h, this);
                  this._syncAVM1Attributes(g);
                  break;
                case "sprite":
                  g = a.display.SpriteSymbol.FromData(h, this);
                  break;
                case "font":
                  h.definition && (h = h.definition);
                  var g = a.text.FontSymbol.FromData(h), f = a.text.Font.initializeFrom(g);
                  a.text.Font.instanceConstructorNoInitialize.call(f);
                  break;
                case "sound":
                  g = a.media.SoundSymbol.FromData(h);
                  break;
                case "binary":
                  g = d.Timeline.BinarySymbol.FromData(h);
              }
              this._dictionary[c] = g;
              !1 === g.ready && this._registerFontOrImage(g, h);
              return g;
            };
            q.prototype._registerFontOrImage = function(a, c) {
              var d = k.Runtime.AVM2.instance.globals["Shumway.Player.Utils"];
              switch(c.type) {
                case "font":
                  d.registerFont(a, c);
                  break;
                case "image":
                  d.registerImage(a, c);
                  break;
                default:
                  throw Error("Unsupported assert type: " + c.type);;
              }
            };
            q.prototype.getRootSymbol = function() {
              var c = this._dictionary[0];
              c || (c = new a.display.SpriteSymbol({id:0, className:this._file.symbolClassesMap[0]}, this), c.isRoot = !0, c.numFrames = this._file.frameCount, this._syncAVM1Attributes(c), this._dictionary[0] = c);
              return c;
            };
            q.prototype._syncAVM1Attributes = function(a) {
              this.actionScriptVersion === w.ActionScriptVersion.ACTIONSCRIPT2 && (a.isAVM1Object = !0, a.avm1Context = this._avm1Context);
            };
            q.prototype.getFrame = function(a, c) {
              var d = this._file;
              a || (a = d);
              return a.frames[c];
            };
            q.prototype.resolveClassSymbol = function(a, c) {
              var d = this.getSymbolById(c);
              if (d) {
                return Object.defineProperty(a, "defaultInitializerArgument", {value:d}), d;
              }
            };
            q.classInitializer = null;
            q.initializer = null;
            q.classSymbols = null;
            q.instanceSymbols = null;
            q.CtorToken = {};
            return q;
          }(a.events.EventDispatcher);
          w.LoaderInfo = c;
        })(a.display || (a.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(a) {
        (function(d) {
          var k = function(a) {
            function l() {
              d.DisplayObject.instanceConstructorNoInitialize.call(this);
            }
            __extends(l, a);
            l.prototype._canHaveGraphics = function() {
              return !0;
            };
            l.prototype._getGraphics = function() {
              return this._graphics;
            };
            Object.defineProperty(l.prototype, "graphics", {get:function() {
              return this._ensureGraphics();
            }, enumerable:!0, configurable:!0});
            l.prototype._containsPointDirectly = function(a, d, l, k) {
              return (l = this._getGraphics()) && l._containsPoint(a, d, !0, this._ratio / 65535);
            };
            l.classSymbols = null;
            l.instanceSymbols = null;
            l.classInitializer = null;
            l.initializer = function(a) {
              this._graphics = null;
              a && this._setStaticContentFromSymbol(a);
              this._setFlags(32768);
            };
            return l;
          }(a.display.DisplayObject);
          d.MorphShape = k;
          k = function(d) {
            function l(c) {
              d.call(this, c, a.display.MorphShape);
            }
            __extends(l, d);
            l.FromData = function(c, d) {
              var k = new l(c);
              k._setBoundsFromData(c);
              k.graphics = a.display.Graphics.FromData(c);
              k.processRequires(c.require, d);
              k.morphFillBounds = c.morphFillBounds;
              k.morphLineBounds = c.morphLineBounds;
              return k;
            };
            return l;
          }(a.display.ShapeSymbol);
          d.MorphShapeSymbol = k;
        })(a.display || (a.display = {}));
      })(a.flash || (a.flash = {}));
    })(d.AS || (d.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(a) {
        (function(d) {
          var k = function(d) {
            function l() {
              a.events.EventDispatcher.instanceConstructorNoInitialize.call(this);
            }
            __extends(l, d);
            l.classInitializer = null;
            l.initializer = null;
            l.classSymbols = null;
            l.instanceSymbols = null;
            return l;
          }(a.events.EventDispatcher);
          d.NativeMenu = k;
        })(a.display || (a.display = {}));
      })(a.flash || (a.flash = {}));
    })(d.AS || (d.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.Debug.somewhatImplemented, u = function(d) {
            function c() {
              a.events.EventDispatcher.instanceConstructorNoInitialize.call(this);
              this._enabled = !0;
            }
            __extends(c, d);
            Object.defineProperty(c.prototype, "enabled", {get:function() {
              v("public flash.display.NativeMenuItem::get enabled");
              return this._enabled;
            }, set:function(a) {
              a = !!a;
              v("public flash.display.NativeMenuItem::set enabled");
              this._enabled = a;
            }, enumerable:!0, configurable:!0});
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.events.EventDispatcher);
          k.NativeMenuItem = u;
        })(a.display || (a.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c(a) {
              n("public flash.display.PNGEncoderOptions");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.ASNative);
          k.PNGEncoderOptions = u;
        })(k.display || (k.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.display.PixelSnapping");
            }
            __extends(c, a);
            c.fromNumber = function(a) {
              switch(a) {
                case 0:
                  return c.NEVER;
                case 1:
                  return c.ALWAYS;
                case 2:
                  return c.AUTO;
                default:
                  return null;
              }
            };
            c.toNumber = function(a) {
              switch(a) {
                case c.NEVER:
                  return 0;
                case c.ALWAYS:
                  return 1;
                case c.AUTO:
                  return 2;
                default:
                  return -1;
              }
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.NEVER = "never";
            c.ALWAYS = "always";
            c.AUTO = "auto";
            return c;
          }(a.ASNative);
          k.PixelSnapping = u;
        })(k.display || (k.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.display.SWFVersion");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.FLASH1 = 1;
            c.FLASH2 = 2;
            c.FLASH3 = 3;
            c.FLASH4 = 4;
            c.FLASH5 = 5;
            c.FLASH6 = 6;
            c.FLASH7 = 7;
            c.FLASH8 = 8;
            c.FLASH9 = 9;
            c.FLASH10 = 10;
            c.FLASH11 = 11;
            c.FLASH12 = 12;
            return c;
          }(a.ASNative);
          k.SWFVersion = u;
        })(k.display || (k.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.AVM2.Runtime.asCoerceString, u = function(a) {
            function c(a, c, d, l) {
              this._name = n(a);
              this._labels = c;
              this.offset = d;
              this._numFrames = l | 0;
            }
            __extends(c, a);
            Object.defineProperty(c.prototype, "name", {get:function() {
              return this._name;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "labels", {get:function() {
              return this._labels;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "numFrames", {get:function() {
              return this._numFrames;
            }, enumerable:!0, configurable:!0});
            c.prototype.clone = function() {
              var a = this._labels.map(function(a) {
                return a.clone();
              });
              return new c(this._name, a, this.offset, this._numFrames);
            };
            c.prototype.getLabelByName = function(a, c) {
              c && (a = a.toLowerCase());
              for (var d = this._labels, l = 0;l < d.length;l++) {
                var h = d[l];
                if (c ? h.name.toLowerCase() === a : h.name === a) {
                  return h;
                }
              }
              return null;
            };
            c.prototype.getLabelByFrame = function(a) {
              for (var c = this._labels, d = 0;d < c.length;d++) {
                var l = c[d];
                if (l.frame === a) {
                  return l;
                }
              }
              return null;
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.ASNative);
          k.Scene = u;
        })(k.display || (k.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.display.StageAlign");
            }
            __extends(c, a);
            c.fromNumber = function(a) {
              if (0 === a) {
                return "";
              }
              var c = "";
              a & 1 && (c += "T");
              a & 2 && (c += "B");
              a & 4 && (c += "L");
              a & 8 && (c += "R");
              return c;
            };
            c.toNumber = function(a) {
              var c = 0;
              a = a.toUpperCase();
              0 <= a.indexOf("T") && (c |= 1);
              0 <= a.indexOf("B") && (c |= 2);
              0 <= a.indexOf("L") && (c |= 4);
              0 <= a.indexOf("R") && (c |= 8);
              return c;
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.TOP = "T";
            c.LEFT = "L";
            c.BOTTOM = "B";
            c.RIGHT = "R";
            c.TOP_LEFT = "TL";
            c.TOP_RIGHT = "TR";
            c.BOTTOM_LEFT = "BL";
            c.BOTTOM_RIGHT = "BR";
            return c;
          }(a.ASNative);
          k.StageAlign = u;
        })(k.display || (k.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.display.StageDisplayState");
            }
            __extends(c, a);
            c.fromNumber = function(a) {
              switch(a) {
                case 0:
                  return c.FULL_SCREEN;
                case 1:
                  return c.FULL_SCREEN_INTERACTIVE;
                case 2:
                  return c.NORMAL;
                default:
                  return null;
              }
            };
            c.toNumber = function(a) {
              switch(a) {
                case c.FULL_SCREEN:
                  return 0;
                case c.FULL_SCREEN_INTERACTIVE:
                  return 1;
                case c.NORMAL:
                  return 2;
                default:
                  return -1;
              }
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.FULL_SCREEN = "fullScreen";
            c.FULL_SCREEN_INTERACTIVE = "fullScreenInteractive";
            c.NORMAL = "normal";
            return c;
          }(a.ASNative);
          k.StageDisplayState = u;
        })(k.display || (k.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.display.StageQuality");
            }
            __extends(c, a);
            c.fromNumber = function(a) {
              switch(a) {
                case 0:
                  return c.LOW;
                case 1:
                  return c.MEDIUM;
                case 2:
                  return c.HIGH;
                case 3:
                  return c.BEST;
                case 4:
                  return c.HIGH_8X8;
                case 5:
                  return c.HIGH_8X8_LINEAR;
                case 6:
                  return c.HIGH_16X16;
                case 7:
                  return c.HIGH_16X16_LINEAR;
                default:
                  return null;
              }
            };
            c.toNumber = function(a) {
              switch(a) {
                case c.LOW:
                  return 0;
                case c.MEDIUM:
                  return 1;
                case c.HIGH:
                  return 2;
                case c.BEST:
                  return 3;
                case c.HIGH_8X8:
                  return 4;
                case c.HIGH_8X8_LINEAR:
                  return 5;
                case c.HIGH_16X16:
                  return 6;
                case c.HIGH_16X16_LINEAR:
                  return 7;
                default:
                  return -1;
              }
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.LOW = "low";
            c.MEDIUM = "medium";
            c.HIGH = "high";
            c.BEST = "best";
            c.HIGH_8X8 = "8x8";
            c.HIGH_8X8_LINEAR = "8x8linear";
            c.HIGH_16X16 = "16x16";
            c.HIGH_16X16_LINEAR = "16x16linear";
            return c;
          }(a.ASNative);
          k.StageQuality = u;
        })(k.display || (k.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.display.StageScaleMode");
            }
            __extends(c, a);
            c.fromNumber = function(a) {
              switch(a) {
                case 0:
                  return c.SHOW_ALL;
                case 1:
                  return c.EXACT_FIT;
                case 2:
                  return c.NO_BORDER;
                case 4:
                  return c.NO_SCALE;
                default:
                  return null;
              }
            };
            c.toNumber = function(a) {
              switch(a.toLowerCase()) {
                case c.SHOW_ALL_LOWERCASE:
                  return 0;
                case c.EXACT_FIT_LOWERCASE:
                  return 1;
                case c.NO_BORDER_LOWERCASE:
                  return 2;
                case c.NO_SCALE_LOWERCASE:
                  return 4;
                default:
                  return -1;
              }
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.SHOW_ALL = "showAll";
            c.EXACT_FIT = "exactFit";
            c.NO_BORDER = "noBorder";
            c.NO_SCALE = "noScale";
            c.SHOW_ALL_LOWERCASE = "showall";
            c.EXACT_FIT_LOWERCASE = "exactfit";
            c.NO_BORDER_LOWERCASE = "noborder";
            c.NO_SCALE_LOWERCASE = "noscale";
            return c;
          }(a.ASNative);
          k.StageScaleMode = u;
        })(k.display || (k.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.display.TriangleCulling");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.NONE = "none";
            c.POSITIVE = "positive";
            c.NEGATIVE = "negative";
            return c;
          }(a.ASNative);
          k.TriangleCulling = u;
        })(k.display || (k.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.Debug.notImplemented, u = function(d) {
            function c(c) {
              a.display.DisplayObject.instanceConstructorNoInitialize.call(this);
              this._children = [];
              this._children[0] = this._content = c;
              c._setParent(this, 0);
              this._setDirtyFlags(2097152);
              this._invalidateFillAndLineBounds(!0, !0);
              k.DisplayObject._advancableInstances.push(this);
              this._constructed = !1;
            }
            __extends(c, d);
            c.prototype.call = function(a) {
              v("AVM1Movie#call");
            };
            c.prototype.addCallback = function(a, c) {
              v("AVM1Movie#call");
            };
            c.prototype._addFrame = function(a) {
              this._content._addFrame(a);
            };
            c.prototype._initFrame = function(a) {
            };
            c.prototype._constructFrame = function() {
              this._constructed || (this._constructed = !0, k.DisplayObjectContainer.prototype._constructChildren.call(this));
              this._content._constructFrame();
            };
            c.prototype._enqueueFrameScripts = function() {
              this._removeFlags(16384);
              this._content._enqueueFrameScripts();
            };
            c.prototype._propagateFlagsDown = function(a) {
              this._hasFlags(a) || (this._setFlags(a), this._content._propagateFlagsDown(a));
            };
            c.prototype._containsPoint = function(a, c, d, l, h, f) {
              return 3 === h ? this._content._containsPoint(a, c, d, l, h, f) : 0 === h && this._getContentBounds().contains(d, l) ? 1 : 0;
            };
            c.prototype._getChildBounds = function(a, c) {
              var d = this._content._getContentBounds(c).clone();
              this._getConcatenatedMatrix().transformBounds(d);
              a.unionInPlace(d);
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.display.DisplayObject);
          k.AVM1Movie = u;
        })(a.display || (a.display = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = d.AVM2.Runtime.asCoerceString, l = function(a) {
            function d(a, c) {
              void 0 === a && (a = "");
              u(a);
              n("public flash.errors.IllegalOperationError");
            }
            __extends(d, a);
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(a.ASError);
          k.IllegalOperationError = l;
        })(k.errors || (k.errors = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = d.AVM2.Runtime.asCoerceString, l = d.AVM2.Runtime.forEachPublicProperty, c = d.ExternalInterfaceService, g = function(d) {
            function g() {
              n("public flash.external.ExternalInterface");
            }
            __extends(g, d);
            g._getAvailable = function() {
              return c.instance.enabled;
            };
            g._initJS = function() {
              g.initialized || (g.initialized = !0, c.instance.initJS(g._callIn));
            };
            g._callIn = function(c, d) {
              var f = g.registeredCallbacks[c];
              if (f) {
                return f(c, a.ASJSON.transformJSValueToAS(d, !0));
              }
            };
            g._getPropNames = function(a) {
              var c = [];
              l(a, function(a) {
                c.push(a);
              }, null);
              return c;
            };
            g._addCallback = function(a, d) {
              c.instance.registerCallback(a);
              g.registeredCallbacks[a] = d;
            };
            g._evalJS = function(a) {
              a = u(a);
              return c.instance.eval(a);
            };
            g._callOut = function(a) {
              a = u(a);
              return c.instance.call(a);
            };
            Object.defineProperty(g, "available", {get:function() {
              return g._getAvailable();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g, "objectID", {get:function() {
              return c.instance.getId();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g, "activeX", {get:function() {
              return !1;
            }, enumerable:!0, configurable:!0});
            g.classInitializer = null;
            g.initializer = null;
            g.classSymbols = null;
            g.instanceSymbols = null;
            g.initialized = !1;
            g.registeredCallbacks = Object.create(null);
            return g;
          }(a.ASNative);
          k.ExternalInterface = g;
        })(k.external || (k.external = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(d) {
        (function(d) {
          var k = function(a) {
            function d() {
            }
            __extends(d, a);
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.LOW = 1;
            d.MEDIUM = 2;
            d.HIGH = 3;
            return d;
          }(a.ASNative);
          d.BitmapFilterQuality = k;
        })(d.filters || (d.filters = {}));
      })(a.flash || (a.flash = {}));
    })(d.AS || (d.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(d) {
        (function(d) {
          var k = function(a) {
            function d() {
            }
            __extends(d, a);
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.INNER = "inner";
            d.OUTER = "outer";
            d.FULL = "full";
            return d;
          }(a.ASNative);
          d.BitmapFilterType = k;
        })(d.filters || (d.filters = {}));
      })(a.flash || (a.flash = {}));
    })(d.AS || (d.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = function(a) {
            function d() {
            }
            __extends(d, a);
            d._updateBlurBounds = function(a, g, k, n, m) {
              void 0 === m && (m = !1);
              n = d.blurFilterStepWidths[n - 1];
              m && (m = n / 4, g -= m, k -= m);
              a.inflate(Math.ceil((1 > g ? 1 : g) * n), Math.ceil((1 > k ? 1 : k) * n));
            };
            d.prototype._updateFilterBounds = function(a) {
            };
            d.prototype._serialize = function(a) {
              a.writeInt(-1);
            };
            d.prototype.clone = function() {
              return null;
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.EPS = 1E-9;
            d.blurFilterStepWidths = [.5, 1.05, 1.35, 1.55, 1.75, 1.9, 2, 2.1, 2.2, 2.3, 2.5, 3, 3, 3.5, 3.5];
            return d;
          }(a.ASNative);
          k.BitmapFilter = n;
          n = function() {
            function a() {
            }
            a.sanitize = function(a, c, g) {
              if (d.isNullOrUndefined(a) || 0 === a.length) {
                this.colors = [], this.alphas = [], this.ratios = [];
              } else {
                var k;
                d.isNullOrUndefined(g) ? (this.colors = this.sanitizeColors(a), k = this.colors.length, this.ratios = this.initArray(k), d.isNullOrUndefined(c) ? this.alphas = this.initArray(k) : this.alphas = this.sanitizeAlphas(c, k, k, 1)) : 0 === g.length ? (this.colors = [], this.alphas = [], this.ratios = []) : (k = Math.min(a.length, g.length, 16), this.colors = this.sanitizeColors(a, k), this.ratios = this.sanitizeRatios(g, k), d.isNullOrUndefined(c) ? this.alphas = this.initArray(k) : this.alphas = 
                this.sanitizeAlphas(c, k, k, 1));
              }
            };
            a.sanitizeColors = function(a, c) {
              void 0 === c && (c = 16);
              for (var d = [], k = 0, n = Math.min(a.length, c);k < n;k++) {
                d[k] = a[k] >>> 0 & 16777215;
              }
              return d;
            };
            a.sanitizeAlphas = function(a, c, g, k) {
              void 0 === c && (c = 16);
              void 0 === g && (g = 0);
              void 0 === k && (k = 0);
              var n = [], m = 0;
              for (c = Math.min(a.length, c);m < c;m++) {
                n[m] = d.NumberUtilities.clamp(+a[m], 0, 1);
              }
              for (;m < g;) {
                n[m++] = k;
              }
              return n;
            };
            a.sanitizeRatios = function(a, c, g) {
              var k;
              void 0 === c && (c = 16);
              void 0 === g && (g = 0);
              void 0 === k && (k = 0);
              var n = [], m = 0;
              for (c = Math.min(a.length, c);m < c;m++) {
                n[m] = d.NumberUtilities.clamp(+a[m], 0, 255);
              }
              for (;m < g;) {
                n[m++] = k;
              }
              return n;
            };
            a.initArray = function(a) {
              var c;
              void 0 === c && (c = 0);
              for (var d = Array(a), k = 0;k < a;k++) {
                d[k] = c;
              }
              return d;
            };
            return a;
          }();
          k.GradientArrays = n;
        })(k.filters || (k.filters = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(w) {
          var v = d.AVM2.Runtime.asCoerceString, u = function(l) {
            function c(a, c, d, l, h, f, b, e, r, p, k, n) {
              void 0 === a && (a = 4);
              void 0 === c && (c = 45);
              void 0 === d && (d = 16777215);
              void 0 === l && (l = 1);
              void 0 === h && (h = 0);
              void 0 === f && (f = 1);
              void 0 === b && (b = 4);
              void 0 === e && (e = 4);
              void 0 === r && (r = 1);
              void 0 === p && (p = 1);
              void 0 === k && (k = "inner");
              void 0 === n && (n = !1);
              this.distance = a;
              this.angle = c;
              this.highlightColor = d;
              this.highlightAlpha = l;
              this.shadowColor = h;
              this.shadowAlpha = f;
              this.blurX = b;
              this.blurY = e;
              this.strength = r;
              this.quality = p;
              this.type = k;
              this.knockout = n;
            }
            __extends(c, l);
            c.FromUntyped = function(d) {
              var l = d.highlightColor >>> 8, k = (d.highlightColor & 255) / 255, m = d.colors[0] >>> 8, h = (d.colors[0] & 255) / 255, f = a.filters.BitmapFilterType.OUTER;
              d.onTop ? f = a.filters.BitmapFilterType.FULL : d.inner && (f = a.filters.BitmapFilterType.INNER);
              return new c(d.distance, 180 * d.angle / Math.PI, l, k, m, h, d.blurX, d.blurY, d.strength, d.quality, f, d.knockout);
            };
            c.prototype._updateFilterBounds = function(a) {
              if (this.type !== w.BitmapFilterType.INNER && (w.BitmapFilter._updateBlurBounds(a, this._blurX, this._blurY, this._quality), 0 !== this._distance)) {
                var c = this._angle * Math.PI / 180;
                a.x += Math.floor(Math.cos(c) * this._distance);
                a.y += Math.floor(Math.sin(c) * this._distance);
                0 < a.left && (a.left = 0);
                0 < a.top && (a.top = 0);
              }
            };
            Object.defineProperty(c.prototype, "distance", {get:function() {
              return this._distance;
            }, set:function(a) {
              this._distance = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "angle", {get:function() {
              return this._angle;
            }, set:function(a) {
              this._angle = +a % 360;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "highlightColor", {get:function() {
              return this._highlightColor;
            }, set:function(a) {
              this._highlightColor = a >>> 0 & 16777215;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "highlightAlpha", {get:function() {
              return this._highlightAlpha;
            }, set:function(a) {
              this._highlightAlpha = d.NumberUtilities.clamp(+a, 0, 1);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "shadowColor", {get:function() {
              return this._shadowColor;
            }, set:function(a) {
              this._shadowColor = a >>> 0 & 16777215;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "shadowAlpha", {get:function() {
              return this._shadowAlpha;
            }, set:function(a) {
              this._shadowAlpha = d.NumberUtilities.clamp(+a, 0, 1);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "blurX", {get:function() {
              return this._blurX;
            }, set:function(a) {
              this._blurX = d.NumberUtilities.clamp(+a, 0, 255);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "blurY", {get:function() {
              return this._blurY;
            }, set:function(a) {
              this._blurY = d.NumberUtilities.clamp(+a, 0, 255);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "knockout", {get:function() {
              return this._knockout;
            }, set:function(a) {
              this._knockout = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "quality", {get:function() {
              return this._quality;
            }, set:function(a) {
              this._quality = d.NumberUtilities.clamp(a | 0, 0, 15);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "strength", {get:function() {
              return this._strength;
            }, set:function(a) {
              this._strength = d.NumberUtilities.clamp(+a, 0, 255);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "type", {get:function() {
              return this._type;
            }, set:function(a) {
              a = v(a);
              null === a ? k.Runtime.throwError("TypeError", k.Errors.NullPointerError, "type") : this._type = a === w.BitmapFilterType.INNER || a === w.BitmapFilterType.OUTER ? a : w.BitmapFilterType.FULL;
            }, enumerable:!0, configurable:!0});
            c.prototype.clone = function() {
              return new c(this._distance, this._angle, this._highlightColor, this._highlightAlpha, this._shadowColor, this._shadowAlpha, this._blurX, this._blurY, this._strength, this._quality, this._type, this._knockout);
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.filters.BitmapFilter);
          w.BevelFilter = u;
        })(a.filters || (a.filters = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = function(a) {
            function l(a, d, l) {
              void 0 === a && (a = 4);
              void 0 === d && (d = 4);
              void 0 === l && (l = 1);
              this.blurX = a;
              this.blurY = d;
              this.quality = l;
            }
            __extends(l, a);
            l.FromUntyped = function(a) {
              return new l(a.blurX, a.blurY, a.quality);
            };
            l.prototype._updateFilterBounds = function(a) {
              k.BitmapFilter._updateBlurBounds(a, this._blurX, this._blurY, this._quality, !0);
            };
            l.prototype._serialize = function(a) {
              a.ensureAdditionalCapacity(16);
              a.writeIntUnsafe(1);
              a.writeFloatUnsafe(this._blurX);
              a.writeFloatUnsafe(this._blurY);
              a.writeIntUnsafe(this._quality);
            };
            Object.defineProperty(l.prototype, "blurX", {get:function() {
              return this._blurX;
            }, set:function(a) {
              this._blurX = d.NumberUtilities.clamp(+a, 0, 255);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "blurY", {get:function() {
              return this._blurY;
            }, set:function(a) {
              this._blurY = d.NumberUtilities.clamp(+a, 0, 255);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "quality", {get:function() {
              return this._quality;
            }, set:function(a) {
              this._quality = d.NumberUtilities.clamp(a | 0, 0, 15);
            }, enumerable:!0, configurable:!0});
            l.prototype.clone = function() {
              return new l(this._blurX, this._blurY, this._quality);
            };
            l.classInitializer = null;
            l.initializer = null;
            l.classSymbols = null;
            l.instanceSymbols = null;
            return l;
          }(a.filters.BitmapFilter);
          k.BlurFilter = v;
        })(a.filters || (a.filters = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(w) {
          var v = function(a) {
            function l(a) {
              void 0 === a && (a = null);
              a ? this.matrix = a : this._matrix = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0];
            }
            __extends(l, a);
            l.FromUntyped = function(a) {
              return new l(a.matrix);
            };
            l.prototype._serialize = function(a) {
              var d = this._matrix;
              a.ensureAdditionalCapacity(4 * (d.length + 1));
              a.writeIntUnsafe(6);
              for (var l = 0;l < d.length;l++) {
                a.writeFloatUnsafe(d[l]);
              }
            };
            Object.defineProperty(l.prototype, "matrix", {get:function() {
              return this._matrix.concat();
            }, set:function(a) {
              if (d.isNullOrUndefined(a)) {
                k.Runtime.throwError("TypeError", k.Errors.NullPointerError, "matrix");
              } else {
                for (var g = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], l = 0, n = Math.min(a.length, 20);l < n;l++) {
                  g[l] = d.toNumber(a[l]);
                }
                this._matrix = g;
              }
            }, enumerable:!0, configurable:!0});
            l.prototype.clone = function() {
              return new l(this.matrix);
            };
            l.classInitializer = null;
            l.initializer = null;
            l.classSymbols = null;
            l.instanceSymbols = null;
            return l;
          }(a.filters.BitmapFilter);
          w.ColorMatrixFilter = v;
        })(a.filters || (a.filters = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(w) {
          var v = function(a) {
            function l(a, d, l, k, m, h, f, b, e) {
              void 0 === a && (a = 0);
              void 0 === d && (d = 0);
              void 0 === l && (l = null);
              void 0 === k && (k = 1);
              void 0 === m && (m = 0);
              void 0 === h && (h = !0);
              void 0 === f && (f = !0);
              void 0 === b && (b = 0);
              void 0 === e && (e = 0);
              this.matrixX = a;
              this.matrixY = d;
              l ? this.matrix = l : this._matrix = this._expandArray([], this._matrixX * this._matrixY);
              this.divisor = k;
              this.bias = m;
              this.preserveAlpha = h;
              this.clamp = f;
              this.color = b;
              this.alpha = e;
            }
            __extends(l, a);
            l.FromUntyped = function(a) {
              return new l(a.matrixX, a.matrixY, a.matrix, a.divisor, a.bias, a.preserveAlpha, a.clamp, a.color >>> 8, (a.color & 255) / 255);
            };
            l.prototype._expandArray = function(a, d) {
              if (a) {
                for (var l = a.length;l < d;) {
                  a[l++] = 0;
                }
              }
              return a;
            };
            Object.defineProperty(l.prototype, "matrix", {get:function() {
              return this._matrix.slice(0, this._matrixX * this._matrixY);
            }, set:function(a) {
              if (d.isNullOrUndefined(a)) {
                k.Runtime.throwError("TypeError", k.Errors.NullPointerError, "matrix");
              } else {
                for (var g = this._matrixX * this._matrixY, l = Math.min(a.length, g), n = Array(l), m = 0;m < l;m++) {
                  n[m] = d.toNumber(a[m]);
                }
                this._expandArray(n, g);
                this._matrix = n;
              }
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "matrixX", {get:function() {
              return this._matrixX;
            }, set:function(a) {
              a = d.NumberUtilities.clamp(+a, 0, 15) | 0;
              this._matrixX !== a && (this._matrixX = a, this._expandArray(this._matrix, a * this._matrixY));
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "matrixY", {get:function() {
              return this._matrixY;
            }, set:function(a) {
              a = d.NumberUtilities.clamp(+a, 0, 15) | 0;
              this._matrixY !== a && (this._matrixY = a, this._expandArray(this._matrix, a * this._matrixX));
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "divisor", {get:function() {
              return this._divisor;
            }, set:function(a) {
              this._divisor = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "bias", {get:function() {
              return this._bias;
            }, set:function(a) {
              this._bias = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "preserveAlpha", {get:function() {
              return this._preserveAlpha;
            }, set:function(a) {
              this._preserveAlpha = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "clamp", {get:function() {
              return this._clamp;
            }, set:function(a) {
              this._clamp = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "color", {get:function() {
              return this._color;
            }, set:function(a) {
              this._color = a >>> 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "alpha", {get:function() {
              return this._alpha;
            }, set:function(a) {
              this._alpha = d.NumberUtilities.clamp(+a, 0, 1);
            }, enumerable:!0, configurable:!0});
            l.prototype.clone = function() {
              return new l(this._matrixX, this._matrixY, this.matrix, this._divisor, this._bias, this._preserveAlpha, this._clamp, this._color, this._alpha);
            };
            l.classInitializer = null;
            l.initializer = null;
            l.classSymbols = null;
            l.instanceSymbols = null;
            return l;
          }(a.filters.BitmapFilter);
          w.ConvolutionFilter = v;
        })(a.filters || (a.filters = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.filters.DisplacementMapFilterMode");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.WRAP = "wrap";
            c.CLAMP = "clamp";
            c.IGNORE = "ignore";
            c.COLOR = "color";
            return c;
          }(a.ASNative);
          k.DisplacementMapFilterMode = u;
        })(k.filters || (k.filters = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.Debug.somewhatImplemented, u = d.AVM2.Runtime.asCoerceString, l = function(a) {
            function d(a, c, g, h, f, b, e, l, p) {
              void 0 === a && (a = null);
              void 0 === c && (c = null);
              void 0 === g && (g = 0);
              void 0 === h && (h = 0);
              void 0 === f && (f = 0);
              void 0 === b && (b = 0);
              void 0 === e && (e = "wrap");
              void 0 === l && (l = 0);
              void 0 === p && (p = 0);
              this.mapBitmap = a;
              this.mapPoint = c;
              this.componentX = g;
              this.componentY = h;
              this.scaleX = f;
              this.scaleY = b;
              this.mode = e;
              this.color = l;
              this.alpha = p;
            }
            __extends(d, a);
            d.FromUntyped = function(a) {
              return new d(a.mapBitmap, a.mapPoint, a.componentX, a.componentY, a.scaleX, a.scaleY, a.mode, a.color, a.alpha);
            };
            Object.defineProperty(d.prototype, "mapBitmap", {get:function() {
              v("public flash.filters.DisplacementMapFilter::get mapBitmap");
              return this._mapBitmap;
            }, set:function(a) {
              v("public flash.filters.DisplacementMapFilter::set mapBitmap");
              this._mapBitmap = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "mapPoint", {get:function() {
              v("public flash.filters.DisplacementMapFilter::get mapPoint");
              return this._mapPoint;
            }, set:function(a) {
              v("public flash.filters.DisplacementMapFilter::set mapPoint");
              this._mapPoint = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "componentX", {get:function() {
              return this._componentX;
            }, set:function(a) {
              v("public flash.filters.DisplacementMapFilter::set componentX");
              this._componentX = a >>> 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "componentY", {get:function() {
              return this._componentY;
            }, set:function(a) {
              v("public flash.filters.DisplacementMapFilter::set componentY");
              this._componentY = a >>> 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "scaleX", {get:function() {
              return this._scaleX;
            }, set:function(a) {
              v("public flash.filters.DisplacementMapFilter::set scaleX");
              this._scaleX = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "scaleY", {get:function() {
              return this._scaleY;
            }, set:function(a) {
              v("public flash.filters.DisplacementMapFilter::set scaleY");
              this._scaleY = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "mode", {get:function() {
              return this._mode;
            }, set:function(a) {
              v("public flash.filters.DisplacementMapFilter::set mode");
              this._mode = u(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "color", {get:function() {
              return this._color;
            }, set:function(a) {
              v("public flash.filters.DisplacementMapFilter::set color");
              this._color = a >>> 0 & 16777215;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "alpha", {get:function() {
              return this._alpha;
            }, set:function(a) {
              v("public flash.filters.DisplacementMapFilter::set alpha");
              this._alpha = +a;
            }, enumerable:!0, configurable:!0});
            d.prototype.clone = function() {
              return new d(this._mapBitmap, this._mapPoint, this._componentX, this._componentY, this._scaleX, this._scaleY, this._mode, this._color, this._alpha);
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(a.filters.BitmapFilter);
          k.DisplacementMapFilter = l;
        })(a.filters || (a.filters = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = function(a) {
            function l(a, d, l, k, m, h, f, b, e, r, p) {
              void 0 === a && (a = 4);
              void 0 === d && (d = 45);
              void 0 === l && (l = 0);
              void 0 === k && (k = 1);
              void 0 === m && (m = 4);
              void 0 === h && (h = 4);
              void 0 === f && (f = 1);
              void 0 === b && (b = 1);
              void 0 === e && (e = !1);
              void 0 === r && (r = !1);
              void 0 === p && (p = !1);
              this.distance = a;
              this.angle = d;
              this.color = l;
              this.alpha = k;
              this.blurX = m;
              this.blurY = h;
              this.strength = f;
              this.quality = b;
              this.inner = e;
              this.knockout = r;
              this.hideObject = p;
            }
            __extends(l, a);
            l.FromUntyped = function(a) {
              return new l(a.distance, 180 * a.angle / Math.PI, a.colors[0] >>> 8, (a.colors[0] & 255) / 255, a.blurX, a.blurY, a.strength, a.quality, a.inner, a.knockout, !a.compositeSource);
            };
            l.prototype._updateFilterBounds = function(a) {
              if (!this.inner && (k.BitmapFilter._updateBlurBounds(a, this._blurX, this._blurY, this._quality), 0 !== this._distance)) {
                var d = this._angle * Math.PI / 180;
                a.x += Math.floor(Math.cos(d) * this._distance);
                a.y += Math.floor(Math.sin(d) * this._distance);
                0 < a.left && (a.left = 0);
                0 < a.top && (a.top = 0);
              }
            };
            Object.defineProperty(l.prototype, "distance", {get:function() {
              return this._distance;
            }, set:function(a) {
              this._distance = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "angle", {get:function() {
              return this._angle;
            }, set:function(a) {
              this._angle = +a % 360;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "color", {get:function() {
              return this._color;
            }, set:function(a) {
              this._color = a >>> 0 & 16777215;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "alpha", {get:function() {
              return this._alpha;
            }, set:function(a) {
              this._alpha = d.NumberUtilities.clamp(+a, 0, 1);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "blurX", {get:function() {
              return this._blurX;
            }, set:function(a) {
              this._blurX = d.NumberUtilities.clamp(+a, 0, 255);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "blurY", {get:function() {
              return this._blurY;
            }, set:function(a) {
              this._blurY = d.NumberUtilities.clamp(+a, 0, 255);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "hideObject", {get:function() {
              return this._hideObject;
            }, set:function(a) {
              this._hideObject = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "inner", {get:function() {
              return this._inner;
            }, set:function(a) {
              this._inner = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "knockout", {get:function() {
              return this._knockout;
            }, set:function(a) {
              this._knockout = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "quality", {get:function() {
              return this._quality;
            }, set:function(a) {
              this._quality = d.NumberUtilities.clamp(a | 0, 0, 15);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "strength", {get:function() {
              return this._strength;
            }, set:function(a) {
              this._strength = d.NumberUtilities.clamp(+a, 0, 255);
            }, enumerable:!0, configurable:!0});
            l.prototype.clone = function() {
              return new l(this._distance, this._angle, this._color, this._alpha, this._blurX, this._blurY, this._strength, this._quality, this._inner, this._knockout, this._hideObject);
            };
            l.classInitializer = null;
            l.initializer = null;
            l.classSymbols = null;
            l.instanceSymbols = null;
            return l;
          }(a.filters.BitmapFilter);
          k.DropShadowFilter = v;
        })(a.filters || (a.filters = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = function(a) {
            function l(a, d, l, k, m, h, f, b) {
              void 0 === a && (a = 16711680);
              void 0 === d && (d = 1);
              void 0 === l && (l = 6);
              void 0 === k && (k = 6);
              void 0 === m && (m = 2);
              void 0 === h && (h = 1);
              void 0 === f && (f = !1);
              void 0 === b && (b = !1);
              this.color = a;
              this.alpha = d;
              this.blurX = l;
              this.blurY = k;
              this.strength = m;
              this.quality = h;
              this.inner = f;
              this.knockout = b;
            }
            __extends(l, a);
            l.FromUntyped = function(a) {
              return new l(a.colors[0] >>> 8, (a.colors[0] & 255) / 255, a.blurX, a.blurY, a.strength, a.quality, a.inner, a.knockout);
            };
            l.prototype._updateFilterBounds = function(a) {
              k.BitmapFilter._updateBlurBounds(a, this._blurX, this._blurY, this._quality);
            };
            Object.defineProperty(l.prototype, "color", {get:function() {
              return this._color;
            }, set:function(a) {
              this._color = a >>> 0 & 16777215;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "alpha", {get:function() {
              return this._alpha;
            }, set:function(a) {
              this._alpha = d.NumberUtilities.clamp(+a, 0, 1);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "blurX", {get:function() {
              return this._blurX;
            }, set:function(a) {
              this._blurX = d.NumberUtilities.clamp(+a, 0, 255);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "blurY", {get:function() {
              return this._blurY;
            }, set:function(a) {
              this._blurY = d.NumberUtilities.clamp(+a, 0, 255);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "inner", {get:function() {
              return this._inner;
            }, set:function(a) {
              this._inner = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "knockout", {get:function() {
              return this._knockout;
            }, set:function(a) {
              this._knockout = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "quality", {get:function() {
              return this._quality;
            }, set:function(a) {
              this._quality = d.NumberUtilities.clamp(a | 0, 0, 15);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "strength", {get:function() {
              return this._strength;
            }, set:function(a) {
              this._strength = d.NumberUtilities.clamp(+a, 0, 255);
            }, enumerable:!0, configurable:!0});
            l.prototype.clone = function() {
              return new l(this._color, this._alpha, this._blurX, this._blurY, this._strength, this._quality, this._inner, this._knockout);
            };
            l.classInitializer = null;
            l.initializer = null;
            l.classSymbols = null;
            l.instanceSymbols = null;
            return l;
          }(a.filters.BitmapFilter);
          k.GlowFilter = v;
        })(a.filters || (a.filters = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(w) {
          var v = d.AVM2.Runtime.asCoerceString, u = function(l) {
            function c(a, c, d, l, h, f, b, e, r, p, k) {
              void 0 === a && (a = 4);
              void 0 === c && (c = 45);
              void 0 === d && (d = null);
              void 0 === l && (l = null);
              void 0 === h && (h = null);
              void 0 === f && (f = 4);
              void 0 === b && (b = 4);
              void 0 === e && (e = 1);
              void 0 === r && (r = 1);
              void 0 === p && (p = "inner");
              void 0 === k && (k = !1);
              this.distance = a;
              this.angle = c;
              w.GradientArrays.sanitize(d, l, h);
              this._colors = w.GradientArrays.colors;
              this._alphas = w.GradientArrays.alphas;
              this._ratios = w.GradientArrays.ratios;
              this.blurX = f;
              this.blurY = b;
              this.strength = e;
              this.quality = r;
              this.type = p;
              this.knockout = k;
            }
            __extends(c, l);
            c.FromUntyped = function(d) {
              for (var l = [], k = [], m = 0;m < d.colors.length;m++) {
                var h = d.colors[m];
                l.push(h >>> 8);
                k.push(h & 255) / 255;
              }
              m = a.filters.BitmapFilterType.OUTER;
              d.onTop ? m = a.filters.BitmapFilterType.FULL : d.inner && (m = a.filters.BitmapFilterType.INNER);
              return new c(d.distance, 180 * d.angle / Math.PI, l, k, d.ratios, d.blurX, d.blurY, d.strength, d.quality, m, d.knockout);
            };
            c.prototype._updateFilterBounds = function(a) {
              if (this.type !== w.BitmapFilterType.INNER && (w.BitmapFilter._updateBlurBounds(a, this._blurX, this._blurY, this._quality), 0 !== this._distance)) {
                var c = this._angle * Math.PI / 180;
                a.x += Math.floor(Math.cos(c) * this._distance);
                a.y += Math.floor(Math.sin(c) * this._distance);
                0 < a.left && (a.left = 0);
                0 < a.top && (a.top = 0);
              }
            };
            Object.defineProperty(c.prototype, "distance", {get:function() {
              return this._distance;
            }, set:function(a) {
              this._distance = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "angle", {get:function() {
              return this._angle;
            }, set:function(a) {
              this._angle = +a % 360;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "colors", {get:function() {
              return this._colors.concat();
            }, set:function(a) {
              d.isNullOrUndefined(a) ? k.Runtime.throwError("TypeError", k.Errors.NullPointerError, "colors") : (this._colors = w.GradientArrays.sanitizeColors(a), a = this._colors.length, this._alphas = w.GradientArrays.sanitizeAlphas(this._alphas, a, a), this._ratios = w.GradientArrays.sanitizeRatios(this._ratios, a, a));
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "alphas", {get:function() {
              return this._alphas.concat();
            }, set:function(a) {
              d.isNullOrUndefined(a) ? k.Runtime.throwError("TypeError", k.Errors.NullPointerError, "alphas") : (w.GradientArrays.sanitize(this._colors, a, this._ratios), this._colors = w.GradientArrays.colors, this._alphas = w.GradientArrays.alphas, this._ratios = w.GradientArrays.ratios);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "ratios", {get:function() {
              return this._ratios.concat();
            }, set:function(a) {
              d.isNullOrUndefined(a) ? k.Runtime.throwError("TypeError", k.Errors.NullPointerError, "ratios") : (w.GradientArrays.sanitize(this._colors, this._alphas, a), this._colors = w.GradientArrays.colors, this._alphas = w.GradientArrays.alphas, this._ratios = w.GradientArrays.ratios);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "blurX", {get:function() {
              return this._blurX;
            }, set:function(a) {
              this._blurX = d.NumberUtilities.clamp(+a, 0, 255);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "blurY", {get:function() {
              return this._blurY;
            }, set:function(a) {
              this._blurY = d.NumberUtilities.clamp(+a, 0, 255);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "knockout", {get:function() {
              return this._knockout;
            }, set:function(a) {
              this._knockout = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "quality", {get:function() {
              return this._quality;
            }, set:function(a) {
              this._quality = d.NumberUtilities.clamp(a | 0, 0, 15);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "strength", {get:function() {
              return this._strength;
            }, set:function(a) {
              this._strength = d.NumberUtilities.clamp(+a, 0, 255);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "type", {get:function() {
              return this._type;
            }, set:function(a) {
              a = v(a);
              null === a ? k.Runtime.throwError("TypeError", k.Errors.NullPointerError, "type") : this._type = a === w.BitmapFilterType.INNER || a === w.BitmapFilterType.OUTER ? a : w.BitmapFilterType.FULL;
            }, enumerable:!0, configurable:!0});
            c.prototype.clone = function() {
              return new c(this._distance, this._angle, this._colors, this._alphas, this._ratios, this._blurX, this._blurY, this._strength, this._quality, this._type, this._knockout);
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.filters.BitmapFilter);
          w.GradientBevelFilter = u;
        })(a.filters || (a.filters = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(w) {
          var v = d.AVM2.Runtime.asCoerceString, u = function(l) {
            function c(a, c, d, l, h, f, b, e, k, p, n) {
              void 0 === a && (a = 4);
              void 0 === c && (c = 45);
              void 0 === d && (d = null);
              void 0 === l && (l = null);
              void 0 === h && (h = null);
              void 0 === f && (f = 4);
              void 0 === b && (b = 4);
              void 0 === e && (e = 1);
              void 0 === k && (k = 1);
              void 0 === p && (p = "inner");
              void 0 === n && (n = !1);
              this.distance = a;
              this.angle = c;
              w.GradientArrays.sanitize(d, l, h);
              this._colors = w.GradientArrays.colors;
              this._alphas = w.GradientArrays.alphas;
              this._ratios = w.GradientArrays.ratios;
              this.blurX = f;
              this.blurY = b;
              this.strength = e;
              this.quality = k;
              this.type = p;
              this.knockout = n;
            }
            __extends(c, l);
            c.FromUntyped = function(d) {
              for (var l = [], k = [], m = 0;m < d.colors.length;m++) {
                var h = d.colors[m];
                l.push(h >>> 8);
                k.push(h & 255) / 255;
              }
              m = a.filters.BitmapFilterType.OUTER;
              d.onTop ? m = a.filters.BitmapFilterType.FULL : d.inner && (m = a.filters.BitmapFilterType.INNER);
              return new c(d.distance, 180 * d.angle / Math.PI, l, k, d.ratios, d.blurX, d.blurY, d.strength, d.quality, m, d.knockout);
            };
            c.prototype._updateFilterBounds = function(a) {
              if (this.type !== w.BitmapFilterType.INNER && (w.BitmapFilter._updateBlurBounds(a, this._blurX, this._blurY, this._quality), 0 !== this._distance)) {
                var c = this._angle * Math.PI / 180;
                a.x += Math.floor(Math.cos(c) * this._distance);
                a.y += Math.floor(Math.sin(c) * this._distance);
                0 < a.left && (a.left = 0);
                0 < a.top && (a.top = 0);
              }
            };
            Object.defineProperty(c.prototype, "distance", {get:function() {
              return this._distance;
            }, set:function(a) {
              this._distance = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "angle", {get:function() {
              return this._angle;
            }, set:function(a) {
              this._angle = +a % 360;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "colors", {get:function() {
              return this._colors.concat();
            }, set:function(a) {
              d.isNullOrUndefined(a) ? k.Runtime.throwError("TypeError", k.Errors.NullPointerError, "colors") : (this._colors = w.GradientArrays.sanitizeColors(a), a = this._colors.length, this._alphas = w.GradientArrays.sanitizeAlphas(this._alphas, a, a), this._ratios = w.GradientArrays.sanitizeRatios(this._ratios, a, a));
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "alphas", {get:function() {
              return this._alphas.concat();
            }, set:function(a) {
              d.isNullOrUndefined(a) ? k.Runtime.throwError("TypeError", k.Errors.NullPointerError, "alphas") : (w.GradientArrays.sanitize(this._colors, a, this._ratios), this._colors = w.GradientArrays.colors, this._alphas = w.GradientArrays.alphas, this._ratios = w.GradientArrays.ratios);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "ratios", {get:function() {
              return this._ratios.concat();
            }, set:function(a) {
              d.isNullOrUndefined(a) ? k.Runtime.throwError("TypeError", k.Errors.NullPointerError, "ratios") : (w.GradientArrays.sanitize(this._colors, this._alphas, a), this._colors = w.GradientArrays.colors, this._alphas = w.GradientArrays.alphas, this._ratios = w.GradientArrays.ratios);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "blurX", {get:function() {
              return this._blurX;
            }, set:function(a) {
              this._blurX = d.NumberUtilities.clamp(+a, 0, 255);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "blurY", {get:function() {
              return this._blurY;
            }, set:function(a) {
              this._blurY = d.NumberUtilities.clamp(+a, 0, 255);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "knockout", {get:function() {
              return this._knockout;
            }, set:function(a) {
              this._knockout = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "quality", {get:function() {
              return this._quality;
            }, set:function(a) {
              this._quality = d.NumberUtilities.clamp(a | 0, 0, 15);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "strength", {get:function() {
              return this._strength;
            }, set:function(a) {
              this._strength = d.NumberUtilities.clamp(+a, 0, 255);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "type", {get:function() {
              return this._type;
            }, set:function(a) {
              a = v(a);
              null === a ? k.Runtime.throwError("TypeError", k.Errors.NullPointerError, "type") : this._type = a === w.BitmapFilterType.INNER || a === w.BitmapFilterType.OUTER ? a : w.BitmapFilterType.FULL;
            }, enumerable:!0, configurable:!0});
            c.prototype.clone = function() {
              return new c(this._distance, this._angle, this._colors, this._alphas, this._ratios, this._blurX, this._blurY, this._strength, this._quality, this._type, this._knockout);
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.filters.BitmapFilter);
          w.GradientGlowFilter = u;
        })(a.filters || (a.filters = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.IntegerUtilities.toS16, u = d.IntegerUtilities.clampS8U8, l = function(a) {
            function d(a, c, g, h, f, b, e, l) {
              void 0 === a && (a = 1);
              void 0 === c && (c = 1);
              void 0 === g && (g = 1);
              void 0 === h && (h = 1);
              void 0 === f && (f = 0);
              void 0 === b && (b = 0);
              void 0 === e && (e = 0);
              void 0 === l && (l = 0);
              this.redMultiplier = +a;
              this.greenMultiplier = +c;
              this.blueMultiplier = +g;
              this.alphaMultiplier = +h;
              this.redOffset = +f;
              this.greenOffset = +b;
              this.blueOffset = +e;
              this.alphaOffset = +l;
            }
            __extends(d, a);
            Object.defineProperty(d.prototype, "native_redMultiplier", {get:function() {
              return this.redMultiplier;
            }, set:function(a) {
              this.redMultiplier = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "native_greenMultiplier", {get:function() {
              return this.greenMultiplier;
            }, set:function(a) {
              this.greenMultiplier = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "native_blueMultiplier", {get:function() {
              return this.blueMultiplier;
            }, set:function(a) {
              this.blueMultiplier = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "native_alphaMultiplier", {get:function() {
              return this.alphaMultiplier;
            }, set:function(a) {
              this.alphaMultiplier = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "native_redOffset", {get:function() {
              return this.redOffset;
            }, set:function(a) {
              this.redOffset = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "native_greenOffset", {get:function() {
              return this.greenOffset;
            }, set:function(a) {
              this.greenOffset = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "native_blueOffset", {get:function() {
              return this.blueOffset;
            }, set:function(a) {
              this.blueOffset = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "native_alphaOffset", {get:function() {
              return this.alphaOffset;
            }, set:function(a) {
              this.alphaOffset = +a;
            }, enumerable:!0, configurable:!0});
            d.prototype.ColorTransform = function(a, c, d, h, f, b, e, g) {
              void 0 === a && (a = 1);
              void 0 === c && (c = 1);
              void 0 === d && (d = 1);
              void 0 === h && (h = 1);
              void 0 === f && (f = 0);
              void 0 === b && (b = 0);
              void 0 === e && (e = 0);
              void 0 === g && (g = 0);
              this.redMultiplier = a;
              this.greenMultiplier = c;
              this.blueMultiplier = d;
              this.alphaMultiplier = h;
              this.redOffset = f;
              this.greenOffset = b;
              this.blueOffset = e;
              this.alphaOffset = g;
            };
            Object.defineProperty(d.prototype, "color", {get:function() {
              return this.redOffset << 16 | this.greenOffset << 8 | this.blueOffset;
            }, set:function(a) {
              this.redOffset = a >> 16 & 255;
              this.greenOffset = a >> 8 & 255;
              this.blueOffset = a & 255;
              this.redMultiplier = this.greenMultiplier = this.blueMultiplier = 1;
            }, enumerable:!0, configurable:!0});
            d.prototype.concat = function(a) {
              this.redMultiplier *= a.redMultiplier;
              this.greenMultiplier *= a.greenMultiplier;
              this.blueMultiplier *= a.blueMultiplier;
              this.alphaMultiplier *= a.alphaMultiplier;
              this.redOffset += a.redOffset;
              this.greenOffset += a.greenOffset;
              this.blueOffset += a.blueOffset;
              this.alphaOffset += a.alphaOffset;
            };
            d.prototype.preMultiply = function(a) {
              this.redOffset += a.redOffset * this.redMultiplier;
              this.greenOffset += a.greenOffset * this.greenMultiplier;
              this.blueOffset += a.blueOffset * this.blueMultiplier;
              this.alphaOffset += a.alphaOffset * this.alphaMultiplier;
              this.redMultiplier *= a.redMultiplier;
              this.greenMultiplier *= a.greenMultiplier;
              this.blueMultiplier *= a.blueMultiplier;
              this.alphaMultiplier *= a.alphaMultiplier;
            };
            d.prototype.copyFrom = function(a) {
              this.redMultiplier = a.redMultiplier;
              this.greenMultiplier = a.greenMultiplier;
              this.blueMultiplier = a.blueMultiplier;
              this.alphaMultiplier = a.alphaMultiplier;
              this.redOffset = a.redOffset;
              this.greenOffset = a.greenOffset;
              this.blueOffset = a.blueOffset;
              this.alphaOffset = a.alphaOffset;
            };
            d.prototype.copyFromUntyped = function(a) {
              this.redMultiplier = a.redMultiplier / 256;
              this.greenMultiplier = a.greenMultiplier / 256;
              this.blueMultiplier = a.blueMultiplier / 256;
              this.alphaMultiplier = a.alphaMultiplier / 256;
              this.redOffset = a.redOffset;
              this.greenOffset = a.greenOffset;
              this.blueOffset = a.blueOffset;
              this.alphaOffset = a.alphaOffset;
            };
            d.prototype.setTo = function(a, c, d, h, f, b, e, g) {
              this.redMultiplier = a;
              this.greenMultiplier = c;
              this.blueMultiplier = d;
              this.alphaMultiplier = h;
              this.redOffset = f;
              this.greenOffset = b;
              this.blueOffset = e;
              this.alphaOffset = g;
            };
            d.prototype.clone = function() {
              return new d(this.redMultiplier, this.greenMultiplier, this.blueMultiplier, this.alphaMultiplier, this.redOffset, this.greenOffset, this.blueOffset, this.alphaOffset);
            };
            d.prototype.convertToFixedPoint = function() {
              this.redMultiplier = u(this.redMultiplier);
              this.greenMultiplier = u(this.greenMultiplier);
              this.blueMultiplier = u(this.blueMultiplier);
              this.alphaMultiplier = u(this.alphaMultiplier);
              this.redOffset = n(this.redOffset);
              this.greenOffset = n(this.greenOffset);
              this.blueOffset = n(this.blueOffset);
              this.alphaOffset = n(this.alphaOffset);
            };
            d.prototype.toString = function() {
              return "(redMultiplier=" + this.redMultiplier + ", greenMultiplier=" + this.greenMultiplier + ", blueMultiplier=" + this.blueMultiplier + ", alphaMultiplier=" + this.alphaMultiplier + ", redOffset=" + this.redOffset + ", greenOffset=" + this.greenOffset + ", blueOffset=" + this.blueOffset + ", alphaOffset=" + this.alphaOffset + ")";
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.FROZEN_IDENTITY_COLOR_TRANSFORM = Object.freeze(new d);
            d.TEMP_COLOR_TRANSFORM = new d;
            return d;
          }(a.ASNative);
          k.ColorTransform = l;
        })(k.geom || (k.geom = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.Debug.notImplemented, u = d.Debug.dummyConstructor, l = d.AVM2.Runtime.asCoerceString, c = function(a) {
            function c() {
              u("public flash.media.Camera");
            }
            __extends(c, a);
            Object.defineProperty(c.prototype, "names", {get:function() {
              v("public flash.media.Camera::get names");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "isSupported", {get:function() {
              v("public flash.media.Camera::get isSupported");
            }, enumerable:!0, configurable:!0});
            c.getCamera = function(a) {
              void 0 === a && (a = null);
              l(a);
              v("public flash.media.Camera::static getCamera");
            };
            c._scanHardware = function() {
              v("public flash.media.Camera::static _scanHardware");
            };
            Object.defineProperty(c.prototype, "activityLevel", {get:function() {
              v("public flash.media.Camera::get activityLevel");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "bandwidth", {get:function() {
              v("public flash.media.Camera::get bandwidth");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "currentFPS", {get:function() {
              v("public flash.media.Camera::get currentFPS");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "fps", {get:function() {
              v("public flash.media.Camera::get fps");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "height", {get:function() {
              v("public flash.media.Camera::get height");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "index", {get:function() {
              v("public flash.media.Camera::get index");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "keyFrameInterval", {get:function() {
              v("public flash.media.Camera::get keyFrameInterval");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "loopback", {get:function() {
              v("public flash.media.Camera::get loopback");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "motionLevel", {get:function() {
              v("public flash.media.Camera::get motionLevel");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "motionTimeout", {get:function() {
              v("public flash.media.Camera::get motionTimeout");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "muted", {get:function() {
              v("public flash.media.Camera::get muted");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "name", {get:function() {
              v("public flash.media.Camera::get name");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "position", {get:function() {
              v("public flash.media.Camera::get position");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "quality", {get:function() {
              v("public flash.media.Camera::get quality");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "width", {get:function() {
              v("public flash.media.Camera::get width");
            }, enumerable:!0, configurable:!0});
            c.prototype.setCursor = function(a) {
              v("public flash.media.Camera::setCursor");
            };
            c.prototype.setKeyFrameInterval = function(a) {
              v("public flash.media.Camera::setKeyFrameInterval");
            };
            c.prototype.setLoopback = function(a) {
              v("public flash.media.Camera::setLoopback");
            };
            c.prototype.setMode = function(a, c, d, f) {
              v("public flash.media.Camera::setMode");
            };
            c.prototype.setMotionLevel = function(a, c) {
              v("public flash.media.Camera::setMotionLevel");
            };
            c.prototype.setQuality = function(a, c) {
              v("public flash.media.Camera::setQuality");
            };
            c.prototype.drawToBitmapData = function(a) {
              v("public flash.media.Camera::drawToBitmapData");
            };
            c.prototype.copyToByteArray = function(a, c) {
              v("public flash.media.Camera::copyToByteArray");
            };
            c.prototype.copyToVector = function(a, c) {
              v("public flash.media.Camera::copyToVector");
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.events.EventDispatcher);
          k.Camera = c;
        })(a.media || (a.media = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.media.ID3Info");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = "songName artist album year comment genre track".split(" ");
            return c;
          }(a.ASNative);
          k.ID3Info = u;
        })(k.media || (k.media = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.Debug.notImplemented, u = d.Debug.somewhatImplemented, l = d.Debug.dummyConstructor, c = d.AVM2.Runtime.asCoerceString, g = function(a) {
            function d() {
              l("public flash.media.Microphone");
            }
            __extends(d, a);
            Object.defineProperty(d, "names", {get:function() {
              u("public flash.media.Microphone::get names");
              return [];
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "isSupported", {get:function() {
              u("public flash.media.Microphone::get isSupported");
              return !1;
            }, enumerable:!0, configurable:!0});
            d.getMicrophone = function(a) {
              v("public flash.media.Microphone::static getMicrophone");
            };
            d.getEnhancedMicrophone = function(a) {
              v("public flash.media.Microphone::static getEnhancedMicrophone");
            };
            Object.defineProperty(d.prototype, "rate", {get:function() {
              v("public flash.media.Microphone::get rate");
            }, set:function(a) {
              v("public flash.media.Microphone::set rate");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "codec", {get:function() {
              v("public flash.media.Microphone::get codec");
            }, set:function(a) {
              c(a);
              v("public flash.media.Microphone::set codec");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "framesPerPacket", {get:function() {
              v("public flash.media.Microphone::get framesPerPacket");
            }, set:function(a) {
              v("public flash.media.Microphone::set framesPerPacket");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "encodeQuality", {get:function() {
              v("public flash.media.Microphone::get encodeQuality");
            }, set:function(a) {
              v("public flash.media.Microphone::set encodeQuality");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "noiseSuppressionLevel", {get:function() {
              v("public flash.media.Microphone::get noiseSuppressionLevel");
            }, set:function(a) {
              v("public flash.media.Microphone::set noiseSuppressionLevel");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "enableVAD", {get:function() {
              v("public flash.media.Microphone::get enableVAD");
            }, set:function(a) {
              v("public flash.media.Microphone::set enableVAD");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "activityLevel", {get:function() {
              v("public flash.media.Microphone::get activityLevel");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "gain", {get:function() {
              v("public flash.media.Microphone::get gain");
            }, set:function(a) {
              v("public flash.media.Microphone::set gain");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "index", {get:function() {
              v("public flash.media.Microphone::get index");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "muted", {get:function() {
              v("public flash.media.Microphone::get muted");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "name", {get:function() {
              v("public flash.media.Microphone::get name");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "silenceLevel", {get:function() {
              v("public flash.media.Microphone::get silenceLevel");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "silenceTimeout", {get:function() {
              v("public flash.media.Microphone::get silenceTimeout");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "useEchoSuppression", {get:function() {
              v("public flash.media.Microphone::get useEchoSuppression");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "soundTransform", {get:function() {
              v("public flash.media.Microphone::get soundTransform");
            }, set:function(a) {
              v("public flash.media.Microphone::set soundTransform");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "enhancedOptions", {get:function() {
              v("public flash.media.Microphone::get enhancedOptions");
            }, set:function(a) {
              v("public flash.media.Microphone::set enhancedOptions");
            }, enumerable:!0, configurable:!0});
            d.prototype.setSilenceLevel = function(a, c) {
              v("public flash.media.Microphone::setSilenceLevel");
            };
            d.prototype.setUseEchoSuppression = function(a) {
              v("public flash.media.Microphone::setUseEchoSuppression");
            };
            d.prototype.setLoopBack = function(a) {
              v("public flash.media.Microphone::setLoopBack");
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(a.events.EventDispatcher);
          k.Microphone = g;
        })(a.media || (a.media = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(w) {
          function v(a, c) {
            var f = document.createElement("audio");
            f.canPlayType(a.mimeType) ? (f.preload = "metadata", f.src = URL.createObjectURL(new Blob([a.data], {type:a.mimeType})), f.load(), f.addEventListener("loadedmetadata", function() {
              c({duration:1E3 * this.duration});
            })) : c({duration:0});
          }
          var u = d.Debug.notImplemented, l = d.AVM2.Runtime.asCoerceString, c = d.Debug.somewhatImplemented, g = d.AVM2.ABC.Multiname, q = function() {
            return function() {
            };
          }(), t = function(m) {
            function h(a, b) {
              k.events.EventDispatcher.instanceConstructorNoInitialize.call(this);
              this._isBuffering = this._isURLInaccessible = !1;
              this.load(a, b);
            }
            __extends(h, m);
            Object.defineProperty(h.prototype, "url", {get:function() {
              return this._url;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "isURLInaccessible", {get:function() {
              c("public flash.media.Sound::get isURLInaccessible");
              return this._isURLInaccessible;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "length", {get:function() {
              return this._length;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "isBuffering", {get:function() {
              c("public flash.media.Sound::get isBuffering");
              return this._isBuffering;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "bytesLoaded", {get:function() {
              return this._bytesLoaded;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "bytesTotal", {get:function() {
              return this._bytesTotal;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "id3", {get:function() {
              return this._id3;
            }, enumerable:!0, configurable:!0});
            h.prototype.loadCompressedDataFromByteArray = function(a, b) {
              u("public flash.media.Sound::loadCompressedDataFromByteArray");
            };
            h.prototype.loadPCMFromByteArray = function(a, b, e, c, d) {
              void 0 === e && (e = "float");
              l(e);
              u("public flash.media.Sound::loadPCMFromByteArray");
            };
            h.prototype.play = function(c, b, e) {
              void 0 === c && (c = 0);
              void 0 === b && (b = 0);
              void 0 === e && (e = null);
              c = +c;
              b |= 0;
              var h = new k.media.SoundChannel;
              h._sound = this;
              h._soundTransform = d.isNullOrUndefined(e) ? new k.media.SoundTransform : e;
              this._playQueue.push({channel:h, startTime:c});
              if (a.disableAudioOption.value) {
                return h;
              }
              this._soundData && (a.webAudioOption.value || a.webAudioMP3Option.value ? this._soundData.pcm ? h._playSoundDataViaChannel(this._soundData, c, b) : "audio/mpeg" === this._soundData.mimeType && a.webAudioMP3Option.value ? d.SWF.MP3DecoderSession.processAll(new Uint8Array(this._soundData.data)).then(function(a) {
                this._soundData.pcm = a.data;
                this._soundData.end = a.data.length;
                h._playSoundDataViaChannel(this._soundData, c, b);
              }.bind(this), function(a) {
                console.warn("Unable to decode MP3 data: " + a);
              }) : console.warn("Unable to decode packaged sound data of type: " + this._soundData.mimeType) : h._playSoundDataViaAudio(this._soundData, c, b));
              return h;
            };
            h.prototype.close = function() {
              c("public flash.media.Sound::close");
            };
            h.prototype.extract = function(a, b, e) {
              u("public flash.media.Sound::extract");
            };
            h.prototype.load = function(c, b) {
              if (c) {
                var e = this, d = this._stream = new k.net.URLStream, h = new k.utils.ByteArray, l = 0, m = a.webAudioOption.value, t = null, u = new q;
                u.completed = !1;
                d.addEventListener("progress", function(a) {
                  e._bytesLoaded = a[g.getPublicQualifiedName("bytesLoaded")];
                  e._bytesTotal = a[g.getPublicQualifiedName("bytesTotal")];
                  m && !t && (t = decodeMP3(u, function(a, b) {
                    0 === e._length && (e._soundData = u, e._playQueue.forEach(function(a) {
                      a.channel._playSoundDataViaChannel(u, a.startTime);
                    }));
                    e._length = b ? 1E3 * a : 1E3 * Math.max(a, t.estimateDuration(e._bytesTotal));
                  }));
                  var b = d.bytesAvailable;
                  d.readBytes(h, l, b);
                  t && t.pushData(new Uint8Array(h._buffer, l, b));
                  l += b;
                  e.dispatchEvent(a);
                });
                d.addEventListener("complete", function(a) {
                  e.dispatchEvent(a);
                  u.data = h._buffer;
                  u.mimeType = "audio/mpeg";
                  u.completed = !0;
                  m || (e._soundData = u, v(u, function(a) {
                    e._length = a.duration;
                  }), e._playQueue.forEach(function(a) {
                    a.channel._playSoundDataViaAudio(u, a.startTime);
                  }));
                  t && t.close();
                });
                d.load(c);
              }
            };
            h.classInitializer = null;
            h.initializer = function(a) {
              this._playQueue = [];
              this._url = null;
              this._bytesLoaded = this._bytesTotal = this._length = 0;
              this._id3 = new k.media.ID3Info;
              if (a) {
                var b = new q;
                b.sampleRate = a.sampleRate;
                b.channels = a.channels;
                b.completed = !0;
                a.pcm && (b.pcm = a.pcm, b.end = a.pcm.length);
                a.packaged && (b.data = a.packaged.data.buffer, b.mimeType = a.packaged.mimeType);
                var e = this;
                v(b, function(a) {
                  e._length = a.duration;
                });
                this._soundData = b;
              }
            };
            h.classSymbols = null;
            h.instanceSymbols = null;
            return h;
          }(k.events.EventDispatcher);
          w.Sound = t;
          t = function(a) {
            function c(f) {
              a.call(this, f, k.media.Sound);
            }
            __extends(c, a);
            c.FromData = function(a) {
              var b = new c(a);
              b.channels = a.channels;
              b.sampleRate = a.sampleRate;
              b.pcm = a.pcm;
              b.packaged = a.packaged;
              return b;
            };
            return c;
          }(d.Timeline.Symbol);
          w.SoundSymbol = t;
        })(k.media || (k.media = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.Debug.dummyConstructor, u = d.Debug.somewhatImplemented, l = d.Debug.error, c = function() {
            function a(c, d) {
              this._sourceRate = c;
              this._targetRate = d;
              this._tail = [];
              this._sourceOffset = 0;
            }
            a.prototype.getData = function(a, c) {
              for (var f = this._sourceRate / this._targetRate, b = this._sourceOffset, e = Math.ceil((c - 1) * f + b) + 1, d = [], g = 0;g < a.length;g++) {
                d.push(new Float32Array(e));
              }
              this.ondatarequested({data:d, count:e});
              for (g = 0;g < a.length;g++) {
                for (var l = a[g], k = d[g], n = 0;n < c;n++) {
                  var q = n * f + b, t = q | 0, v = Math.ceil(q) | 0, u = 0 > t ? this._tail[g] : k[t];
                  t === v ? l[n] = u : (q -= t, l[n] = u * (1 - q) + k[v] * q);
                }
                this._tail[g] = k[e - 1];
              }
              this._sourceOffset = (c - 1) * f + b - (e - 1);
            };
            return a;
          }(), g = function() {
            function a(d, h) {
              var f = a._cachedContext;
              f || (f = new AudioContext, a._cachedContext = f);
              this._context = f;
              this._contextSampleRate = f.sampleRate || 44100;
              this._channels = h;
              this._sampleRate = d;
              this._contextSampleRate !== d && (this._resampler = new c(d, this._contextSampleRate), this._resampler.ondatarequested = function(a) {
                this.requestData(a.data, a.count);
              }.bind(this));
            }
            a.prototype.setVolume = function(a) {
            };
            a.prototype.start = function() {
              var a = this._context.createScriptProcessor(2048, 0, this._channels), c = this;
              a.onaudioprocess = function(a) {
                for (var b = [], e = 0;e < c._channels;e++) {
                  b.push(a.outputBuffer.getChannelData(e));
                }
                a = b[0].length;
                c._resampler ? c._resampler.getData(b, a) : c.requestData(b, a);
              };
              a.connect(this._context.destination);
              this._source = a;
            };
            a.prototype.stop = function() {
              this._source.disconnect(this._context.destination);
            };
            a.prototype.requestData = function(a, c) {
              var f = this._channels, b = new Float32Array(c * f);
              this.ondatarequested({data:b, count:b.length});
              for (var e = 0, d = 0;e < c;e++) {
                for (var g = 0;g < f;g++) {
                  a[g][e] = b[d++];
                }
              }
            };
            a.isSupported = function() {
              return "undefined" !== typeof AudioContext;
            };
            return a;
          }(), q = function(c) {
            function m() {
              v("public flash.media.SoundChannel");
            }
            __extends(m, c);
            Object.defineProperty(m.prototype, "position", {get:function() {
              return this._position;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(m.prototype, "soundTransform", {get:function() {
              return this._soundTransform;
            }, set:function(c) {
              u("public flash.media.SoundChannel::set soundTransform");
              this._soundTransform = d.isNullOrUndefined(c) ? new a.media.SoundTransform : c;
              k.SoundMixer._updateSoundSource(this);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(m.prototype, "leftPeak", {get:function() {
              return this._leftPeak;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(m.prototype, "rightPeak", {get:function() {
              return this._rightPeak;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(m.prototype, "playing", {get:function() {
              return this._playing;
            }, enumerable:!0, configurable:!0});
            m.prototype.stop = function() {
              this._element && (k.SoundMixer._unregisterSoundSource(this), this._element.loop = !1, this._element.pause(), this._element.removeAttribute("src"), this._playing = !1);
              this._audioChannel && (k.SoundMixer._unregisterSoundSource(this), this._audioChannel.stop(), this._playing = !1);
            };
            m.prototype._playSoundDataViaAudio = function(c, f, b) {
              if (c.mimeType) {
                k.SoundMixer._registerSoundSource(this);
                this._position = f;
                var e = this, d = 0, g = document.createElement("audio");
                g.canPlayType(c.mimeType) ? (g.preload = "metadata", g.loop = 0 < b, g.src = URL.createObjectURL(new Blob([c.data], {type:c.mimeType})), g.addEventListener("loadeddata", function() {
                  g.currentTime = f / 1E3;
                  g.play();
                }), g.addEventListener("timeupdate", function() {
                  var a = g.currentTime;
                  b && d > a && (--b, b || (g.loop = !1), a < f / 1E3 && (g.currentTime = f / 1E3));
                  e._position = 1E3 * (d = a);
                }), g.addEventListener("ended", function() {
                  k.SoundMixer._unregisterSoundSource(e);
                  e._element = null;
                  e._playing = !1;
                  e.dispatchEvent(new a.events.Event("soundComplete", !1, !1));
                }), this._element = g, this._playing = !0, k.SoundMixer._updateSoundSource(this)) : console.error('ERROR: "' + c.mimeType + '" type playback is not supported by the browser');
              }
            };
            m.prototype._playSoundDataViaChannel = function(c, f, b) {
              k.SoundMixer._registerSoundSource(this);
              var e = this, d = Math.round(f / 1E3 * c.sampleRate) * c.channels, m = d;
              this._position = f;
              g.isSupported ? f = new g(c.sampleRate, c.channels) : (l("PCM data playback is not supported by the browser"), f = void 0);
              this._audioChannel = f;
              this._audioChannel.ondatarequested = function(f) {
                var g = c.end;
                if (m >= g && c.completed) {
                  k.SoundMixer._unregisterSoundSource(this), e._audioChannel.stop(), e._playing = !1, e.dispatchEvent(new a.events.Event("soundComplete", !1, !1));
                } else {
                  var l = f.count;
                  f = f.data;
                  var q = c.pcm;
                  do {
                    for (var t = Math.min(g - m, l), v = 0;v < t;v++) {
                      f[v] = q[m++];
                    }
                    l -= t;
                    if (m >= g) {
                      if (!b) {
                        break;
                      }
                      b--;
                      m = d;
                    }
                  } while (0 < l);
                  e._position = m / c.sampleRate / c.channels * 1E3;
                }
              };
              this._audioChannel.start();
              this._playing = !0;
              k.SoundMixer._updateSoundSource(this);
            };
            m.prototype.stopSound = function() {
              this.stop();
            };
            m.prototype.updateSoundLevels = function(a) {
              this._element && (this._element.volume = 0 >= a ? 0 : 1 <= a ? 1 : a);
              this._audioChannel && this._audioChannel.setVolume(a);
            };
            m.classInitializer = null;
            m.initializer = function(c) {
              this._element = null;
              this._rightPeak = this._leftPeak = this._position = 0;
              this._pcmData = null;
              this._soundTransform = new a.media.SoundTransform;
              this._playing = !1;
            };
            m.classSymbols = null;
            m.instanceSymbols = null;
            return m;
          }(a.events.EventDispatcher);
          k.SoundChannel = q;
        })(a.media || (a.media = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c(a, c) {
              n("public flash.media.SoundLoaderContext");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.ASNative);
          k.SoundLoaderContext = u;
        })(k.media || (k.media = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(w) {
          var v = d.Debug.notImplemented, u = d.Debug.dummyConstructor, l = d.AVM2.Runtime.asCoerceString, c = d.Debug.somewhatImplemented, g = function(a) {
            function g() {
              u("public flash.media.SoundMixer");
            }
            __extends(g, a);
            Object.defineProperty(g, "bufferTime", {get:function() {
              v("public flash.media.SoundMixer::get bufferTime");
              return g._bufferTime;
            }, set:function(a) {
              c("public flash.media.SoundMixer::set bufferTime");
              g._bufferTime = a | 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g, "soundTransform", {get:function() {
              c("public flash.media.SoundMixer::get soundTransform");
              return d.isNullOrUndefined(g._soundTransform) ? new k.media.SoundTransform : new k.media.SoundTransform(g._soundTransform.volume, g._soundTransform.pan);
            }, set:function(a) {
              c("public flash.media.SoundMixer::set soundTransform");
              g._soundTransform = d.isNullOrUndefined(a) ? new k.media.SoundTransform : a;
              g._updateAllSoundSources();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g, "audioPlaybackMode", {get:function() {
              v("public flash.media.SoundMixer::get audioPlaybackMode");
            }, set:function(a) {
              l(a);
              v("public flash.media.SoundMixer::set audioPlaybackMode");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g, "useSpeakerphoneForVoice", {get:function() {
              v("public flash.media.SoundMixer::get useSpeakerphoneForVoice");
            }, set:function(a) {
              v("public flash.media.SoundMixer::set useSpeakerphoneForVoice");
            }, enumerable:!0, configurable:!0});
            g.stopAll = function() {
              g._registeredSoundSources.forEach(function(a) {
                a.stopSound();
              });
              g._registeredSoundSources = [];
            };
            g.computeSpectrum = function(a, d, f) {
              c("public flash.media.SoundMixer::static computeSpectrum");
              d = new Float32Array(1024);
              for (f = 0;1024 > f;f++) {
                d[f] = Math.random();
              }
              a.writeRawBytes(d);
              a.position = 0;
            };
            g.areSoundsInaccessible = function() {
              v("public flash.media.SoundMixer::static areSoundsInaccessible");
            };
            g._getMasterVolume = function() {
              return g._masterVolume;
            };
            g._setMasterVolume = function(a) {
              g._masterVolume = +a;
              g._updateAllSoundSources();
            };
            g._registerSoundSource = function(a) {
              g._registeredSoundSources.push(a);
            };
            g._unregisterSoundSource = function(a) {
              a = g._registeredSoundSources.indexOf(a);
              0 <= a && g._registeredSoundSources.splice(a, 1);
            };
            g._updateSoundSource = function(a) {
              var c = a.soundTransform.volume;
              g._soundTransform && (c *= g._soundTransform.volume);
              c *= g._getMasterVolume();
              a.updateSoundLevels(c);
            };
            g._updateAllSoundSources = function() {
              g._registeredSoundSources.forEach(g._updateSoundSource);
            };
            g.classInitializer = null;
            g.initializer = null;
            g.classSymbols = null;
            g.instanceSymbols = null;
            g._masterVolume = 1;
            g._registeredSoundSources = [];
            g._bufferTime = 0;
            return g;
          }(a.ASNative);
          w.SoundMixer = g;
        })(k.media || (k.media = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = d.Debug.somewhatImplemented, l = function(a) {
            function d(a, c) {
              n("public flash.media.SoundTransform");
            }
            __extends(d, a);
            Object.defineProperty(d.prototype, "volume", {get:function() {
              return this._volume;
            }, set:function(a) {
              this._volume = +a;
              this._updateTransform();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "leftToLeft", {get:function() {
              return this._leftToLeft;
            }, set:function(a) {
              this._leftToLeft = +a;
              this._updateTransform();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "leftToRight", {get:function() {
              return this._leftToRight;
            }, set:function(a) {
              this._leftToRight = +a;
              this._updateTransform();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "rightToRight", {get:function() {
              return this._rightToRight;
            }, set:function(a) {
              this._rightToRight = +a;
              this._updateTransform();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "rightToLeft", {get:function() {
              return this._rightToLeft;
            }, set:function(a) {
              this._rightToLeft = +a;
              this._updateTransform();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "pan", {get:function() {
              return 0 === this._leftToRight && 0 === this._rightToLeft ? 1 - this._leftToLeft * this._leftToLeft : 0;
            }, set:function(a) {
              this.leftToLeft = Math.sqrt(1 - a);
              this.leftToRight = 0;
              this.rightToRight = Math.sqrt(1 + a);
              this.rightToLeft = 0;
            }, enumerable:!0, configurable:!0});
            d.prototype._updateTransform = function() {
              u("public flash.media.SoundTransform::_updateTransform");
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(a.ASNative);
          k.SoundTransform = l;
        })(k.media || (k.media = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.Debug.notImplemented, u = d.Debug.dummyConstructor, l = function(a) {
            function d() {
              u("public flash.media.StageVideo");
            }
            __extends(d, a);
            Object.defineProperty(d.prototype, "viewPort", {get:function() {
              v("public flash.media.StageVideo::get viewPort");
            }, set:function(a) {
              v("public flash.media.StageVideo::set viewPort");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "pan", {get:function() {
              v("public flash.media.StageVideo::get pan");
            }, set:function(a) {
              v("public flash.media.StageVideo::set pan");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "zoom", {get:function() {
              v("public flash.media.StageVideo::get zoom");
            }, set:function(a) {
              v("public flash.media.StageVideo::set zoom");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "depth", {get:function() {
              v("public flash.media.StageVideo::get depth");
            }, set:function(a) {
              v("public flash.media.StageVideo::set depth");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "videoWidth", {get:function() {
              v("public flash.media.StageVideo::get videoWidth");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "videoHeight", {get:function() {
              v("public flash.media.StageVideo::get videoHeight");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "colorSpaces", {get:function() {
              v("public flash.media.StageVideo::get colorSpaces");
            }, enumerable:!0, configurable:!0});
            d.prototype.attachNetStream = function(a) {
              v("public flash.media.StageVideo::attachNetStream");
            };
            d.prototype.attachCamera = function(a) {
              v("public flash.media.StageVideo::attachCamera");
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(a.events.EventDispatcher);
          k.StageVideo = l;
        })(a.media || (a.media = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.media.StageVideoAvailability");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.AVAILABLE = "available";
            c.UNAVAILABLE = "unavailable";
            return c;
          }(a.ASNative);
          k.StageVideoAvailability = u;
        })(k.media || (k.media = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.Debug.notImplemented, u = d.Debug.somewhatImplemented, l = function(c) {
            function d(c, g) {
              void 0 === c && (c = 320);
              void 0 === g && (g = 240);
              a.display.DisplayObject.instanceConstructorNoInitialize.call(this);
              c = c | 0 || 320;
              g = g | 0 || 240;
              this._setFillAndLineBoundsFromWidthAndHeight(20 * c, 20 * g);
            }
            __extends(d, c);
            Object.defineProperty(d.prototype, "deblocking", {get:function() {
              return this._deblocking;
            }, set:function(a) {
              this._deblocking = a | 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "smoothing", {get:function() {
              return this._smoothing;
            }, set:function(a) {
              this._smoothing = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "videoWidth", {get:function() {
              return this._videoWidth;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "videoHeight", {get:function() {
              return this._videoHeight;
            }, enumerable:!0, configurable:!0});
            d.prototype._containsPointDirectly = function(a, c, d, h) {
              return !0;
            };
            d.prototype.clear = function() {
              u("public flash.media.Video::clear");
            };
            d.prototype.attachNetStream = function(a) {
              if (this._netStream !== a) {
                this._netStream && (this._netStream._videoReferrer = null);
                if (this._netStream = a) {
                  a._videoReferrer = this;
                }
                this._setDirtyFlags(33554432);
              }
            };
            d.prototype.attachCamera = function(a) {
              v("public flash.media.Video::attachCamera");
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(a.display.DisplayObject);
          k.Video = l;
        })(a.media || (a.media = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.media.VideoStreamSettings");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.ASNative);
          k.VideoStreamSettings = u;
        })(k.media || (k.media = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = d.AVM2.Runtime.asCoerceString, l = function(a) {
            function d(a, c, g) {
              n("public flash.net.FileFilter");
            }
            __extends(d, a);
            Object.defineProperty(d.prototype, "description", {get:function() {
              return this._description;
            }, set:function(a) {
              this._description = u(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "extension", {get:function() {
              return this._extension;
            }, set:function(a) {
              this._extension = u(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "macType", {get:function() {
              return this._macType;
            }, set:function(a) {
              this._macType = u(a);
            }, enumerable:!0, configurable:!0});
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(a.ASNative);
          k.FileFilter = l;
        })(k.net || (k.net = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.Debug.notImplemented, u = d.Debug.dummyConstructor, l = d.AVM2.Runtime.asCoerceString, c = d.Debug.somewhatImplemented, g = d.FileLoadingService, q = function(a) {
            function d() {
              u("public flash.net.LocalConnection");
            }
            __extends(d, a);
            d.prototype.close = function() {
              v("public flash.net.LocalConnection::close");
            };
            d.prototype.connect = function(a) {
              l(a);
              v("public flash.net.LocalConnection::connect");
            };
            Object.defineProperty(d.prototype, "domain", {get:function() {
              c("public flash.net.LocalConnection::get domain");
              var a = g.instance.resolveUrl("/");
              return (a = /:\/\/(.+?)[:?#\/]/.exec(a)) && a[1];
            }, enumerable:!0, configurable:!0});
            d.prototype.send = function(a, c) {
              l(a);
              l(c);
              v("public flash.net.LocalConnection::send");
            };
            Object.defineProperty(d.prototype, "client", {get:function() {
              v("public flash.net.LocalConnection::get client");
            }, set:function(a) {
              v("public flash.net.LocalConnection::set client");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "isPerUser", {get:function() {
              v("public flash.net.LocalConnection::get isPerUser");
            }, set:function(a) {
              v("public flash.net.LocalConnection::set isPerUser");
            }, enumerable:!0, configurable:!0});
            d.prototype.allowDomain = function() {
              v("public flash.net.LocalConnection::allowDomain");
            };
            d.prototype.allowInsecureDomain = function() {
              v("public flash.net.LocalConnection::allowInsecureDomain");
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(a.events.EventDispatcher);
          k.LocalConnection = q;
        })(a.net || (a.net = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.Debug.notImplemented, u = d.Debug.dummyConstructor, l = d.AVM2.Runtime.asCoerceString, c = d.Debug.somewhatImplemented, g = d.AVM2.Runtime.wrapJSObject, q = d.AVM2.AS.flash.events, t = function(k) {
            function h() {
              u("public flash.net.NetConnection");
            }
            __extends(h, k);
            Object.defineProperty(h, "defaultObjectEncoding", {get:function() {
              return h._defaultObjectEncoding;
            }, set:function(a) {
              h._defaultObjectEncoding = a >>> 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "connected", {get:function() {
              return this._connected;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "uri", {get:function() {
              return this._uri;
            }, enumerable:!0, configurable:!0});
            h.prototype.connect = function(f) {
              f = l(f);
              c("public flash.net.NetConnection::connect");
              if (this._uri = f) {
                var b = RtmpJs.parseConnectionString(f);
                if (!b || !b.host || "rtmp" !== b.protocol && "rtmpt" !== b.protocol && "rtmps" !== b.protocol) {
                  this.dispatchEvent(new q.NetStatusEvent(q.NetStatusEvent.NET_STATUS, !1, !1, g({level:"status", code:"NetConnection.Connect.Failed"})));
                } else {
                  var e = d.AVM2.Runtime.AVM2.instance.globals["Shumway.Player.Utils"];
                  f = g({app:b.app, flashver:a.system.Capabilities.version, swfUrl:e.swfUrl, tcUrl:f, fpad:!1, audioCodecs:4095, videoCodecs:255, videoFunction:1, pageUrl:e.pageUrl || e.swfUrl, objectEncoding:0});
                  this._protocol = b.protocol;
                  this._usingTLS = e = "rtmps" === b.protocol || "rtmpt" === b.protocol && (443 === b.port || 8443 === b.port);
                  this._rtmpConnection = b = "rtmp" === b.protocol || "rtmps" === b.protocol ? new RtmpJs.Browser.RtmpTransport({host:b.host, port:b.port || 1935, ssl:e}) : new RtmpJs.Browser.RtmptTransport({host:b.host, port:b.port || 80, ssl:e});
                  this._rtmpCreateStreamCallbacks = [null, null];
                  b.onresponse = function(a) {
                  };
                  b.onevent = function(a) {
                  };
                  b.onconnected = function(a) {
                    this._connected = !0;
                    this.dispatchEvent(new q.NetStatusEvent(q.NetStatusEvent.NET_STATUS, !1, !1, g({level:"status", code:"NetConnection.Connect.Success"})));
                  }.bind(this);
                  b.onstreamcreated = function(a) {
                    console.log("#streamcreated: " + a.streamId);
                    var b = this._rtmpCreateStreamCallbacks[a.transactionId];
                    delete this._rtmpCreateStreamCallbacks[a.transactionId];
                    b(a.stream, a.streamId);
                  }.bind(this);
                  b.connect(f);
                }
              } else {
                this._connected = !0, this.dispatchEvent(new q.NetStatusEvent(q.NetStatusEvent.NET_STATUS, !1, !1, g({level:"status", code:"NetConnection.Connect.Success"})));
              }
            };
            h.prototype._createRtmpStream = function(a) {
              var b = this._rtmpCreateStreamCallbacks.length;
              this._rtmpCreateStreamCallbacks[b] = a;
              this._rtmpConnection.createStream(b);
            };
            Object.defineProperty(h.prototype, "client", {get:function() {
              return this._client;
            }, set:function(a) {
              this._client = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "objectEncoding", {get:function() {
              return this._objectEncoding;
            }, set:function(a) {
              a >>>= 0;
              c("public flash.net.NetConnection::set objectEncoding");
              this._objectEncoding = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "proxyType", {get:function() {
              return this._proxyType;
            }, set:function(a) {
              a = l(a);
              c("public flash.net.NetConnection::set proxyType");
              this._proxyType = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "connectedProxyType", {get:function() {
              v("public flash.net.NetConnection::get connectedProxyType");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "usingTLS", {get:function() {
              return this._usingTLS;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "protocol", {get:function() {
              return this._protocol;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "maxPeerConnections", {get:function() {
              v("public flash.net.NetConnection::get maxPeerConnections");
            }, set:function(a) {
              v("public flash.net.NetConnection::set maxPeerConnections");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "nearID", {get:function() {
              v("public flash.net.NetConnection::get nearID");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "farID", {get:function() {
              v("public flash.net.NetConnection::get farID");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "nearNonce", {get:function() {
              v("public flash.net.NetConnection::get nearNonce");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "farNonce", {get:function() {
              v("public flash.net.NetConnection::get farNonce");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "unconnectedPeerStreams", {get:function() {
              v("public flash.net.NetConnection::get unconnectedPeerStreams");
            }, enumerable:!0, configurable:!0});
            h.prototype.ctor = function() {
              this._uri = null;
              this._connected = !1;
              this._client = null;
              this._proxyType = "none";
              this._objectEncoding = h.defaultObjectEncoding;
              this._usingTLS = !1;
              this._protocol = null;
            };
            h.prototype.invoke = function(a) {
              return this._invoke(a >>> 0, Array.prototype.slice.call(arguments, 1));
            };
            h.prototype.invokeWithArgsArray = function(a, b) {
              return this._invoke.call(this, a >>> 0, b);
            };
            h.prototype._invoke = function(a, b) {
              var e = !1;
              switch(a) {
                case 2:
                  e = !0;
              }
              (e ? c : v)("private flash.net.NetConnection::_invoke (" + a + ")");
            };
            h.classInitializer = null;
            h.initializer = null;
            h.classSymbols = null;
            h.instanceSymbols = ["close", "addHeader", "call"];
            h._defaultObjectEncoding = 3;
            return h;
          }(a.events.EventDispatcher);
          k.NetConnection = t;
        })(a.net || (a.net = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(w) {
          function v(a) {
            var b = "video/mp4";
            a && (b += ';codecs="' + a.join(",") + '"');
            return b;
          }
          var u = d.Debug.notImplemented, l = d.AVM2.Runtime.asCoerceString, c = d.Debug.somewhatImplemented, g = d.AVM2.Runtime.wrapJSObject, q = d.AVM2.AS.flash.events, t = d.AVM2.AS.flash.net, m = d.AVM2.AS.flash.utils, h = d.FileLoadingService, f = d.AVM2.Runtime.AVM2, b = function(a) {
            function b(a, e) {
              void 0 === e && (e = "connectToFMS");
              q.EventDispatcher.instanceConstructorNoInitialize.call(this);
              this._connection = a;
              this._peerID = l(e);
              this._id = k.display.DisplayObject.getNextSyncID();
              this._isDirty = !0;
              this._soundTransform = new k.media.SoundTransform;
              this._contentTypeHint = null;
              this._checkPolicyFile = !0;
              this._videoStream = new r(this);
              this._videoStream._onEnsurePlay = function() {
                this._notifyVideoControl(9, null);
              }.bind(this);
              this._metaData = this._resourceName = null;
            }
            __extends(b, a);
            b.prototype.dispose = function() {
              u("public flash.net.NetStream::dispose");
            };
            b.prototype._getVideoStreamURL = function() {
              return this._videoStream.url;
            };
            b.prototype.play = function(a) {
              k.media.SoundMixer._registerSoundSource(this);
              a = l(a);
              f.instance.globals["Shumway.Player.Utils"].registerEventListener(this._id, this.processVideoEvent.bind(this));
              this._connection && this._connection.uri ? this._videoStream.playInConnection(this._connection, a) : null === a ? this._videoStream.openInDataGenerationMode() : this._videoStream.play(a, this.checkPolicyFile);
              this._notifyVideoControl(1, {url:this._videoStream.url});
            };
            b.prototype.play2 = function(a) {
              u("public flash.net.NetStream::play2");
            };
            Object.defineProperty(b.prototype, "info", {get:function() {
              c("public flash.net.NetStream::get info");
              var a = Math.ceil(this._invoke(304, null));
              return new w.NetStreamInfo(232, 233 * (1 + a), 232, 32, 32 * (1 + a), 200, 200 * (1 + a), 1, 1 * (1 + a), 233 * a, 0, 32, 200, 1, 1, 1, 1, 0, 0, 0, this._metaData, null, this._connection.uri, this._resourceName, !1);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "multicastInfo", {get:function() {
              u("public flash.net.NetStream::get multicastInfo");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "soundTransform", {get:function() {
              return this._soundTransform;
            }, set:function(a) {
              this._soundTransform = a;
              k.media.SoundMixer._updateSoundSource(this);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "checkPolicyFile", {get:function() {
              return this._checkPolicyFile;
            }, set:function(a) {
              this._checkPolicyFile = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "client", {get:function() {
              return this._client;
            }, set:function(a) {
              c("public flash.net.NetStream::set client");
              this._client = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "objectEncoding", {get:function() {
              u("public flash.net.NetStream::get objectEncoding");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "multicastPushNeighborLimit", {get:function() {
              u("public flash.net.NetStream::get multicastPushNeighborLimit");
            }, set:function(a) {
              u("public flash.net.NetStream::set multicastPushNeighborLimit");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "multicastWindowDuration", {get:function() {
              u("public flash.net.NetStream::get multicastWindowDuration");
            }, set:function(a) {
              u("public flash.net.NetStream::set multicastWindowDuration");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "multicastRelayMarginDuration", {get:function() {
              u("public flash.net.NetStream::get multicastRelayMarginDuration");
            }, set:function(a) {
              u("public flash.net.NetStream::set multicastRelayMarginDuration");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "multicastAvailabilityUpdatePeriod", {get:function() {
              u("public flash.net.NetStream::get multicastAvailabilityUpdatePeriod");
            }, set:function(a) {
              u("public flash.net.NetStream::set multicastAvailabilityUpdatePeriod");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "multicastFetchPeriod", {get:function() {
              u("public flash.net.NetStream::get multicastFetchPeriod");
            }, set:function(a) {
              u("public flash.net.NetStream::set multicastFetchPeriod");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "multicastAvailabilitySendToAll", {get:function() {
              u("public flash.net.NetStream::get multicastAvailabilitySendToAll");
            }, set:function(a) {
              u("public flash.net.NetStream::set multicastAvailabilitySendToAll");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "farID", {get:function() {
              u("public flash.net.NetStream::get farID");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "nearNonce", {get:function() {
              u("public flash.net.NetStream::get nearNonce");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "farNonce", {get:function() {
              u("public flash.net.NetStream::get farNonce");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "peerStreams", {get:function() {
              u("public flash.net.NetStream::get peerStreams");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "audioReliable", {get:function() {
              u("public flash.net.NetStream::get audioReliable");
            }, set:function(a) {
              u("public flash.net.NetStream::set audioReliable");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "videoReliable", {get:function() {
              u("public flash.net.NetStream::get videoReliable");
            }, set:function(a) {
              u("public flash.net.NetStream::set videoReliable");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "dataReliable", {get:function() {
              u("public flash.net.NetStream::get dataReliable");
            }, set:function(a) {
              u("public flash.net.NetStream::set dataReliable");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "audioSampleAccess", {get:function() {
              u("public flash.net.NetStream::get audioSampleAccess");
            }, set:function(a) {
              u("public flash.net.NetStream::set audioSampleAccess");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "videoSampleAccess", {get:function() {
              u("public flash.net.NetStream::get videoSampleAccess");
            }, set:function(a) {
              u("public flash.net.NetStream::set videoSampleAccess");
            }, enumerable:!0, configurable:!0});
            b.prototype.appendBytes = function(a) {
              a = new Uint8Array(a._buffer, 0, a.length);
              this._videoStream.appendBytes(a);
            };
            b.prototype.appendBytesAction = function(a) {
              this._videoStream.appendBytesAction(a);
            };
            Object.defineProperty(b.prototype, "useHardwareDecoder", {get:function() {
              u("public flash.net.NetStream::get useHardwareDecoder");
            }, set:function(a) {
              u("public flash.net.NetStream::set useHardwareDecoder");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "useJitterBuffer", {get:function() {
              u("public flash.net.NetStream::get useJitterBuffer");
            }, set:function(a) {
              u("public flash.net.NetStream::set useJitterBuffer");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "videoStreamSettings", {get:function() {
              u("public flash.net.NetStream::get videoStreamSettings");
            }, set:function(a) {
              u("public flash.net.NetStream::set videoStreamSettings");
            }, enumerable:!0, configurable:!0});
            b.prototype.invoke = function(a) {
              return this._invoke(a >>> 0, Array.prototype.slice.call(arguments, 1));
            };
            b.prototype.invokeWithArgsArray = function(a, b) {
              return this._invoke.call(this, a >>> 0, b);
            };
            Object.defineProperty(b.prototype, "inBufferSeek", {get:function() {
              return this._inBufferSeek;
            }, set:function(a) {
              this._inBufferSeek = !!a;
            }, enumerable:!0, configurable:!0});
            b.prototype._invoke = function(a, b) {
              var e = !1, f;
              switch(a) {
                case 4:
                  this._videoStream.bufferTime = b[0];
                  e = !0;
                  break;
                case 202:
                  switch(b[1]) {
                    case "pause":
                      e = !0;
                      this._notifyVideoControl(2, {paused:!!b[3], time:b[4] / 1E3});
                      break;
                    case "seek":
                      e = !0, this._notifyVideoControl(3, {time:b[3] / 1E3});
                  }
                  break;
                case 300:
                  f = this._notifyVideoControl(4, null);
                  e = !0;
                  break;
                case 302:
                  f = this._videoStream.bufferTime;
                  e = !0;
                  break;
                case 303:
                  f = this._notifyVideoControl(5, null);
                  e = !0;
                  break;
                case 305:
                  f = this._notifyVideoControl(7, null);
                  e = !0;
                  break;
                case 306:
                  f = this._notifyVideoControl(8, null), e = !0;
              }
              (e ? c : u)("NetStream._invoke (" + a + ")");
              return f;
            };
            b.prototype._notifyVideoControl = function(a, b) {
              return f.instance.globals["Shumway.Player.Utils"].notifyVideoControl(this._id, a, b);
            };
            b.prototype.processVideoEvent = function(a, b) {
              this._videoStream.processVideoPlaybackEvent(a, b);
              switch(a) {
                case 0:
                  k.media.SoundMixer._updateSoundSource(this);
                  break;
                case 2:
                  this.dispatchEvent(new q.NetStatusEvent(q.NetStatusEvent.NET_STATUS, !1, !1, g({code:"NetStream.Play.Start", level:"status"})));
                  break;
                case 3:
                  this.dispatchEvent(new q.NetStatusEvent(q.NetStatusEvent.NET_STATUS, !1, !1, g({code:"NetStream.Buffer.Flush", level:"status"})));
                  this.dispatchEvent(new q.NetStatusEvent(q.NetStatusEvent.NET_STATUS, !1, !1, g({code:"NetStream.Play.Stop", level:"status"})));
                  k.media.SoundMixer._unregisterSoundSource(this);
                  break;
                case 5:
                  this.dispatchEvent(new q.NetStatusEvent(q.NetStatusEvent.NET_STATUS, !1, !1, g({code:"NetStream.Buffer.Full", level:"status"})));
                  break;
                case 4:
                  this.dispatchEvent(new q.NetStatusEvent(q.NetStatusEvent.NET_STATUS, !1, !1, g({code:"NetStream.Buffer.Empty", level:"status"})));
                  break;
                case 11:
                  this.dispatchEvent(new q.NetStatusEvent(q.NetStatusEvent.NET_STATUS, !1, !1, g({code:4 === b.code ? "NetStream.Play.NoSupportedTrackFound" : 3 === b.code ? "NetStream.Play.FileStructureInvalid" : "NetStream.Play.StreamNotFound", level:"error"})));
                  break;
                case 6:
                  this.dispatchEvent(new q.NetStatusEvent(q.NetStatusEvent.NET_STATUS, !1, !1, g({code:"NetStream.Pause.Notify", level:"status"})));
                  break;
                case 7:
                  this.dispatchEvent(new q.NetStatusEvent(q.NetStatusEvent.NET_STATUS, !1, !1, g({code:"NetStream.Unpause.Notify", level:"status"})));
                  break;
                case 8:
                  this.dispatchEvent(new q.NetStatusEvent(q.NetStatusEvent.NET_STATUS, !1, !1, g({code:"NetStream.Seek.Notify", level:"status"})));
                  break;
                case 9:
                  this.dispatchEvent(new q.NetStatusEvent(q.NetStatusEvent.NET_STATUS, !1, !1, g({code:"NetStream.Seek.Complete", level:"status"})));
                  break;
                case 1:
                  if (this._client) {
                    var e = {};
                    e.asSetPublicProperty("width", b.videoWidth);
                    e.asSetPublicProperty("height", b.videoHeight);
                    e.asSetPublicProperty("duration", b.duration);
                    this._client.asCallPublicProperty("onMetaData", [e]);
                  }
                ;
              }
            };
            b.prototype.stopSound = function() {
              this.pause();
            };
            b.prototype.updateSoundLevels = function(a) {
              this._notifyVideoControl(6, {volume:a});
            };
            b.classInitializer = null;
            b.initializer = null;
            b.classSymbols = null;
            b.instanceSymbols = null;
            b.DIRECT_CONNECTIONS = "directConnections";
            b.CONNECT_TO_FMS = "connectToFMS";
            return b;
          }(k.events.EventDispatcher);
          w.NetStream = b;
          var e;
          (function(a) {
            a[a.CLOSED = 0] = "CLOSED";
            a[a.OPENED = 1] = "OPENED";
            a[a.ENDED = 2] = "ENDED";
            a[a.OPENED_DATA_GENERATION = 3] = "OPENED_DATA_GENERATION";
            a[a.ERROR = 4] = "ERROR";
          })(e || (e = {}));
          var r = function() {
            function b(a) {
              this._domReady = new d.PromiseWrapper;
              this._metadataReady = new d.PromiseWrapper;
              this._started = !1;
              this._buffer = "empty";
              this._bufferTime = .1;
              this._contentTypeHint = this._mediaSourceBufferLock = this._mediaSourceBuffer = this._mediaSource = this._url = null;
              this._state = 0;
              this._head = null;
              this._netStream = a;
            }
            Object.defineProperty(b.prototype, "state", {get:function() {
              return this._state;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "bufferTime", {get:function() {
              return this._bufferTime;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "url", {get:function() {
              return this._url;
            }, enumerable:!0, configurable:!0});
            b.prototype.play = function(b, e) {
              var f = this, d = a.mediaSourceOption.value;
              d && "undefined" === typeof MediaSource && (console.warn("MediaSource API is not enabled, falling back to regular playback"), d = !1);
              var l = !1;
              if (/\.flv($|\?)/i.test(b)) {
                if ("supported" === a.flvOption.value) {
                  l = !0;
                } else {
                  if ("mock" === a.flvOption.value) {
                    b = "resource://shumway/web/noflv.mp4";
                  } else {
                    setTimeout(function() {
                      f._netStream.dispatchEvent(new q.NetStatusEvent(q.NetStatusEvent.NET_STATUS, !1, !1, g({code:"NetStream.Play.NoSupportedTrackFound", level:"error"})));
                    });
                    return;
                  }
                }
              }
              if (l || d) {
                this.openInDataGenerationMode();
                d = new t.URLRequest(b);
                d._checkPolicyFile = e;
                var k = new t.URLStream;
                k.addEventListener("httpStatus", function(a) {
                  (a = a.asGetPublicProperty("responseHeaders").filter(function(a) {
                    return "Content-Type" === a.asGetPublicProperty("name");
                  })[0]) && a.asGetPublicProperty("value");
                }.bind(this));
                k.addEventListener("progress", function(a) {
                  a = k.bytesAvailable;
                  var b = new m.ByteArray;
                  k.readBytes(b, 0, a);
                  a = new Uint8Array(b._buffer, 0, b.length);
                  this.appendBytes(a);
                }.bind(this));
                k.addEventListener("complete", function(a) {
                  this.appendBytesAction("endSequence");
                }.bind(this));
                k.load(d);
              } else {
                c("public flash.net.NetStream::play"), this._state = 1, this._url = h.instance.resolveUrl(b);
              }
            };
            b.prototype.playInConnection = function(a, b) {
              this.openInDataGenerationMode();
              var e = this, c, f = {packets:0, init:function(a) {
                if (a.asGetPublicProperty("audiocodecid") || a.asGetPublicProperty("videocodecid")) {
                  a = RtmpJs.MP4.parseFLVMetadata(a), c = new RtmpJs.MP4.MP4Mux(a), c.oncodecinfo = function(a) {
                    this._contentTypeHint = v(a);
                  }, c.ondata = function(a) {
                    e.appendBytes(new Uint8Array(a));
                  }.bind(this);
                }
              }, packet:function(a, b, e) {
                c.pushPacket(a, new Uint8Array(b), e);
              }, generate:function() {
                c.flush();
              }};
              a._createRtmpStream(function(a, e) {
                a.ondata = function(a) {
                  console.log("#packet (" + a.typeId + "): @" + a.timestamp);
                  0 < a.data.length && f.packet(a.typeId, a.data, a.timestamp);
                };
                a.oncallback = function() {
                  console.log("#callback");
                };
                a.onscriptdata = function(a, b) {
                  console.log("#object: " + a);
                  "onMetaData" === a && f.init(b);
                };
                a.play(b);
              });
            };
            b.prototype.openInDataGenerationMode = function() {
              this._state = 3;
              var a = new MediaSource;
              a.addEventListener("sourceopen", function(a) {
                this._ensurePlaying();
              }.bind(this));
              a.addEventListener("sourceend", function(a) {
                this._mediaSource = null;
              }.bind(this));
              this._mediaSource = a;
              this._url = URL.createObjectURL(a);
            };
            b.prototype.appendBytes = function(a) {
              if (this._decoder) {
                this._decoder.push(a);
              } else {
                var b, e;
                null !== this._head ? (b = this._head.length, e = new Uint8Array(b + a.length), e.set(a, b)) : (b = 0, e = a);
                if (!this._decoder) {
                  var c = this._detectContentType(e);
                  "video/x-flv" === c ? (c = new p, c.onHeader = function(a) {
                    this._mediaSourceBuffer = this._mediaSource.addSourceBuffer(a);
                    this._mediaSourceBufferLock = Promise.resolve(void 0);
                  }.bind(this), c.onData = this._queueData.bind(this), this._decoder = c) : c && (this._decoder = {onData:this._queueData.bind(this), onError:function(a) {
                  }, push:function(a) {
                    this.onData(a);
                  }, close:function() {
                  }}, this._mediaSourceBuffer = this._mediaSource.addSourceBuffer(c), this._mediaSourceBufferLock = Promise.resolve(void 0));
                }
                this._decoder ? (this._decoder.push(e), 0 < b && (this._head = null)) : this._head = 0 === b ? new Uint8Array(a) : e;
              }
            };
            b.prototype._queueData = function(a) {
              var b = this._mediaSourceBuffer;
              this._mediaSourceBufferLock = this._mediaSourceBufferLock.then(function() {
                b.appendBuffer(a);
                return new Promise(function(a) {
                  b.addEventListener("update", function E() {
                    b.removeEventListener("update", E);
                    a();
                  });
                });
              });
            };
            b.prototype.appendBytesAction = function(a) {
              a = l(a);
              if ("endSequence" === a) {
                if (!this._decoder) {
                  throw Error("Internal appendBytes error");
                }
                this._decoder.close();
                this._mediaSourceBufferLock.then(function() {
                  this._mediaSource && this._mediaSource.endOfStream();
                  this.close();
                }.bind(this));
              }
              c("public flash.net.NetStream::appendBytesAction");
            };
            b.prototype.close = function() {
              this._state = 0;
            };
            b.prototype._ensurePlaying = function() {
              this._onEnsurePlay && this._onEnsurePlay();
            };
            b.prototype._detectContentType = function(a) {
              return 16 > a.length ? null : 70 === a[0] && 76 === a[1] && 86 === a[2] && 1 === a[3] ? "video/x-flv" : 102 === a[4] && 116 === a[5] && 121 === a[6] && 112 === a[7] ? this._contentTypeHint && /^video\/mp4;\s*codecs=/.test(this._contentTypeHint) ? this._contentTypeHint : 'video/mp4; codecs="avc1.42E01E, mp4a.40.2"' : 73 === a[0] && 68 === a[1] && 51 === a[2] || 255 === a[0] && 224 === (a[1] & 224) && 8 !== (a[1] & 30) ? "audio/mpeg" : this._contentTypeHint || "video/mp4";
            };
            b.prototype.processVideoPlaybackEvent = function(a, b) {
              switch(a) {
                case 0:
                  this._domReady.resolve(void 0);
                  break;
                case 2:
                  if (this._started) {
                    break;
                  }
                  this._started = !0;
                  break;
                case 3:
                  this._started = !1;
                  break;
                case 5:
                  this._buffer = "full";
                  break;
                case 10:
                  this._buffer = "progress";
                  break;
                case 4:
                  this._buffer = "empty";
                  break;
                case 1:
                  this._metadataReady.resolve({videoWidth:b.videoWidth, videoHeight:b.videoHeight});
              }
            };
            return b;
          }(), p = function() {
            function a() {
              this._flvParser = new RtmpJs.FLV.FLVParser;
              this._flvParser.onHeader = this._onFlvHeader.bind(this);
              this._flvParser.onTag = this._onFlvTag.bind(this);
              this._flvParser.onClose = this._onFlvClose.bind(this);
              this._flvParser.onError = this._onFlvError.bind(this);
              this._mp4Mux = null;
            }
            a.prototype._onFlvHeader = function(a) {
            };
            a.prototype._onFlvTag = function(a) {
              if (18 === a.type) {
                var b = new k.utils.ByteArray;
                b.writeRawBytes(a.data);
                b.position = 0;
                a = d.AVM2.AMF0.read(b);
                b = d.AVM2.AMF0.read(b);
                "onMetaData" === a && (b = RtmpJs.MP4.parseFLVMetadata(b), b = new RtmpJs.MP4.MP4Mux(b), b.oncodecinfo = function(a) {
                  this.onHeader(v(a));
                }.bind(this), b.ondata = function(a) {
                  this.onData.call(null, a);
                }.bind(this), this._mp4Mux = b);
              } else {
                this._mp4Mux.pushPacket(a.type, new Uint8Array(a.data), a.timestamp);
              }
            };
            a.prototype._onFlvClose = function() {
              this._mp4Mux.flush();
            };
            a.prototype._onFlvError = function(a) {
              if (this.onError) {
                this.onError(a);
              }
            };
            a.prototype.push = function(a) {
              try {
                this._flvParser.push(a);
              } catch (b) {
                if (this.onError) {
                  this.onError(b);
                }
              }
            };
            a.prototype.close = function() {
              try {
                this._flvParser.close();
              } catch (a) {
                if (this.onError) {
                  this.onError(a);
                }
              }
            };
            return a;
          }();
        })(k.net || (k.net = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = d.AVM2.Runtime.asCoerceString, l = function(a) {
            function d(a, c, g, h, f, b, e, l, k, w, I, B, D, M, E, J, P, y, K, H, A, z, G, L, F) {
              void 0 === G && (G = null);
              void 0 === L && (L = null);
              u(G);
              u(L);
              n("public flash.net.NetStreamInfo");
            }
            __extends(d, a);
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(a.ASNative);
          k.NetStreamInfo = l;
        })(k.net || (k.net = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c(a, c, d, l, h, f, b, e, k, p, u, w, B, D, M, E, J, P, y) {
              n("public flash.net.NetStreamMulticastInfo");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.ASNative);
          k.NetStreamMulticastInfo = u;
        })(k.net || (k.net = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              v("public flash.net.NetStreamPlayOptions");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.events.EventDispatcher);
          k.NetStreamPlayOptions = u;
        })(a.net || (a.net = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c(a, c) {
              n("public flash.net.Responder");
            }
            __extends(c, a);
            c.prototype.ctor = function(a, c) {
              this._result = a;
              this._status = c;
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.ASNative);
          k.Responder = u;
        })(k.net || (k.net = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          function v() {
            g || (g = "undefined" !== typeof ShumwayCom && ShumwayCom.createSpecialStorage ? ShumwayCom.createSpecialStorage() : window.sessionStorage);
            return g;
          }
          var u = d.Debug.notImplemented, l = d.AVM2.Runtime.asCoerceString, c = d.Debug.somewhatImplemented, g, q = function(d) {
            function g() {
              a.events.EventDispatcher.instanceConstructorNoInitialize.call(this);
              this._data = Object.create(null);
            }
            __extends(g, d);
            g.deleteAll = function(a) {
              l(a);
              u("public flash.net.SharedObject::static deleteAll");
            };
            g.getDiskUsage = function(a) {
              l(a);
              u("public flash.net.SharedObject::static getDiskUsage");
            };
            g._create = function(a, c) {
              var b = new g;
              b._path = a;
              b._data = c;
              b._objectEncoding = g._defaultObjectEncoding;
              return b;
            };
            g.getLocal = function(a, c, b) {
              void 0 === c && (c = null);
              a = l(a);
              c = l(c);
              a = (c || "") + "/" + a;
              if (g._sharedObjects[a]) {
                return g._sharedObjects[a];
              }
              c = v().getItem(a);
              c = g._create(a, c ? JSON.parse(c) : {});
              return g._sharedObjects[a] = c;
            };
            g.getRemote = function(a, c, b, e) {
              void 0 === c && (c = null);
              l(a);
              l(c);
              u("public flash.net.SharedObject::static getRemote");
            };
            Object.defineProperty(g, "defaultObjectEncoding", {get:function() {
              return g._defaultObjectEncoding;
            }, set:function(a) {
              g._defaultObjectEncoding = a >>> 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "data", {get:function() {
              return this._data;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "objectEncoding", {get:function() {
              return this._objectEncoding;
            }, set:function(a) {
              this._objectEncoding = a >>> 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "client", {get:function() {
              u("public flash.net.SharedObject::get client");
            }, set:function(a) {
              u("public flash.net.SharedObject::set client");
            }, enumerable:!0, configurable:!0});
            g.prototype.setDirty = function(a) {
              l(a);
              c("public flash.net.SharedObject::setDirty");
            };
            g.prototype.invoke = function(a) {
              return this._invoke(a >>> 0, Array.prototype.slice.call(arguments, 1));
            };
            g.prototype.invokeWithArgsArray = function(a, c) {
              return this._invoke(a >>> 0, c);
            };
            g.prototype._invoke = function(a, f) {
              var b = !1, e;
              switch(a) {
                case 4:
                  e = JSON.stringify(this._data).length - 2;
                  b = !0;
                  break;
                case 6:
                  this._data = {};
                  v().removeItem(this._path);
                  b = !0;
                  break;
                case 2:
                  v().setItem(this._path, JSON.stringify(this._data));
                  e = b = !0;
                  break;
                case 3:
                  b = !0;
              }
              (b ? c : u)("private flash.net.SharedObject::_invoke (" + a + ")");
              return e;
            };
            g.classInitializer = null;
            g.initializer = null;
            g.classSymbols = null;
            g.instanceSymbols = null;
            g._sharedObjects = Object.create(null);
            g._defaultObjectEncoding = 3;
            return g;
          }(a.events.EventDispatcher);
          k.SharedObject = q;
        })(a.net || (a.net = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.Debug.notImplemented, u = d.Debug.dummyConstructor, l = d.AVM2.Runtime.asCoerceString, c = d.Debug.somewhatImplemented, g = d.AVM2.Errors, q = d.AVM2.Runtime.throwError, t = function(a) {
            function d(a, b) {
              void 0 === a && (a = null);
              l(a);
              u("public flash.net.Socket");
            }
            __extends(d, a);
            Object.defineProperty(d.prototype, "bytesAvailable", {get:function() {
              v("public flash.net.Socket::get bytesAvailable");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "connected", {get:function() {
              v("public flash.net.Socket::get connected");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "objectEncoding", {get:function() {
              v("public flash.net.Socket::get objectEncoding");
            }, set:function(a) {
              v("public flash.net.Socket::set objectEncoding");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "endian", {get:function() {
              v("public flash.net.Socket::get endian");
            }, set:function(a) {
              l(a);
              v("public flash.net.Socket::set endian");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "bytesPending", {get:function() {
              v("public flash.net.Socket::get bytesPending");
            }, enumerable:!0, configurable:!0});
            d.prototype.readBytes = function(a, b, e) {
              v("public flash.net.Socket::readBytes");
            };
            d.prototype.writeBytes = function(a, b, e) {
              v("public flash.net.Socket::writeBytes");
            };
            d.prototype.writeBoolean = function(a) {
              v("public flash.net.Socket::writeBoolean");
            };
            d.prototype.writeByte = function(a) {
              v("public flash.net.Socket::writeByte");
            };
            d.prototype.writeShort = function(a) {
              v("public flash.net.Socket::writeShort");
            };
            d.prototype.writeInt = function(a) {
              v("public flash.net.Socket::writeInt");
            };
            d.prototype.writeUnsignedInt = function(a) {
              v("public flash.net.Socket::writeUnsignedInt");
            };
            d.prototype.writeFloat = function(a) {
              v("public flash.net.Socket::writeFloat");
            };
            d.prototype.writeDouble = function(a) {
              v("public flash.net.Socket::writeDouble");
            };
            d.prototype.writeMultiByte = function(a, b) {
              l(a);
              l(b);
              v("public flash.net.Socket::writeMultiByte");
            };
            d.prototype.writeUTF = function(a) {
              l(a);
              v("public flash.net.Socket::writeUTF");
            };
            d.prototype.writeUTFBytes = function(a) {
              l(a);
              v("public flash.net.Socket::writeUTFBytes");
            };
            d.prototype.readBoolean = function() {
              v("public flash.net.Socket::readBoolean");
            };
            d.prototype.readByte = function() {
              v("public flash.net.Socket::readByte");
            };
            d.prototype.readUnsignedByte = function() {
              v("public flash.net.Socket::readUnsignedByte");
            };
            d.prototype.readShort = function() {
              v("public flash.net.Socket::readShort");
            };
            d.prototype.readUnsignedShort = function() {
              v("public flash.net.Socket::readUnsignedShort");
            };
            d.prototype.readInt = function() {
              v("public flash.net.Socket::readInt");
            };
            d.prototype.readUnsignedInt = function() {
              v("public flash.net.Socket::readUnsignedInt");
            };
            d.prototype.readFloat = function() {
              v("public flash.net.Socket::readFloat");
            };
            d.prototype.readDouble = function() {
              v("public flash.net.Socket::readDouble");
            };
            d.prototype.readMultiByte = function(a, b) {
              l(b);
              v("public flash.net.Socket::readMultiByte");
            };
            d.prototype.readUTF = function() {
              v("public flash.net.Socket::readUTF");
            };
            d.prototype.readUTFBytes = function(a) {
              v("public flash.net.Socket::readUTFBytes");
            };
            d.prototype.flush = function() {
              v("public flash.net.Socket::flush");
            };
            d.prototype.writeObject = function(a) {
              v("public flash.net.Socket::writeObject");
            };
            d.prototype.readObject = function() {
              v("public flash.net.Socket::readObject");
            };
            d.prototype.internalGetSecurityErrorMessage = function(a, b) {
              l(a);
              c("flash.net.Socket::internalGetSecurityErrorMessage");
              return "SecurityErrorEvent";
            };
            d.prototype.internalConnect = function(a, b) {
              a = l(a);
              b |= 0;
              c("flash.net.Socket::internalConnect");
              q("SecurityError", g.SocketConnectError, a, b);
            };
            d.prototype.didFailureOccur = function() {
              c("flash.net.Socket::didFailureOccur");
              return !0;
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(a.events.EventDispatcher);
          k.Socket = t;
        })(a.net || (a.net = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(a) {
        (function(d) {
          var k = a.events.Event, u = a.events.IOErrorEvent, l = a.events.ProgressEvent, c = a.events.HTTPStatusEvent, g = a.events.SecurityErrorEvent, q = function(q) {
            function m(h) {
              a.events.EventDispatcher.instanceConstructorNoInitialize.call(this);
              var f = this._stream = new d.URLStream;
              f.addEventListener(k.OPEN, this.onStreamOpen.bind(this));
              f.addEventListener(k.COMPLETE, this.onStreamComplete.bind(this));
              f.addEventListener(l.PROGRESS, this.onStreamProgress.bind(this));
              f.addEventListener(u.IO_ERROR, this.onStreamIOError.bind(this));
              f.addEventListener(c.HTTP_STATUS, this.onStreamHTTPStatus.bind(this));
              f.addEventListener(c.HTTP_RESPONSE_STATUS, this.onStreamHTTPResponseStatus.bind(this));
              f.addEventListener(g.SECURITY_ERROR, this.onStreamSecurityError.bind(this));
              this.$BgdataFormat = "text";
              h && this.load(h);
            }
            __extends(m, q);
            Object.defineProperty(m.prototype, "data", {get:function() {
              return this.$Bgdata;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(m.prototype, "dataFormat", {get:function() {
              return this.$BgdataFormat;
            }, set:function(a) {
              this.$BgdataFormat = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(m.prototype, "bytesLoaded", {get:function() {
              return this.$BgbytesLoaded;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(m.prototype, "bytesTotal", {get:function() {
              return this.$BgbytesTotal;
            }, enumerable:!0, configurable:!0});
            m.prototype.load = function(a) {
              this._stream.load(a);
            };
            m.prototype.close = function() {
              this._stream.close();
            };
            m.prototype.complete = function() {
              var c = new a.utils.ByteArray;
              this._stream.readBytes(c);
              if ("binary" === this.$BgdataFormat) {
                this.$Bgdata = c;
              } else {
                var f = c.toString();
                0 < c.length && "variables" === this.$BgdataFormat ? (c = new d.URLVariables, this._ignoreDecodeErrors && (c._ignoreDecodingErrors = !0), c.decode(String(f)), this.$Bgdata = c) : this.$Bgdata = f;
              }
            };
            m.prototype.addEventListener = function(a, f, b, e, d) {
              q.prototype.addEventListener.call(this, a, f, b, e, d);
              a === c.HTTP_RESPONSE_STATUS && (this._httpResponseEventBound = !0);
            };
            m.prototype.onStreamOpen = function(a) {
              this.dispatchEvent(a);
            };
            m.prototype.onStreamComplete = function(a) {
              this.complete();
              this.dispatchEvent(a);
            };
            m.prototype.onStreamProgress = function(a) {
              this.$BgbytesLoaded = a.bytesLoaded;
              this.$BgbytesTotal = a.bytesTotal;
              this.dispatchEvent(a);
            };
            m.prototype.onStreamIOError = function(a) {
              this.complete();
              this.dispatchEvent(a);
            };
            m.prototype.onStreamHTTPStatus = function(a) {
              this.dispatchEvent(a);
            };
            m.prototype.onStreamHTTPResponseStatus = function(a) {
              this._httpResponseEventBound && this.dispatchEvent(a);
            };
            m.prototype.onStreamSecurityError = function(a) {
              this.dispatchEvent(a);
            };
            m.classInitializer = null;
            m.initializer = null;
            m.classSymbols = null;
            m.instanceSymbols = null;
            return m;
          }(a.events.EventDispatcher);
          d.URLLoader = q;
        })(a.net || (a.net = {}));
      })(a.flash || (a.flash = {}));
    })(d.AS || (d.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(n) {
        (function(w) {
          var v = d.AVM2.Runtime.asCoerceString, u = d.AVM2.Runtime.throwError, l = function(a) {
            function d(a) {
              void 0 === a && (a = null);
              this._url = v(a);
            }
            __extends(d, a);
            Object.defineProperty(d.prototype, "url", {get:function() {
              return this._url;
            }, set:function(a) {
              this._url = a = v(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "data", {get:function() {
              return this._data;
            }, set:function(a) {
              this._data = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "method", {get:function() {
              return this._method;
            }, set:function(a) {
              a = v(a);
              "get" !== a && "GET" !== a && "post" !== a && "POST" !== a && u("ArgumentError", k.Errors.InvalidArgumentError);
              this._method = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "contentType", {get:function() {
              return this._contentType;
            }, set:function(a) {
              this._contentType = a = v(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "requestHeaders", {get:function() {
              return this._requestHeaders;
            }, set:function(a) {
              Array.isArray(a) || u("ArgumentError", k.Errors.InvalidArgumentError, "value");
              this._requestHeaders = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "digest", {get:function() {
              return this._digest;
            }, set:function(a) {
              this._digest = a = v(a);
            }, enumerable:!0, configurable:!0});
            d.prototype._toFileRequest = function() {
              var a = {};
              a.url = this._url;
              a.method = this._method;
              a.checkPolicyFile = this._checkPolicyFile;
              if (this._data) {
                if (a.mimeType = this._contentType, n.utils.ByteArray.isType(this._data)) {
                  a.data = new Uint8Array(this._data._buffer, 0, this._data.length);
                } else {
                  var c = this._data.asGetPublicProperty("toString").call(this._data);
                  if ("GET" === this._method) {
                    var d = a.url.lastIndexOf("?");
                    a.url = (0 > d ? a.url : a.url.substring(0, d)) + "?" + c;
                  } else {
                    a.data = c;
                  }
                }
              }
              return a;
            };
            d.classInitializer = null;
            d.initializer = function() {
              this._url = null;
              this._method = "GET";
              this._digest = this._data = null;
              this._contentType = "application/x-www-form-urlencoded";
              this._requestHeaders = [];
              this._checkPolicyFile = !0;
            };
            d.classSymbols = null;
            d.bindings = null;
            return d;
          }(a.ASNative);
          w.URLRequest = l;
        })(n.net || (n.net = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.AVM2.Runtime.asCoerceString, u = function(a) {
            function c(a, c) {
              void 0 === a && (a = "");
              void 0 === c && (c = "");
              n(a);
              n(c);
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = ["name!", "value!"];
            return c;
          }(a.ASNative);
          k.URLRequestHeader = u;
        })(k.net || (k.net = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(w) {
          var v = d.Debug.notImplemented, u = d.Debug.dummyConstructor, l = d.AVM2.Runtime.asCoerceString, c = d.FileLoadingService, g = d.AVM2.Runtime.throwError, q = d.AVM2.AS.flash.utils, t = function(d) {
            function h() {
              u("public flash.net.URLStream");
            }
            __extends(h, d);
            Object.defineProperty(h.prototype, "connected", {get:function() {
              return this._connected;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "bytesAvailable", {get:function() {
              return this._buffer.length - this._buffer.position;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "objectEncoding", {get:function() {
              return this._buffer.objectEncoding;
            }, set:function(a) {
              this._buffer.objectEncoding = a >>> 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "endian", {get:function() {
              return this._buffer.endian;
            }, set:function(a) {
              a = l(a);
              this._buffer.endian = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "diskCacheEnabled", {get:function() {
              v("public flash.net.URLStream::get diskCacheEnabled");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "position", {get:function() {
              return this._buffer.position;
            }, set:function(a) {
              this._buffer.position = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "length", {get:function() {
              return this._buffer.length;
            }, enumerable:!0, configurable:!0});
            h.prototype.load = function(f) {
              var b = a.events.Event, e = a.events.IOErrorEvent, d = a.events.ProgressEvent, g = a.events.HTTPStatusEvent, h = c.instance.createSession(), l = this;
              h.onprogress = function(a, b) {
                var e = l._buffer.position;
                l._buffer.position = l._writePosition;
                l._buffer.writeRawBytes(a);
                l._writePosition = l._buffer.position;
                l._buffer.position = e;
                l.dispatchEvent(new d(d.PROGRESS, !1, !1, b.bytesLoaded, b.bytesTotal));
              };
              h.onerror = function(a) {
                l._connected = !1;
                l.dispatchEvent(new e(e.IO_ERROR, !1, !1, a));
              };
              h.onopen = function() {
                l._connected = !0;
                l.dispatchEvent(new b(b.OPEN, !1, !1));
              };
              h.onhttpstatus = function(b, e, c) {
                e = new g(g.HTTP_STATUS, !1, !1, e);
                var f = [];
                c.split(/(?:\n|\r?\n)/g).forEach(function(e) {
                  if (e = /^([^:]+): (.*)$/.exec(e)) {
                    f.push(new a.net.URLRequestHeader(e[1], e[2])), "Location" === e[1] && (b = e[2]);
                  }
                });
                e.asSetPublicProperty("responseHeaders", f);
                e.asSetPublicProperty("responseURL", b);
                l.dispatchEvent(e);
              };
              h.onclose = function() {
                l._connected = !1;
                l.dispatchEvent(new b(b.COMPLETE, !1, !1));
              };
              h.open(f._toFileRequest());
              this._session = h;
            };
            h.prototype.readBytes = function(a, b, e) {
              void 0 === b && (b = 0);
              void 0 === e && (e = 0);
              b >>>= 0;
              e >>>= 0;
              0 > e && g("ArgumentError", k.Errors.InvalidArgumentError, "length");
              this._buffer.readBytes(a, b, e);
            };
            h.prototype.readBoolean = function() {
              v("public flash.net.URLStream::readBoolean");
            };
            h.prototype.readByte = function() {
              return this._buffer.readByte();
            };
            h.prototype.readUnsignedByte = function() {
              v("public flash.net.URLStream::readUnsignedByte");
            };
            h.prototype.readShort = function() {
              v("public flash.net.URLStream::readShort");
            };
            h.prototype.readUnsignedShort = function() {
              return this._buffer.readUnsignedShort();
            };
            h.prototype.readUnsignedInt = function() {
              v("public flash.net.URLStream::readUnsignedInt");
            };
            h.prototype.readInt = function() {
              v("public flash.net.URLStream::readInt");
            };
            h.prototype.readFloat = function() {
              v("public flash.net.URLStream::readFloat");
            };
            h.prototype.readDouble = function() {
              v("public flash.net.URLStream::readDouble");
            };
            h.prototype.readMultiByte = function(a, b) {
              l(b);
              v("public flash.net.URLStream::readMultiByte");
            };
            h.prototype.readUTF = function() {
              return this._buffer.readUTF();
            };
            h.prototype.readUTFBytes = function(a) {
              return this._buffer.readUTFBytes(a);
            };
            h.prototype.close = function() {
              this._session.close();
            };
            h.prototype.readObject = function() {
              v("public flash.net.URLStream::readObject");
            };
            h.prototype.stop = function() {
              v("public flash.net.URLStream::stop");
            };
            h.classInitializer = null;
            h.initializer = function() {
              this._buffer = new q.ByteArray;
              this._writePosition = 0;
              this._connected = !1;
            };
            h.classSymbols = null;
            h.instanceSymbols = null;
            return h;
          }(a.events.EventDispatcher);
          w.URLStream = t;
        })(a.net || (a.net = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(n) {
        (function(n) {
          var v = d.AVM2.Runtime.asCoerceString, u = function(a) {
            function c(a) {
              void 0 === a && (a = null);
              this._ignoreDecodingErrors = !1;
              a && this.decode(a);
            }
            __extends(c, a);
            c.prototype.decode = function(a) {
              a = v(a);
              a = a.split("&");
              for (var c = 0;c < a.length;c++) {
                var d = a[c], l = d.indexOf("=");
                0 > l && (this._ignoreDecodingErrors ? l = d.length : throwError("Error", k.Errors.DecodeParamError));
                var h = unescape(d.substring(0, l).split("+").join(" ")), d = unescape(d.substring(l + 1).split("+").join(" ")), l = this.asGetPublicProperty(h);
                "undefined" === typeof l ? this.asSetPublicProperty(h, d) : Array.isArray(l) ? l.push(d) : this.asSetPublicProperty(h, [l, d]);
              }
            };
            c.prototype.toString = function() {
              for (var a = [], c = this.asGetEnumerableKeys(), d = 0;d < c.length;d++) {
                var l = c[d].split(" ").join("+"), h = this.asGetPublicProperty(l), l = escape(l).split(" ").join("+");
                if (Array.isArray(h)) {
                  for (var f = 0;f < h.length;f++) {
                    a.push(l + "=" + escape(h[f]));
                  }
                } else {
                  a.push(l + "=" + escape(h));
                }
              }
              return a.join("&");
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.ASNative);
          n.URLVariables = u;
        })(n.net || (n.net = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.Debug.notImplemented, u = d.Debug.dummyConstructor, l = function(a) {
            function d() {
              u("public flash.sensors.Accelerometer");
            }
            __extends(d, a);
            Object.defineProperty(d.prototype, "isSupported", {get:function() {
              v("public flash.sensors.Accelerometer::get isSupported");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "muted", {get:function() {
              v("public flash.sensors.Accelerometer::get muted");
            }, enumerable:!0, configurable:!0});
            d.prototype.setRequestedUpdateInterval = function(a) {
              v("public flash.sensors.Accelerometer::setRequestedUpdateInterval");
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(a.events.EventDispatcher);
          k.Accelerometer = l;
        })(a.sensors || (a.sensors = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.Debug.notImplemented, u = d.Debug.dummyConstructor, l = function(a) {
            function d() {
              u("public flash.sensors.Geolocation");
            }
            __extends(d, a);
            Object.defineProperty(d.prototype, "isSupported", {get:function() {
              v("public flash.sensors.Geolocation::get isSupported");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "muted", {get:function() {
              v("public flash.sensors.Geolocation::get muted");
            }, enumerable:!0, configurable:!0});
            d.prototype.setRequestedUpdateInterval = function(a) {
              v("public flash.sensors.Geolocation::setRequestedUpdateInterval");
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(a.events.EventDispatcher);
          k.Geolocation = l;
        })(a.sensors || (a.sensors = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.notImplemented, u = d.AVM2.Runtime.asCoerceString, l = d.AVM2.Runtime.AVM2, c = d.AVM2.Runtime.ApplicationDomain, g = d.AVM2.ABC.Multiname, q = function(a) {
            function d(a) {
              void 0 === a && (a = null);
              a instanceof c ? this._runtimeDomain = a : (a = a ? a._runtimeDomain : l.currentDomain().system, this._runtimeDomain = new c(a.vm, a, 2, !1));
            }
            __extends(d, a);
            Object.defineProperty(d, "currentDomain", {get:function() {
              return new d(l.currentDomain());
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "MIN_DOMAIN_MEMORY_LENGTH", {get:function() {
              n("public flash.system.ApplicationDomain::get MIN_DOMAIN_MEMORY_LENGTH");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "parentDomain", {get:function() {
              return this._runtimeDomain.base ? new d(this._runtimeDomain.base) : null;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "domainMemory", {get:function() {
              n("public flash.system.ApplicationDomain::get domainMemory");
            }, set:function(a) {
              n("public flash.system.ApplicationDomain::set domainMemory");
            }, enumerable:!0, configurable:!0});
            d.prototype.getDefinition = function(a) {
              return (a = u(a)) ? (a = a.replace("::", "."), this._runtimeDomain.getProperty(g.fromSimpleName(a), !0, !0)) : null;
            };
            d.prototype.hasDefinition = function(a) {
              return (a = u(a)) ? (a = a.replace("::", "."), !!this._runtimeDomain.findDomainProperty(g.fromSimpleName(a), !1, !1)) : !1;
            };
            d.prototype.getQualifiedDefinitionNames = function() {
              n("public flash.system.ApplicationDomain::getQualifiedDefinitionNames");
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(a.ASNative);
          k.ApplicationDomain = q;
        })(k.system || (k.system = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.notImplemented, u = d.Debug.dummyConstructor, l = d.AVM2.Runtime.asCoerceString, c = d.Debug.somewhatImplemented, g = d.ObjectUtilities.toKeyValueArray, q = function(a) {
            function d() {
              u("public flash.system.Capabilities");
            }
            __extends(d, a);
            Object.defineProperty(d, "isEmbeddedInAcrobat", {get:function() {
              n("public flash.system.Capabilities::get isEmbeddedInAcrobat");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "hasEmbeddedVideo", {get:function() {
              n("public flash.system.Capabilities::get hasEmbeddedVideo");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "hasAudio", {get:function() {
              n("public flash.system.Capabilities::get hasAudio");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "avHardwareDisable", {get:function() {
              n("public flash.system.Capabilities::get avHardwareDisable");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "hasAccessibility", {get:function() {
              c("public flash.system.Capabilities::get hasAccessibility");
              return d._hasAccessibility;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "hasAudioEncoder", {get:function() {
              n("public flash.system.Capabilities::get hasAudioEncoder");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "hasMP3", {get:function() {
              n("public flash.system.Capabilities::get hasMP3");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "hasPrinting", {get:function() {
              n("public flash.system.Capabilities::get hasPrinting");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "hasScreenBroadcast", {get:function() {
              n("public flash.system.Capabilities::get hasScreenBroadcast");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "hasScreenPlayback", {get:function() {
              n("public flash.system.Capabilities::get hasScreenPlayback");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "hasStreamingAudio", {get:function() {
              n("public flash.system.Capabilities::get hasStreamingAudio");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "hasStreamingVideo", {get:function() {
              n("public flash.system.Capabilities::get hasStreamingVideo");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "hasVideoEncoder", {get:function() {
              n("public flash.system.Capabilities::get hasVideoEncoder");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "isDebugger", {get:function() {
              c("public flash.system.Capabilities::get isDebugger");
              return d._isDebugger;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "localFileReadDisable", {get:function() {
              n("public flash.system.Capabilities::get localFileReadDisable");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "language", {get:function() {
              c("public flash.system.Capabilities::get language");
              return d._language;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "manufacturer", {get:function() {
              c("public flash.system.Capabilities::get manufacturer");
              return d._manufacturer;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "os", {get:function() {
              if (null === d._os) {
                var a, c = window.navigator.userAgent;
                0 < c.indexOf("Macintosh") ? a = "Mac OS 10.5.2" : 0 < c.indexOf("Windows") ? a = "Windows XP" : 0 < c.indexOf("Linux") ? a = "Linux" : /(iPad|iPhone|iPod|Android)/.test(c) ? a = "iPhone3,1" : n("public flash.system.Capabilities::get os");
                d._os = a;
              }
              return d._os;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "cpuArchitecture", {get:function() {
              n("public flash.system.Capabilities::get cpuArchitecture");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "playerType", {get:function() {
              c("public flash.system.Capabilities::get playerType");
              return d._playerType;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "serverString", {get:function() {
              var a = g({OS:d.os}).map(function(a) {
                return a[0] + "=" + encodeURIComponent(a[1]);
              }).join("&");
              c("Capabilities.serverString: " + a);
              return a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "version", {get:function() {
              return d._version;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "screenColor", {get:function() {
              return "color";
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "pixelAspectRatio", {get:function() {
              n("public flash.system.Capabilities::get pixelAspectRatio");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "screenDPI", {get:function() {
              c("public flash.system.Capabilities::get screenDPI");
              return d._screenDPI;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "screenResolutionX", {get:function() {
              c("public flash.system.Capabilities::get screenResolutionX");
              return window.screen.width;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "screenResolutionY", {get:function() {
              c("public flash.system.Capabilities::get screenResolutionY");
              return window.screen.height;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "touchscreenType", {get:function() {
              n("public flash.system.Capabilities::get touchscreenType");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "hasIME", {get:function() {
              n("public flash.system.Capabilities::get hasIME");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "hasTLS", {get:function() {
              n("public flash.system.Capabilities::get hasTLS");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "maxLevelIDC", {get:function() {
              n("public flash.system.Capabilities::get maxLevelIDC");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "supports32BitProcesses", {get:function() {
              n("public flash.system.Capabilities::get supports32BitProcesses");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "supports64BitProcesses", {get:function() {
              n("public flash.system.Capabilities::get supports64BitProcesses");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "_internal", {get:function() {
              n("public flash.system.Capabilities::get _internal");
            }, enumerable:!0, configurable:!0});
            d.hasMultiChannelAudio = function(a) {
              l(a);
              n("public flash.system.Capabilities::static hasMultiChannelAudio");
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d._hasAccessibility = !1;
            d._isDebugger = !1;
            d._language = "en";
            d._manufacturer = "Mozilla Research";
            d._os = null;
            d._playerType = "PlugIn";
            d._version = "SHUMWAY 10,0,0,0";
            d._screenDPI = 96;
            return d;
          }(a.ASNative);
          k.Capabilities = q;
        })(k.system || (k.system = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = d.AVM2.Runtime.asCoerceString, l = function(a) {
            function g() {
              n("packageInternal flash.system.FSCommand");
            }
            __extends(g, a);
            g._fscommand = function(a, c) {
              a = u(a);
              c = u(c);
              console.log("FSCommand: " + a + "; " + c);
              a = a.toLowerCase();
              if ("debugger" === a) {
                debugger;
              } else {
                d.AVM2.Runtime.AVM2.instance.globals["Shumway.Player.Utils"].executeFSCommand(a, c);
              }
            };
            g.classInitializer = null;
            g.initializer = null;
            g.classSymbols = null;
            g.instanceSymbols = null;
            return g;
          }(a.ASNative);
          k.FSCommand = l;
        })(k.system || (k.system = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.system.ImageDecodingPolicy");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.ON_DEMAND = "onDemand";
            c.ON_LOAD = "onLoad";
            return c;
          }(a.ASNative);
          k.ImageDecodingPolicy = u;
        })(k.system || (k.system = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(d) {
        (function(k) {
          var v = function(a) {
            function l(a, g, l) {
              void 0 === a && (a = !1);
              void 0 === g && (g = null);
              void 0 === l && (l = null);
              this.checkPolicyFile = a;
              this.applicationDomain = g;
              this.securityDomain = l;
              this.imageDecodingPolicy = d.system.ImageDecodingPolicy.ON_DEMAND;
            }
            __extends(l, a);
            l.classInitializer = null;
            l.initializer = null;
            l.classSymbols = null;
            l.instanceSymbols = "checkPolicyFile! applicationDomain! securityDomain! allowCodeImport! requestedContentParent! parameters! imageDecodingPolicy!".split(" ");
            return l;
          }(a.ASNative);
          k.LoaderContext = v;
        })(d.system || (d.system = {}));
      })(a.flash || (a.flash = {}));
    })(d.AS || (d.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.Debug.dummyConstructor, u = function(a) {
            function c(a, c, d, l) {
              v("public flash.system.JPEGLoaderContext");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.system.LoaderContext);
          k.JPEGLoaderContext = u;
        })(a.system || (a.system = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.Debug.notImplemented, u = d.Debug.dummyConstructor, l = function(a) {
            function d() {
              u("public flash.system.MessageChannel");
            }
            __extends(d, a);
            Object.defineProperty(d.prototype, "messageAvailable", {get:function() {
              v("public flash.system.MessageChannel::get messageAvailable");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "state", {get:function() {
              v("public flash.system.MessageChannel::get state");
            }, enumerable:!0, configurable:!0});
            d.prototype.send = function(a, c) {
              v("public flash.system.MessageChannel::send");
            };
            d.prototype.receive = function(a) {
              v("public flash.system.MessageChannel::receive");
            };
            d.prototype.close = function() {
              v("public flash.system.MessageChannel::close");
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(a.events.EventDispatcher);
          k.MessageChannel = l;
        })(a.system || (a.system = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.system.MessageChannelState");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.OPEN = "open";
            c.CLOSING = "closing";
            c.CLOSED = "closed";
            return c;
          }(a.ASNative);
          k.MessageChannelState = u;
        })(k.system || (k.system = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.notImplemented, u = d.Debug.dummyConstructor, l = d.AVM2.Runtime.asCoerceString, c = d.Debug.somewhatImplemented, g = function(a) {
            function g() {
              u("public flash.system.Security");
            }
            __extends(g, a);
            Object.defineProperty(g, "exactSettings", {get:function() {
              return g._exactSettings;
            }, set:function(a) {
              g._exactSettings = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g, "disableAVM1Loading", {get:function() {
              n("public flash.system.Security::get disableAVM1Loading");
            }, set:function(a) {
              n("public flash.system.Security::set disableAVM1Loading");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g, "sandboxType", {get:function() {
              c("public flash.system.Security::get sandboxType");
              return g._sandboxType;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g, "pageDomain", {get:function() {
              c("public flash.system.Security::get pageDomain");
              var a = d.FileLoadingService.instance.resolveUrl("/").split("/");
              a.pop();
              return a.pop();
            }, enumerable:!0, configurable:!0});
            g.allowDomain = function() {
              c('public flash.system.Security::static allowDomain ["' + Array.prototype.join.call(arguments, '", "') + '"]');
              for (var a = d.AVM2.Runtime.AVM2.instance.globals["Shumway.Player.Utils"], g = 0;g < arguments.length;g++) {
                a.addToSWFLoadingWhitelist(l(arguments[g]), !1);
              }
            };
            g.allowInsecureDomain = function() {
              c("public flash.system.Security::static allowInsecureDomain");
              for (var a = d.AVM2.Runtime.AVM2.instance.globals["Shumway.Player.Utils"], g = 0;g < arguments.length;g++) {
                a.addToSWFLoadingWhitelist(l(arguments[g]), !0);
              }
            };
            g.loadPolicyFile = function(a) {
              l(a);
              c("public flash.system.Security::static loadPolicyFile");
            };
            g.showSettings = function(a) {
              void 0 === a && (a = "default");
              l(a);
              n("public flash.system.Security::static showSettings");
            };
            g.duplicateSandboxBridgeInputArguments = function(a, c) {
              n("public flash.system.Security::static duplicateSandboxBridgeInputArguments");
            };
            g.duplicateSandboxBridgeOutputArgument = function(a, c) {
              n("public flash.system.Security::static duplicateSandboxBridgeOutputArgument");
            };
            g.classInitializer = null;
            g.initializer = null;
            g.classSymbols = null;
            g.instanceSymbols = null;
            g.REMOTE = "remote";
            g.LOCAL_WITH_FILE = "localWithFile";
            g.LOCAL_WITH_NETWORK = "localWithNetwork";
            g.LOCAL_TRUSTED = "localTrusted";
            g.APPLICATION = "application";
            g._exactSettings = !1;
            g._sandboxType = "remote";
            return g;
          }(a.ASNative);
          k.Security = g;
        })(k.system || (k.system = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.somewhatImplemented, u = function(a) {
            function c() {
            }
            __extends(c, a);
            Object.defineProperty(c, "currentDomain", {get:function() {
              this._currentDomain || (this._currentDomain = new k.SecurityDomain);
              n("public flash.system.SecurityDomain::get currentDomain");
              return this._currentDomain;
            }, enumerable:!0, configurable:!0});
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.ASNative);
          k.SecurityDomain = u;
        })(k.system || (k.system = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.system.SecurityPanel");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.DEFAULT = "default";
            c.PRIVACY = "privacy";
            c.LOCAL_STORAGE = "localStorage";
            c.MICROPHONE = "microphone";
            c.CAMERA = "camera";
            c.DISPLAY = "display";
            c.SETTINGS_MANAGER = "settingsManager";
            return c;
          }(a.ASNative);
          k.SecurityPanel = u;
        })(k.system || (k.system = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.system.TouchscreenType");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.FINGER = "finger";
            c.STYLUS = "stylus";
            c.NONE = "none";
            return c;
          }(a.ASNative);
          k.TouchscreenType = u;
        })(k.system || (k.system = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(d) {
        (function(d) {
          var k = function(a) {
            function d() {
              a.call(this);
            }
            __extends(d, a);
            d.fromNumber = function(a) {
              switch(a) {
                case 1:
                  return d.NORMAL;
                case 2:
                  return d.ADVANCED;
                default:
                  return null;
              }
            };
            d.toNumber = function(a) {
              switch(a) {
                case d.NORMAL:
                  return 1;
                case d.ADVANCED:
                  return 2;
                default:
                  return -1;
              }
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.NORMAL = "normal";
            d.ADVANCED = "advanced";
            return d;
          }(a.ASNative);
          d.AntiAliasType = k;
        })(d.text || (d.text = {}));
      })(a.flash || (a.flash = {}));
    })(d.AS || (d.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(d) {
        (function(d) {
          var k = function(a) {
            function d() {
              a.call(this);
            }
            __extends(d, a);
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.REGULAR = "regular";
            d.BOLD = "bold";
            d.ITALIC = "italic";
            d.BOLD_ITALIC = "boldItalic";
            return d;
          }(a.ASNative);
          d.FontStyle = k;
        })(d.text || (d.text = {}));
      })(a.flash || (a.flash = {}));
    })(d.AS || (d.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(d) {
        (function(d) {
          var k = function(a) {
            function d() {
              a.call(this);
            }
            __extends(d, a);
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.EMBEDDED = "embedded";
            d.EMBEDDED_CFF = "embeddedCFF";
            d.DEVICE = "device";
            return d;
          }(a.ASNative);
          d.FontType = k;
        })(d.text || (d.text = {}));
      })(a.flash || (a.flash = {}));
    })(d.AS || (d.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(w) {
          var v = d.Debug.somewhatImplemented, u = d.AVM2.Runtime.asCoerceString, l = k.text.FontStyle, c = k.text.FontType, g = function(a) {
            function g() {
            }
            __extends(g, a);
            g._getFontMetrics = function(a, c) {
              return this._deviceFontMetrics[a + c] || this._deviceFontMetrics[a];
            };
            g.resolveFontName = function(a) {
              return "_sans" === a ? g.DEFAULT_FONT_SANS : "_serif" === a ? g.DEFAULT_FONT_SERIF : "_typewriter" === a ? g.DEFAULT_FONT_TYPEWRITER : a;
            };
            g.getBySymbolId = function(a) {
              return this._fontsBySymbolId[a];
            };
            g.getByNameAndStyle = function(a, f) {
              for (var b, e, d = a.split(","), l = 0;l < d.length && !e;l++) {
                b = d[l].toLowerCase() + f, e = this._fontsByName[b];
              }
              e || (e = new g, e._fontName = d[0], e._fontFamily = g.resolveFontName(d[0].toLowerCase()), e._fontStyle = f, e._fontType = c.DEVICE, this._fontsByName[b] = e);
              e._fontType === c.DEVICE && (b = g._getFontMetrics(e._fontName, e._fontStyle), b || (b = g._getFontMetrics(g.DEFAULT_FONT_SANS, e._fontStyle), e._fontFamily = g.DEFAULT_FONT_SANS), e.ascent = b[0], e.descent = b[1], e.leading = b[2]);
              return e;
            };
            g.getDefaultFont = function() {
              return g.getByNameAndStyle(g.DEFAULT_FONT_SANS, l.REGULAR);
            };
            g.enumerateFonts = function(a) {
              v("public flash.text.Font::static enumerateFonts");
              return g._fonts.slice();
            };
            g.registerFont = function(a) {
              v("Font.registerFont");
            };
            g.registerEmbeddedFont = function(a, c) {
              var b = k.display.DisplayObject.getNextSyncID(), e = {get:g.resolveEmbeddedFont.bind(g, c, a.id, b), configurable:!0};
              Object.defineProperty(g._fontsByName, a.name.toLowerCase() + a.style, e);
              Object.defineProperty(g._fontsByName, "swffont" + b + a.style, e);
              Object.defineProperty(g._fontsBySymbolId, b + "", e);
            };
            g.resolveEmbeddedFont = function(a, c, b) {
              a.getSymbolById(c).syncId = b;
              return g._fontsBySymbolId[c];
            };
            Object.defineProperty(g.prototype, "fontName", {get:function() {
              return this._fontName;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "fontStyle", {get:function() {
              return this._fontStyle;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "fontType", {get:function() {
              return this._fontType;
            }, enumerable:!0, configurable:!0});
            g.prototype.hasGlyphs = function(a) {
              u(a);
              v("Font#hasGlyphs");
              return !0;
            };
            g.DEFAULT_FONT_SANS = "Arial";
            g.DEFAULT_FONT_SERIF = "Times New Roman";
            g.DEFAULT_FONT_TYPEWRITER = "Courier New";
            g.classInitializer = function() {
              g._fonts = [];
              g._fontsBySymbolId = d.ObjectUtilities.createMap();
              g._fontsByName = d.ObjectUtilities.createMap();
              g.DEVICE_FONT_METRICS_WIN = {Arial:[1, .25, 0], "Arial Baltic":[1, .25, 0], "Arial Black":[1.0833, .3333, 0], "Arial CE":[1, .25, 0], "Arial CYR":[1, .25, 0], "Arial Greek":[1, .25, 0], "Arial TUR":[1, .25, 0], "Comic Sans MS":[1.0833, .3333, 0], "Courier New":[1, .25, 0], "Courier New Baltic":[1, .25, 0], "Courier New CE":[1, .25, 0], "Courier New CYR":[1, .25, 0], "Courier New Greek":[1, .25, 0], "Courier New TUR":[1, .25, 0], "Estrangelo Edessa":[.75, .3333, 0], "Franklin Gothic Medium":[1, 
              .3333, 0], Gautami:[.9167, .8333, 0], Georgia:[1, .25, 0], Impact:[1.0833, .25, 0], Latha:[1.0833, .25, 0], "Lucida Console":[.75, .25, 0], "Lucida Sans Unicode":[1.0833, .25, 0], Mangal:[1.0833, .25, 0], Marlett:[1, 0, 0], "Microsoft Sans Serif":[1.0833, .1667, 0], "MV Boli":[.9167, .25, 0], "Palatino Linotype":[1.0833, .3333, 0], Raavi:[1.0833, .6667, 0], Shruti:[1, .5, 0], Sylfaen:[1, .3333, 0], Symbol:[1, .25, 0], Tahoma:[1, .1667, 0], "Times New Roman":[1, .25, 0], "Times New Roman Baltic":[1, 
              .25, 0], "Times New Roman CE":[1, .25, 0], "Times New Roman CYR":[1, .25, 0], "Times New Roman Greek":[1, .25, 0], "Times New Roman TUR":[1, .25, 0], "Trebuchet MS":[1.0833, .4167, 0], Tunga:[1, .75, 0], Verdana:[1, .1667, 0], Webdings:[1.0833, .5, 0], Wingdings:[.9167, .25, 0]};
              g.DEVICE_FONT_METRICS_MAC = {"Al Bayan Bold":[1, .5833, 0], "Al Bayan Plain":[1, .5, 0], "Al Nile":[.8333, .5, 0], "Al Nile Bold":[.8333, .5, 0], "Al Tarikh Regular":[.5833, .4167, 0], "American Typewriter":[.9167, .25, 0], "American Typewriter Bold":[.9167, .25, 0], "American Typewriter Condensed":[.9167, .25, 0], "American Typewriter Condensed Bold":[.9167, .25, 0], "American Typewriter Condensed Light":[.8333, .25, 0], "American Typewriter Light":[.9167, .25, 0], "Andale Mono":[.9167, 
              .25, 0], "Apple Braille":[.75, .25, 0], "Apple Braille Outline 6 Dot":[.75, .25, 0], "Apple Braille Outline 8 Dot":[.75, .25, 0], "Apple Braille Pinpoint 6 Dot":[.75, .25, 0], "Apple Braille Pinpoint 8 Dot":[.75, .25, 0], "Apple Chancery":[1.0833, .5, 0], "Apple Color Emoji":[1.25, .4167, 0], "Apple SD Gothic Neo Bold":[.9167, .3333, 0], "Apple SD Gothic Neo Heavy":[.9167, .3333, 0], "Apple SD Gothic Neo Light":[.9167, .3333, 0], "Apple SD Gothic Neo Medium":[.9167, .3333, 0], "Apple SD Gothic Neo Regular":[.9167, 
              .3333, 0], "Apple SD Gothic Neo SemiBold":[.9167, .3333, 0], "Apple SD Gothic Neo Thin":[.9167, .3333, 0], "Apple SD Gothic Neo UltraLight":[.9167, .3333, 0], "Apple SD GothicNeo ExtraBold":[.9167, .3333, 0], "Apple Symbols":[.6667, .25, 0], "AppleGothic Regular":[.9167, .3333, 0], "AppleMyungjo Regular":[.8333, .3333, 0], Arial:[.9167, .25, 0], "Arial Black":[1.0833, .3333, 0], "Arial Bold":[.9167, .25, 0], "Arial Bold Italic":[.9167, .25, 0], "Arial Hebrew":[.75, .3333, 0], "Arial Hebrew Bold":[.75, 
              .3333, 0], "Arial Hebrew Light":[.75, .3333, 0], "Arial Hebrew Scholar":[.75, .3333, 0], "Arial Hebrew Scholar Bold":[.75, .3333, 0], "Arial Hebrew Scholar Light":[.75, .3333, 0], "Arial Italic":[.9167, .25, 0], "Arial Narrow":[.9167, .25, 0], "Arial Narrow Bold":[.9167, .25, 0], "Arial Narrow Bold Italic":[.9167, .25, 0], "Arial Narrow Italic":[.9167, .25, 0], "Arial Rounded MT Bold":[.9167, .25, 0], "Arial Unicode MS":[1.0833, .25, 0], "Athelas Bold":[.9167, .25, 0], "Athelas Bold Italic":[.9167, 
              .25, 0], "Athelas Italic":[.9167, .25, 0], "Athelas Regular":[.9167, .25, 0], "Avenir Black":[1, .3333, 0], "Avenir Black Oblique":[1, .3333, 0], "Avenir Book":[1, .3333, 0], "Avenir Book Oblique":[1, .3333, 0], "Avenir Heavy":[1, .3333, 0], "Avenir Heavy Oblique":[1, .3333, 0], "Avenir Light":[1, .3333, 0], "Avenir Light Oblique":[1, .3333, 0], "Avenir Medium":[1, .3333, 0], "Avenir Medium Oblique":[1, .3333, 0], "Avenir Next Bold":[1, .3333, 0], "Avenir Next Bold Italic":[1, .3333, 
              0], "Avenir Next Condensed Bold":[1, .3333, 0], "Avenir Next Condensed Bold Italic":[1, .3333, 0], "Avenir Next Condensed Demi Bold":[1, .3333, 0], "Avenir Next Condensed Demi Bold Italic":[1, .3333, 0], "Avenir Next Condensed Heavy":[1, .3333, 0], "Avenir Next Condensed Heavy Italic":[1, .3333, 0], "Avenir Next Condensed Italic":[1, .3333, 0], "Avenir Next Condensed Medium":[1, .3333, 0], "Avenir Next Condensed Medium Italic":[1, .3333, 0], "Avenir Next Condensed Regular":[1, .3333, 
              0], "Avenir Next Condensed Ultra Light":[1, .3333, 0], "Avenir Next Condensed Ultra Light Italic":[1, .3333, 0], "Avenir Next Demi Bold":[1, .3333, 0], "Avenir Next Demi Bold Italic":[1, .3333, 0], "Avenir Next Heavy":[1, .3333, 0], "Avenir Next Heavy Italic":[1, .3333, 0], "Avenir Next Italic":[1, .3333, 0], "Avenir Next Medium":[1, .3333, 0], "Avenir Next Medium Italic":[1, .3333, 0], "Avenir Next Regular":[1, .3333, 0], "Avenir Next Ultra Light":[1, .3333, 0], "Avenir Next Ultra Light Italic":[1, 
              .3333, 0], "Avenir Oblique":[1, .3333, 0], "Avenir Roman":[1, .3333, 0], Ayuthaya:[1.0833, .3333, 0], "Baghdad Regular":[.9167, .4167, 0], "Bangla MN":[1.0833, .75, 0], "Bangla MN Bold":[1.0833, .75, 0], "Bangla Sangam MN":[.9167, .4167, 0], "Bangla Sangam MN Bold":[.9167, .4167, 0], "Baoli SC Regular":[1.0833, .3333, 0], Baskerville:[.9167, .25, 0], "Baskerville Bold":[.9167, .25, 0], "Baskerville Bold Italic":[.9167, .25, 0], "Baskerville Italic":[.9167, .25, 0], "Baskerville SemiBold":[.9167, 
              .25, 0], "Baskerville SemiBold Italic":[.9167, .25, 0], "Beirut Regular":[.75, .25, 0], "Big Caslon Medium":[.9167, .25, 0], "Bodoni 72 Bold":[.9167, .25, 0], "Bodoni 72 Book":[.9167, .25, 0], "Bodoni 72 Book Italic":[.9167, .3333, 0], "Bodoni 72 Oldstyle Bold":[.9167, .25, 0], "Bodoni 72 Oldstyle Book":[.9167, .25, 0], "Bodoni 72 Oldstyle Book Italic":[.9167, .3333, 0], "Bodoni 72 Smallcaps Book":[.9167, .25, 0], "Bodoni Ornaments":[.8333, .1667, 0], "Bradley Hand Bold":[.8333, .4167, 
              0], "Brush Script MT Italic":[.9167, .3333, 0], Chalkboard:[1, .25, 0], "Chalkboard Bold":[1, .25, 0], "Chalkboard SE Bold":[1.1667, .25, 0], "Chalkboard SE Light":[1.1667, .25, 0], "Chalkboard SE Regular":[1.1667, .25, 0], Chalkduster:[1, .25, 0], "Charter Black":[1, .25, 0], "Charter Black Italic":[1, .25, 0], "Charter Bold":[1, .25, 0], "Charter Bold Italic":[1, .25, 0], "Charter Italic":[1, .25, 0], "Charter Roman":[1, .25, 0], Cochin:[.9167, .25, 0], "Cochin Bold":[.9167, .25, 
              0], "Cochin Bold Italic":[.9167, .25, 0], "Cochin Italic":[.9167, .25, 0], "Comic Sans MS":[1.0833, .25, 0], "Comic Sans MS Bold":[1.0833, .25, 0], Copperplate:[.75, .25, 0], "Copperplate Bold":[.75, .25, 0], "Copperplate Light":[.75, .25, 0], "Corsiva Hebrew":[.6667, .3333, 0], "Corsiva Hebrew Bold":[.6667, .3333, 0], Courier:[.75, .25, 0], "Courier Bold":[.75, .25, 0], "Courier Bold Oblique":[.75, .25, 0], "Courier New":[.8333, .3333, 0], "Courier New Bold":[.8333, .3333, 0], "Courier New Bold Italic":[.8333, 
              .3333, 0], "Courier New Italic":[.8333, .3333, 0], "Courier Oblique":[.75, .25, 0], "Damascus Bold":[.5833, .4167, 0], "Damascus Light":[.5833, .4167, 0], "Damascus Medium":[.5833, .4167, 0], "Damascus Regular":[.5833, .4167, 0], "Damascus Semi Bold":[.5833, .4167, 0], "DecoType Naskh Regular":[1.1667, .6667, 0], "Devanagari MT":[.9167, .6667, 0], "Devanagari MT Bold":[.9167, .6667, 0], "Devanagari Sangam MN":[.9167, .4167, 0], "Devanagari Sangam MN Bold":[.9167, .4167, 0], Didot:[.9167, 
              .3333, 0], "Didot Bold":[1, .3333, 0], "Didot Italic":[.9167, .25, 0], "DIN Alternate Bold":[.9167, .25, 0], "DIN Condensed Bold":[.75, .25, 0], "Diwan Kufi Regular":[1.4167, .5, 0], "Diwan Thuluth Regular":[1, .6667, 0], "Euphemia UCAS":[1.0833, .25, 0], "Euphemia UCAS Bold":[1.0833, .25, 0], "Euphemia UCAS Italic":[1.0833, .25, 0], "Farah Regular":[.75, .25, 0], "Farisi Regular":[1.0833, 1, 0], "Futura Condensed ExtraBold":[1, .25, 0], "Futura Condensed Medium":[1, .25, 0], "Futura Medium":[1, 
              .25, 0], "Futura Medium Italic":[1, .25, 0], "GB18030 Bitmap":[1.1667, .1667, 0], "Geeza Pro Bold":[.9167, .3333, 0], "Geeza Pro Regular":[.9167, .3333, 0], Geneva:[1, .25, 0], Georgia:[.9167, .25, 0], "Georgia Bold":[.9167, .25, 0], "Georgia Bold Italic":[.9167, .25, 0], "Georgia Italic":[.9167, .25, 0], "Gill Sans":[.9167, .25, 0], "Gill Sans Bold":[.9167, .25, 0], "Gill Sans Bold Italic":[.9167, .25, 0], "Gill Sans Italic":[.9167, .25, 0], "Gill Sans Light":[.9167, .25, 0], "Gill Sans Light Italic":[.9167, 
              .25, 0], "Gill Sans SemiBold":[.9167, .25, 0], "Gill Sans SemiBold Italic":[.9167, .25, 0], "Gill Sans UltraBold":[1, .25, 0], "Gujarati MT":[.9167, .6667, 0], "Gujarati MT Bold":[.9167, .6667, 0], "Gujarati Sangam MN":[.8333, .4167, 0], "Gujarati Sangam MN Bold":[.8333, .4167, 0], "GungSeo Regular":[.8333, .25, 0], "Gurmukhi MN":[.9167, .25, 0], "Gurmukhi MN Bold":[.9167, .25, 0], "Gurmukhi MT":[.8333, .4167, 0], "Gurmukhi Sangam MN":[.9167, .3333, 0], "Gurmukhi Sangam MN Bold":[.9167, 
              .3333, 0], "Hannotate SC Bold":[1.0833, .3333, 0], "Hannotate SC Regular":[1.0833, .3333, 0], "Hannotate TC Bold":[1.0833, .3333, 0], "Hannotate TC Regular":[1.0833, .3333, 0], "HanziPen SC Bold":[1.0833, .3333, 0], "HanziPen SC Regular":[1.0833, .3333, 0], "HanziPen TC Bold":[1.0833, .3333, 0], "HanziPen TC Regular":[1.0833, .3333, 0], "HeadLineA Regular":[.8333, .1667, 0], "Heiti SC Light":[.8333, .1667, 0], "Heiti SC Medium":[.8333, .1667, 0], "Heiti TC Light":[.8333, .1667, 0], 
              "Heiti TC Medium":[.8333, .1667, 0], Helvetica:[.75, .25, 0], "Helvetica Bold":[.75, .25, 0], "Helvetica Bold Oblique":[.75, .25, 0], "Helvetica Light":[.75, .25, 0], "Helvetica Light Oblique":[.75, .25, 0], "Helvetica Neue":[.9167, .25, 0], "Helvetica Neue Bold":[1, .25, 0], "Helvetica Neue Bold Italic":[1, .25, 0], "Helvetica Neue Condensed Black":[1, .25, 0], "Helvetica Neue Condensed Bold":[1, .25, 0], "Helvetica Neue Italic":[.9167, .25, 0], "Helvetica Neue Light":[1, .25, 0], 
              "Helvetica Neue Light Italic":[.9167, .25, 0], "Helvetica Neue Medium":[1, .25, 0], "Helvetica Neue Medium Italic":[1, .25, 0], "Helvetica Neue Thin":[1, .25, 0], "Helvetica Neue Thin Italic":[1, .25, 0], "Helvetica Neue UltraLight":[.9167, .25, 0], "Helvetica Neue UltraLight Italic":[.9167, .25, 0], "Helvetica Oblique":[.75, .25, 0], Herculanum:[.8333, .1667, 0], "Hiragino Kaku Gothic Pro W3":[.9167, .0833, 0], "Hiragino Kaku Gothic Pro W6":[.9167, .0833, 0], "Hiragino Kaku Gothic ProN W3":[.9167, 
              .0833, 0], "Hiragino Kaku Gothic ProN W6":[.9167, .0833, 0], "Hiragino Kaku Gothic Std W8":[.9167, .0833, 0], "Hiragino Kaku Gothic StdN W8":[.9167, .0833, 0], "Hiragino Maru Gothic Pro W4":[.9167, .0833, 0], "Hiragino Maru Gothic ProN W4":[.9167, .0833, 0], "Hiragino Mincho Pro W3":[.9167, .0833, 0], "Hiragino Mincho Pro W6":[.9167, .0833, 0], "Hiragino Mincho ProN W3":[.9167, .0833, 0], "Hiragino Mincho ProN W6":[.9167, .0833, 0], "Hiragino Sans GB W3":[.9167, .0833, 0], "Hiragino Sans GB W6":[.9167, 
              .0833, 0], "Hoefler Text":[.75, .25, 0], "Hoefler Text Black":[.75, .25, 0], "Hoefler Text Black Italic":[.75, .25, 0], "Hoefler Text Italic":[.75, .25, 0], "Hoefler Text Ornaments":[.8333, .1667, 0], Impact:[1, .25, 0], InaiMathi:[.8333, .4167, 0], "Iowan Old Style Black":[1, .3333, 0], "Iowan Old Style Black Italic":[1, .3333, 0], "Iowan Old Style Bold":[1, .3333, 0], "Iowan Old Style Bold Italic":[1, .3333, 0], "Iowan Old Style Italic":[1, .3333, 0], "Iowan Old Style Roman":[1, .3333, 
              0], "Iowan Old Style Titling":[1, .3333, 0], "ITF Devanagari Bold":[1.0833, .3333, 0], "ITF Devanagari Book":[1.0833, .3333, 0], "ITF Devanagari Demi":[1.0833, .3333, 0], "ITF Devanagari Light":[1.0833, .3333, 0], "ITF Devanagari Medium":[1.0833, .3333, 0], "Kailasa Regular":[1.0833, .5833, 0], "Kaiti SC Black":[1.0833, .3333, 0], "Kaiti SC Bold":[1.0833, .3333, 0], "Kaiti SC Regular":[1.0833, .3333, 0], "Kaiti TC Bold":[1.0833, .3333, 0], "Kaiti TC Regular":[1.0833, .3333, 0], "Kannada MN":[.9167, 
              .25, 0], "Kannada MN Bold":[.9167, .25, 0], "Kannada Sangam MN":[1, .5833, 0], "Kannada Sangam MN Bold":[1, .5833, 0], "Kefa Bold":[.9167, .25, 0], "Kefa Regular":[.9167, .25, 0], "Khmer MN":[1, .8333, 0], "Khmer MN Bold":[1, .8333, 0], "Khmer Sangam MN":[1.0833, .8333, 0], "Kohinoor Devanagari Bold":[1.0833, .3333, 0], "Kohinoor Devanagari Book":[1.0833, .3333, 0], "Kohinoor Devanagari Demi":[1.0833, .3333, 0], "Kohinoor Devanagari Light":[1.0833, .3333, 0], "Kohinoor Devanagari Medium":[1.0833, 
              .3333, 0], "Kokonor Regular":[1.0833, .5833, 0], Krungthep:[1, .25, 0], "KufiStandardGK Regular":[.9167, .5, 0], "Lantinghei SC Demibold":[1, .3333, 0], "Lantinghei SC Extralight":[1, .3333, 0], "Lantinghei SC Heavy":[1, .3333, 0], "Lantinghei TC Demibold":[1, .3333, 0], "Lantinghei TC Extralight":[1, .3333, 0], "Lantinghei TC Heavy":[1, .3333, 0], "Lao MN":[.9167, .4167, 0], "Lao MN Bold":[.9167, .4167, 0], "Lao Sangam MN":[1, .3333, 0], "Libian SC Regular":[1.0833, .3333, 0], "LiHei Pro":[.8333, 
              .1667, 0], "LiSong Pro":[.8333, .1667, 0], "Lucida Grande":[1, .25, 0], "Lucida Grande Bold":[1, .25, 0], Luminari:[1, .3333, 0], "Malayalam MN":[1, .4167, 0], "Malayalam MN Bold":[1, .4167, 0], "Malayalam Sangam MN":[.8333, .4167, 0], "Malayalam Sangam MN Bold":[.8333, .4167, 0], "Marion Bold":[.6667, .3333, 0], "Marion Italic":[.6667, .3333, 0], "Marion Regular":[.6667, .3333, 0], "Marker Felt Thin":[.8333, .25, 0], "Marker Felt Wide":[.9167, .25, 0], "Menlo Bold":[.9167, .25, 0], 
              "Menlo Bold Italic":[.9167, .25, 0], "Menlo Italic":[.9167, .25, 0], "Menlo Regular":[.9167, .25, 0], "Microsoft Sans Serif":[.9167, .25, 0], "Mishafi Gold Regular":[.75, .6667, 0], "Mishafi Regular":[.75, .6667, 0], Monaco:[1, .25, 0], Mshtakan:[.9167, .25, 0], "Mshtakan Bold":[.9167, .25, 0], "Mshtakan BoldOblique":[.9167, .25, 0], "Mshtakan Oblique":[.9167, .25, 0], "Muna Black":[.75, .3333, 0], "Muna Bold":[.75, .3333, 0], "Muna Regular":[.75, .3333, 0], "Myanmar MN":[1, .4167, 
              0], "Myanmar MN Bold":[1, .4167, 0], "Myanmar Sangam MN":[.9167, .4167, 0], "Nadeem Regular":[.9167, .4167, 0], "Nanum Brush Script":[.9167, .25, 0], "Nanum Pen Script":[.9167, .25, 0], NanumGothic:[.9167, .25, 0], "NanumGothic Bold":[.9167, .25, 0], "NanumGothic ExtraBold":[.9167, .25, 0], NanumMyeongjo:[.9167, .25, 0], "NanumMyeongjo Bold":[.9167, .25, 0], "NanumMyeongjo ExtraBold":[.9167, .25, 0], "New Peninim MT":[.75, .3333, 0], "New Peninim MT Bold":[.75, .3333, 0], "New Peninim MT Bold Inclined":[.75, 
              .3333, 0], "New Peninim MT Inclined":[.75, .3333, 0], "Noteworthy Bold":[1.25, .3333, 0], "Noteworthy Light":[1.25, .3333, 0], "Optima Bold":[.9167, .25, 0], "Optima Bold Italic":[.9167, .25, 0], "Optima ExtraBlack":[1, .25, 0], "Optima Italic":[.9167, .25, 0], "Optima Regular":[.9167, .25, 0], "Oriya MN":[.9167, .25, 0], "Oriya MN Bold":[.9167, .25, 0], "Oriya Sangam MN":[.8333, .4167, 0], "Oriya Sangam MN Bold":[.8333, .4167, 0], Osaka:[1, .25, 0], "Osaka-Mono":[.8333, .1667, 0], 
              Palatino:[.8333, .25, 0], "Palatino Bold":[.8333, .25, 0], "Palatino Bold Italic":[.8333, .25, 0], "Palatino Italic":[.8333, .25, 0], Papyrus:[.9167, .5833, 0], "Papyrus Condensed":[.9167, .5833, 0], "PCMyungjo Regular":[.8333, .25, 0], "Phosphate Inline":[.9167, .25, 0], "Phosphate Solid":[.9167, .25, 0], "PilGi Regular":[.8333, .25, 0], "Plantagenet Cherokee":[.6667, .25, 0], "PT Mono":[.9167, .25, 0], "PT Mono Bold":[.9167, .25, 0], "PT Sans":[.9167, .25, 0], "PT Sans Bold":[.9167, 
              .25, 0], "PT Sans Bold Italic":[.9167, .25, 0], "PT Sans Caption":[.9167, .25, 0], "PT Sans Caption Bold":[.9167, .25, 0], "PT Sans Italic":[.9167, .25, 0], "PT Sans Narrow":[.9167, .25, 0], "PT Sans Narrow Bold":[.9167, .25, 0], "PT Serif":[1, .25, 0], "PT Serif Bold":[1, .25, 0], "PT Serif Bold Italic":[1, .25, 0], "PT Serif Caption":[1, .25, 0], "PT Serif Caption Italic":[1, .25, 0], "PT Serif Italic":[1, .25, 0], Raanana:[.75, .25, 0], "Raanana Bold":[.75, .25, 0], "Sana Regular":[.75, 
              .25, 0], Sathu:[.9167, .3333, 0], "Savoye LET Plain CC.:1.0":[1.0833, .75, 0], "Savoye LET Plain:1.0":[.6667, .5, 0], Seravek:[.9167, .3333, 0], "Seravek Bold":[.9167, .3333, 0], "Seravek Bold Italic":[.9167, .3333, 0], "Seravek ExtraLight":[.9167, .3333, 0], "Seravek ExtraLight Italic":[.9167, .3333, 0], "Seravek Italic":[.9167, .3333, 0], "Seravek Light":[.9167, .3333, 0], "Seravek Light Italic":[.9167, .3333, 0], "Seravek Medium":[.9167, .3333, 0], "Seravek Medium Italic":[.9167, 
              .3333, 0], "Shree Devanagari 714":[.9167, .4167, 0], "Shree Devanagari 714 Bold":[.9167, .4167, 0], "Shree Devanagari 714 Bold Italic":[.9167, .4167, 0], "Shree Devanagari 714 Italic":[.9167, .4167, 0], "SignPainter-HouseScript":[.6667, .1667, 0], Silom:[1, .3333, 0], "Sinhala MN":[.9167, .25, 0], "Sinhala MN Bold":[.9167, .25, 0], "Sinhala Sangam MN":[1.1667, .3333, 0], "Sinhala Sangam MN Bold":[1.1667, .3333, 0], "Skia Black":[.75, .25, 0], "Skia Black Condensed":[.75, .25, 0], "Skia Black Extended":[.75, 
              .25, 0], "Skia Bold":[.75, .25, 0], "Skia Condensed":[.75, .25, 0], "Skia Extended":[.75, .25, 0], "Skia Light":[.75, .25, 0], "Skia Light Condensed":[.75, .25, 0], "Skia Light Extended":[.75, .25, 0], "Skia Regular":[.75, .25, 0], "Snell Roundhand":[.9167, .3333, 0], "Snell Roundhand Black":[.9167, .3333, 0], "Snell Roundhand Bold":[.9167, .3333, 0], "Songti SC Black":[1.0833, .3333, 0], "Songti SC Bold":[1.0833, .3333, 0], "Songti SC Light":[1.0833, .3333, 0], "Songti SC Regular":[1.0833, 
              .3333, 0], "Songti TC Bold":[1.0833, .3333, 0], "Songti TC Light":[1.0833, .3333, 0], "Songti TC Regular":[1.0833, .3333, 0], STFangsong:[.8333, .1667, 0], STHeiti:[.8333, .1667, 0], "STIXGeneral-Bold":[1.0833, .4167, 0], "STIXGeneral-BoldItalic":[1.0833, .4167, 0], "STIXGeneral-Italic":[1.0833, .4167, 0], "STIXGeneral-Regular":[1.0833, .4167, 0], "STIXIntegralsD-Bold":[2.1667, .4167, 0], "STIXIntegralsD-Regular":[2.1667, .4167, 0], "STIXIntegralsSm-Bold":[1.0833, .4167, 0], "STIXIntegralsSm-Regular":[1.0833, 
              .4167, 0], "STIXIntegralsUp-Bold":[1.0833, .4167, 0], "STIXIntegralsUp-Regular":[1.0833, .4167, 0], "STIXIntegralsUpD-Bold":[2.1667, .4167, 0], "STIXIntegralsUpD-Regular":[2.1667, .4167, 0], "STIXIntegralsUpSm-Bold":[1.0833, .4167, 0], "STIXIntegralsUpSm-Regular":[1.0833, .4167, 0], "STIXNonUnicode-Bold":[1.4167, .5833, 0], "STIXNonUnicode-BoldItalic":[1.4167, .5833, 0], "STIXNonUnicode-Italic":[1.4167, .5833, 0], "STIXNonUnicode-Regular":[1.4167, .5833, 0], "STIXSizeFiveSym-Regular":[1, 
              .4167, 0], "STIXSizeFourSym-Bold":[2.5833, .5, 0], "STIXSizeFourSym-Regular":[2.5833, .5, 0], "STIXSizeOneSym-Bold":[1.5833, .3333, 0], "STIXSizeOneSym-Regular":[1.5833, .3333, 0], "STIXSizeThreeSym-Bold":[2.5833, .5, 0], "STIXSizeThreeSym-Regular":[2.5833, .5, 0], "STIXSizeTwoSym-Bold":[2.0833, .4167, 0], "STIXSizeTwoSym-Regular":[2.0833, .4167, 0], "STIXVariants-Bold":[1.0833, .4167, 0], "STIXVariants-Regular":[1.0833, .4167, 0], STKaiti:[.8333, .1667, 0], STSong:[.8333, .1667, 0], 
              STXihei:[.8333, .1667, 0], "Sukhumvit Set Bold":[1.0833, .5, 0], "Sukhumvit Set Light":[1.0833, .5, 0], "Sukhumvit Set Medium":[1.0833, .5, 0], "Sukhumvit Set Semi Bold":[1.0833, .5, 0], "Sukhumvit Set Text":[1.0833, .5, 0], "Sukhumvit Set Thin":[1.0833, .5, 0], "Superclarendon Black":[1, .25, 0], "Superclarendon Black Italic":[1, .25, 0], "Superclarendon Bold":[1, .25, 0], "Superclarendon Bold Italic":[1, .25, 0], "Superclarendon Italic":[1, .25, 0], "Superclarendon Light":[1, .25, 
              0], "Superclarendon Light Italic":[1, .25, 0], "Superclarendon Regular":[1, .25, 0], Symbol:[.6667, .3333, 0], "System Font Bold":[1, .25, 0], "System Font Bold Italic":[1, .25, 0], "System Font Heavy":[1, .25, 0], "System Font Italic":[1, .25, 0], "System Font Light":[1, .25, 0], "System Font Medium Italic P4":[1, .25, 0], "System Font Medium P4":[1, .25, 0], "System Font Regular":[1, .25, 0], "System Font Thin":[1, .25, 0], "System Font UltraLight":[1, .25, 0], Tahoma:[1, .1667, 0], 
              "Tahoma Negreta":[1, .1667, 0], "Tamil MN":[.9167, .25, 0], "Tamil MN Bold":[.9167, .25, 0], "Tamil Sangam MN":[.75, .25, 0], "Tamil Sangam MN Bold":[.75, .25, 0], "Telugu MN":[.9167, .25, 0], "Telugu MN Bold":[.9167, .25, 0], "Telugu Sangam MN":[1, .5833, 0], "Telugu Sangam MN Bold":[1, .5833, 0], Thonburi:[1.0833, .25, 0], "Thonburi Bold":[1.0833, .25, 0], "Thonburi Light":[1.0833, .25, 0], "Times Bold":[.75, .25, 0], "Times Bold Italic":[.75, .25, 0], "Times Italic":[.75, .25, 0], 
              "Times New Roman":[.9167, .25, 0], "Times New Roman Bold":[.9167, .25, 0], "Times New Roman Bold Italic":[.9167, .25, 0], "Times New Roman Italic":[.9167, .25, 0], "Times Roman":[.75, .25, 0], Trattatello:[1.1667, .6667, 0], "Trebuchet MS":[.9167, .25, 0], "Trebuchet MS Bold":[.9167, .25, 0], "Trebuchet MS Bold Italic":[.9167, .25, 0], "Trebuchet MS Italic":[.9167, .25, 0], Verdana:[1, .25, 0], "Verdana Bold":[1, .25, 0], "Verdana Bold Italic":[1, .25, 0], "Verdana Italic":[1, .25, 
              0], "Waseem Light":[.9167, .5833, 0], "Waseem Regular":[.9167, .5833, 0], "Wawati SC Regular":[1.0833, .3333, 0], "Wawati TC Regular":[1.0833, .3333, 0], Webdings:[.8333, .1667, 0], "Weibei SC Bold":[1.0833, .3333, 0], "Weibei TC Bold":[1.0833, .3333, 0], Wingdings:[.9167, .25, 0], "Wingdings 2":[.8333, .25, 0], "Wingdings 3":[.9167, .25, 0], "Xingkai SC Bold":[1.0833, .3333, 0], "Xingkai SC Light":[1.0833, .3333, 0], "Yuanti SC Bold":[1.0833, .3333, 0], "Yuanti SC Light":[1.0833, .3333, 
              0], "Yuanti SC Regular":[1.0833, .3333, 0], "YuGothic Bold":[.9167, .0833, 0], "YuGothic Medium":[.9167, .0833, 0], "YuMincho Demibold":[.9167, .0833, 0], "YuMincho Medium":[.9167, .0833, 0], "Yuppy SC Regular":[1.0833, .3333, 0], "Yuppy TC Regular":[1.0833, .3333, 0], "Zapf Dingbats":[.8333, .1667, 0], Zapfino:[1.9167, 1.5, 0]};
              g.DEVICE_FONT_METRICS_LINUX = {KacstFarsi:[1.0417, .5208, 0], Meera:[.651, .4557, 0], FreeMono:[.7812, .1953, 0], Loma:[1.1719, .4557, 0], "Century Schoolbook L":[.9766, .3255, 0], KacstTitleL:[1.0417, .5208, 0], Garuda:[1.3021, .5859, 0], Rekha:[1.1068, .2604, 0], Purisa:[1.1068, .5208, 0], "DejaVu Sans Mono":[.9115, .2604, 0], Vemana2000:[.9115, .8464, 0], KacstOffice:[1.0417, .5208, 0], Umpush:[1.237, .651, 0], OpenSymbol:[.7812, .1953, 0], Sawasdee:[1.1068, .4557, 0], "URW Palladio L":[.9766, 
              .3255, 0], FreeSerif:[.9115, .3255, 0], KacstDigital:[1.0417, .5208, 0], "Ubuntu Condensed":[.9115, .1953, 0], mry_KacstQurn:[1.4323, .7161, 0], "URW Gothic L":[.9766, .2604, 0], Dingbats:[.8464, .1953, 0], "URW Chancery L":[.9766, .3255, 0], "Phetsarath OT":[1.1068, .5208, 0], "Tlwg Typist":[.9115, .3906, 0], KacstLetter:[1.0417, .5208, 0], utkal:[1.1719, .651, 0], Norasi:[1.237, .5208, 0], KacstOne:[1.237, .651, 0], "Liberation Sans Narrow":[.9115, .2604, 0], Symbol:[1.0417, .3255, 
              0], NanumMyeongjo:[.9115, .2604, 0], Untitled1:[.651, .5859, 0], "Lohit Gujarati":[.9115, .3906, 0], "Liberation Mono":[.8464, .3255, 0], KacstArt:[1.0417, .5208, 0], Mallige:[.9766, .651, 0], "Bitstream Charter":[.9766, .2604, 0], NanumGothic:[.9115, .2604, 0], "Liberation Serif":[.9115, .2604, 0], Ubuntu:[.9115, .1953, 0], "Courier 10 Pitch":[.8464, .3255, 0], "Nimbus Sans L":[.9766, .3255, 0], TakaoPGothic:[.9115, .1953, 0], "WenQuanYi Micro Hei Mono":[.9766, .2604, 0], "DejaVu Sans":[.9115, 
              .2604, 0], Kedage:[.9766, .651, 0], Kinnari:[1.3021, .5208, 0], TlwgMono:[.8464, .3906, 0], "Standard Symbols L":[1.0417, .3255, 0], "Lohit Punjabi":[1.1719, .651, 0], "Nimbus Mono L":[.8464, .3255, 0], Rachana:[.651, .5859, 0], Waree:[1.237, .4557, 0], KacstPoster:[1.0417, .5208, 0], "Khmer OS":[1.3021, .7161, 0], FreeSans:[.9766, .3255, 0], gargi:[.9115, .3255, 0], "Nimbus Roman No9 L":[.9115, .3255, 0], "DejaVu Serif":[.9115, .2604, 0], "WenQuanYi Micro Hei":[.9766, .2604, 0], "Ubuntu Light":[.9115, 
              .1953, 0], TlwgTypewriter:[.9115, .3906, 0], KacstPen:[1.0417, .5208, 0], "Tlwg Typo":[.9115, .3906, 0], "Mukti Narrow":[1.237, .4557, 0], "Ubuntu Mono":[.8464, .1953, 0], "Lohit Bengali":[.9766, .4557, 0], "Liberation Sans":[.9115, .2604, 0], KacstDecorative:[1.1068, .5208, 0], "Khmer OS System":[1.237, .5859, 0], Saab:[.9766, .651, 0], KacstTitle:[1.0417, .5208, 0], "Mukti Narrow Bold":[1.237, .4557, 0], "Lohit Hindi":[.9766, .5208, 0], KacstQurn:[1.0417, .5208, 0], "URW Bookman L":[.9766, 
              .3255, 0], KacstNaskh:[1.0417, .5208, 0], KacstScreen:[1.0417, .5208, 0], Pothana2000:[.9115, .8464, 0], "Lohit Tamil":[.8464, .3906, 0], KacstBook:[1.0417, .5208, 0], Sans:[.9115, .2604, 0], Times:[.9115, .3255, 0], Monospace:[.9115, .2604, 0]};
              g.DEVICE_FONT_METRICS_BUILTIN = {_sans:[.9, .22, .08], _serif:[.88, .26, .08], _typewriter:[.86, .24, .08]};
              g.DEVICE_FONT_METRICS_WIN.__proto__ = g.DEVICE_FONT_METRICS_BUILTIN;
              g.DEVICE_FONT_METRICS_MAC.__proto__ = g.DEVICE_FONT_METRICS_BUILTIN;
              g.DEVICE_FONT_METRICS_LINUX.__proto__ = g.DEVICE_FONT_METRICS_BUILTIN;
              var a = self.navigator.userAgent;
              -1 < a.indexOf("Windows") ? g._deviceFontMetrics = g.DEVICE_FONT_METRICS_WIN : /(Macintosh|iPad|iPhone|iPod|Android)/.test(a) ? (g._deviceFontMetrics = this.DEVICE_FONT_METRICS_MAC, g.DEFAULT_FONT_SANS = "Helvetica", g.DEFAULT_FONT_SERIF = "Times Roman", g.DEFAULT_FONT_TYPEWRITER = "Courier") : (g._deviceFontMetrics = this.DEVICE_FONT_METRICS_LINUX, g.DEFAULT_FONT_SANS = "Sans", g.DEFAULT_FONT_SERIF = "Times", g.DEFAULT_FONT_TYPEWRITER = "Monospace");
              var a = g._deviceFontMetrics, c;
              for (c in a) {
                a[c.toLowerCase()] = a[c];
              }
            };
            g.classSymbols = null;
            g.instanceSymbols = null;
            g.initializer = function(a) {
              this._fontType = this._fontStyle = this._fontFamily = this._fontName = null;
              this.leading = this.descent = this.ascent = 0;
              this.advances = null;
              if (a) {
                this._symbol = a;
                this._id = a.syncId;
                this._fontName = a.name;
                this._fontFamily = g.resolveFontName(a.name);
                this._fontStyle = a.bold ? a.italic ? l.BOLD_ITALIC : l.BOLD : a.italic ? l.ITALIC : l.REGULAR;
                var f = a.metrics;
                f && (this.ascent = f.ascent, this.descent = f.descent, this.leading = f.leading, this.advances = f.advances);
                this._fontType = f ? c.EMBEDDED : c.DEVICE;
                f = Object.getOwnPropertyDescriptor(g._fontsBySymbolId, a.syncId + "");
                f && f.value || (f = {value:this, configurable:!0}, Object.defineProperty(g._fontsBySymbolId, a.syncId + "", f), Object.defineProperty(g._fontsByName, a.name.toLowerCase() + this._fontStyle, f), this._fontType === c.EMBEDDED && Object.defineProperty(g._fontsByName, "swffont" + a.syncId + this._fontStyle, f));
              } else {
                this._id = k.display.DisplayObject.getNextSyncID();
              }
            };
            return g;
          }(a.ASNative);
          w.Font = g;
          var q = function(a) {
            function c(d) {
              a.call(this, d, g);
            }
            __extends(c, a);
            c.FromData = function(a) {
              var f = new c(a);
              f.ready = !a.metrics;
              f.name = a.name;
              f.data = {id:a.id};
              f.bold = a.bold;
              f.italic = a.italic;
              f.originalSize = a.originalSize;
              f.codes = a.codes;
              f.metrics = a.metrics;
              f.syncId = k.display.DisplayObject.getNextSyncID();
              return f;
            };
            Object.defineProperty(c.prototype, "resolveAssetCallback", {get:function() {
              return this._unboundResolveAssetCallback.bind(this);
            }, enumerable:!0, configurable:!0});
            c.prototype._unboundResolveAssetCallback = function(a) {
              this.ready = !0;
            };
            return c;
          }(d.Timeline.Symbol);
          w.FontSymbol = q;
        })(k.text || (k.text = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(d) {
        (function(d) {
          var k = function(a) {
            function d() {
              a.call(this);
            }
            __extends(d, a);
            d.fromNumber = function(a) {
              switch(a) {
                case 0:
                  return d.NONE;
                case 1:
                  return d.PIXEL;
                case 2:
                  return d.SUBPIXEL;
                default:
                  return null;
              }
            };
            d.toNumber = function(a) {
              switch(a) {
                case d.NONE:
                  return 0;
                case d.PIXEL:
                  return 1;
                case d.SUBPIXEL:
                  return 2;
                default:
                  return -1;
              }
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.NONE = "none";
            d.PIXEL = "pixel";
            d.SUBPIXEL = "subpixel";
            return d;
          }(a.ASNative);
          d.GridFitType = k;
        })(d.text || (d.text = {}));
      })(a.flash || (a.flash = {}));
    })(d.AS || (d.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(a) {
        (function(d) {
          var k = function(d) {
            function l() {
              a.display.DisplayObject.instanceConstructorNoInitialize.call(this);
            }
            __extends(l, d);
            l.prototype._canHaveTextContent = function() {
              return !0;
            };
            l.prototype._getTextContent = function() {
              return this._textContent;
            };
            Object.defineProperty(l.prototype, "text", {get:function() {
              return this._textContent.plainText;
            }, enumerable:!0, configurable:!0});
            l.classInitializer = null;
            l.classSymbols = null;
            l.instanceSymbols = null;
            l.initializer = function(a) {
              this._textContent = null;
              a && this._setStaticContentFromSymbol(a);
            };
            return l;
          }(a.display.DisplayObject);
          d.StaticText = k;
        })(a.text || (a.text = {}));
      })(a.flash || (a.flash = {}));
    })(d.AS || (d.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(w) {
          function v(a, d, l) {
            for (;d < l;) {
              switch(a[d]) {
                case " ":
                ;
                case "\n":
                ;
                case "\r":
                ;
                case "\t":
                  d++;
                  break;
                default:
                  return d;
              }
            }
            return l;
          }
          var u = d.AVM2.Runtime.asCoerceString, l = function(c) {
            function d() {
              k.events.EventDispatcher.instanceConstructorNoInitialize.call(this);
              this.clear();
            }
            __extends(d, c);
            Object.defineProperty(d.prototype, "styleNames", {get:function() {
              var a = this._rules, c = [], d;
              for (d in a) {
                a[d] && c.push(d);
              }
              return c;
            }, enumerable:!0, configurable:!0});
            d.prototype.getStyle = function(c) {
              c = u(c);
              return (c = this._rules[c.toLowerCase()]) ? a.ASJSON.transformJSValueToAS(c, !1) : {};
            };
            d.prototype.applyStyle = function(a, c) {
              c = u(c);
              var d = this._rules[c.toLowerCase()];
              d && a.transform(d);
            };
            d.prototype.setStyle = function(c, d) {
              "object" === typeof d && (c = u(c), this._rules[c.toLowerCase()] = a.ASJSON.transformASValueToJS(d, !1));
            };
            d.prototype.hasStyle = function(a) {
              return !!this._rules[a.toLowerCase()];
            };
            d.prototype.clear = function() {
              this._rules = Object.create(null);
            };
            d.prototype.transform = function(c) {
              if ("object" !== typeof c) {
                return null;
              }
              c = a.ASJSON.transformASValueToJS(c, !1);
              var d = new w.TextFormat;
              d.transform(c);
              return d;
            };
            d.prototype.parseCSS = function(a) {
              a = u(a) + "";
              for (var c = a.length, d = v(a, 0, c), g = {}, f = [], b = !1, e = "";d < c;) {
                var l = a[d++];
                switch(l) {
                  case "{":
                    b = !1;
                    f.push(e);
                    a: {
                      var e = a, l = c, k = g, n = {}, w = "", B = !1, D = !1, d = v(e, d, l);
                      b: for (;d < l;) {
                        var M = e[d++];
                        switch(M) {
                          case "}":
                            if (0 < w.length) {
                              d = -1;
                              break a;
                            }
                            break b;
                          case ":":
                            var E = "", J = w, w = "", D = B = !1;
                            for (;d < l;) {
                              switch(M = e[d], M) {
                                case ";":
                                ;
                                case "\r":
                                ;
                                case "\n":
                                  d++, d = v(e, d, l);
                                case "}":
                                  n[J] = E;
                                  continue b;
                                default:
                                  d++, E += M;
                              }
                            }
                            d = -1;
                            break a;
                          case "-":
                            ":" === e[d] ? w += M : D = !0;
                            break;
                          case " ":
                          ;
                          case "\n":
                          ;
                          case "\r":
                          ;
                          case "\t":
                            B = !0;
                            w += M;
                            D = !1;
                            break;
                          default:
                            if (B) {
                              d = -1;
                              break a;
                            }
                            D && (M = M.toUpperCase(), D = !1);
                            w += M;
                        }
                      }
                      if ("}" !== e[d - 1]) {
                        d = -1;
                      } else {
                        for (e = 0;e < f.length;e++) {
                          k[f[e]] = n;
                        }
                      }
                    }
                    if (-1 === d) {
                      return;
                    }
                    f = [];
                    e = "";
                    d = v(a, d, c);
                    break;
                  case ",":
                    b = !1;
                    f.push(e);
                    e = "";
                    d = v(a, d, c);
                    break;
                  case " ":
                  ;
                  case "\n":
                  ;
                  case "\r":
                  ;
                  case "\t":
                    b = !0;
                    d = v(a, d, c);
                    break;
                  default:
                    if (b) {
                      return;
                    }
                    e += l;
                }
              }
              a = this._rules;
              for (e in g) {
                a[e.toLowerCase()] = g[e];
              }
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(k.events.EventDispatcher);
          w.StyleSheet = l;
        })(k.text || (k.text = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(d) {
        (function(d) {
          var k = function(a) {
            function d() {
              a.call(this);
            }
            __extends(d, a);
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.LCD = "lcd";
            d.CRT = "crt";
            d.DEFAULT = "default";
            return d;
          }(a.ASNative);
          d.TextDisplayMode = k;
        })(d.text || (d.text = {}));
      })(a.flash || (a.flash = {}));
    })(d.AS || (d.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(w) {
          var v = d.Debug.notImplemented, u = d.Debug.warning, l = d.Debug.somewhatImplemented, c = d.AVM2.Runtime.throwError, g = d.AVM2.Runtime.asCoerceString, q = d.NumberUtilities.clamp, t = function(h) {
            function f() {
              a.display.InteractiveObject.instanceConstructorNoInitialize.call(this);
            }
            __extends(f, h);
            f.prototype._setFillAndLineBoundsFromSymbol = function(a) {
              h.prototype._setFillAndLineBoundsFromSymbol.call(this, a);
              this._textContent.bounds = this._lineBounds;
              this._invalidateContent();
            };
            f.prototype._setFillAndLineBoundsFromWidthAndHeight = function(a, e) {
              h.prototype._setFillAndLineBoundsFromWidthAndHeight.call(this, a, e);
              this._textContent.bounds = this._lineBounds;
              this._invalidateContent();
            };
            f.prototype._canHaveTextContent = function() {
              return !0;
            };
            f.prototype._getTextContent = function() {
              return this._textContent;
            };
            f.prototype._getContentBounds = function(a) {
              void 0 === a && (a = !0);
              this._ensureLineMetrics();
              return h.prototype._getContentBounds.call(this, a);
            };
            f.prototype._containsPointDirectly = function(a, e, c, f) {
              return !0;
            };
            f.prototype._invalidateContent = function() {
              this._textContent.flags & d.TextContentFlags.Dirty && this._setFlags(8388608);
            };
            f.isFontCompatible = function(a, e) {
              a = g(a);
              e = g(e);
              var c = w.Font.getByNameAndStyle(a, e);
              return c ? c.fontStyle === e : !1;
            };
            Object.defineProperty(f.prototype, "alwaysShowSelection", {get:function() {
              return this._alwaysShowSelection;
            }, set:function(a) {
              this._alwaysShowSelection = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "antiAliasType", {get:function() {
              return this._antiAliasType;
            }, set:function(a) {
              a = g(a);
              0 > w.AntiAliasType.toNumber(a) && c("ArgumentError", k.Errors.InvalidParamError, "antiAliasType");
              this._antiAliasType = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "autoSize", {get:function() {
              return this._autoSize;
            }, set:function(a) {
              a = g(a);
              a !== this._autoSize && (0 > w.TextFieldAutoSize.toNumber(a) && c("ArgumentError", k.Errors.InvalidParamError, "autoSize"), this._autoSize = a, this._textContent.autoSize = w.TextFieldAutoSize.toNumber(a), this._invalidateContent(), this._ensureLineMetrics());
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "background", {get:function() {
              return this._background;
            }, set:function(a) {
              a = !!a;
              a !== this._background && (this._background = a, this._textContent.backgroundColor = a ? this._backgroundColor : 0, this._setDirtyFlags(8388608));
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "backgroundColor", {get:function() {
              return this._backgroundColor >> 8;
            }, set:function(a) {
              a = (a << 8 | 255) >>> 0;
              a !== this._backgroundColor && (this._backgroundColor = a, this._background && (this._textContent.backgroundColor = a, this._setDirtyFlags(8388608)));
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "border", {get:function() {
              return this._border;
            }, set:function(a) {
              a = !!a;
              a !== this._border && (this._border = a, this._textContent.borderColor = a ? this._borderColor : 0, this._setDirtyFlags(8388608));
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "borderColor", {get:function() {
              return this._borderColor >> 8;
            }, set:function(a) {
              a = (a << 8 | 255) >>> 0;
              a !== this._borderColor && (this._borderColor = a, this._border && (this._textContent.borderColor = a, this._setDirtyFlags(8388608)));
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "bottomScrollV", {get:function() {
              return this._bottomScrollV;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "caretIndex", {get:function() {
              v("public flash.text.TextField::get caretIndex");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "condenseWhite", {get:function() {
              return this._condenseWhite;
            }, set:function(a) {
              this._condenseWhite = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "defaultTextFormat", {get:function() {
              return this._textContent.defaultTextFormat.clone();
            }, set:function(a) {
              var e = this._textContent.defaultTextFormat;
              e.merge(a);
              null === e.color ? e.color = this._textColor : this._textColor = +e.color;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "embedFonts", {get:function() {
              return this._embedFonts;
            }, set:function(a) {
              this._embedFonts = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "gridFitType", {get:function() {
              return this._gridFitType;
            }, set:function(a) {
              this._gridFitType = a = g(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "htmlText", {get:function() {
              return this._htmlText;
            }, set:function(a) {
              a = g(a);
              this._symbol && (this._textContent.defaultTextFormat.bold = !1, this._textContent.defaultTextFormat.italic = !1);
              this._textContent.parseHtml(a, this._styleSheet, this._multiline);
              this._htmlText = a;
              this._invalidateContent();
              this._ensureLineMetrics();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "length", {get:function() {
              return this._length;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "textInteractionMode", {get:function() {
              v("public flash.text.TextField::get textInteractionMode");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "maxChars", {get:function() {
              return this._maxChars;
            }, set:function(a) {
              this._maxChars = a | 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "maxScrollH", {get:function() {
              this._ensureLineMetrics();
              return this._maxScrollH;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "maxScrollV", {get:function() {
              this._ensureLineMetrics();
              return this._maxScrollV;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "mouseWheelEnabled", {get:function() {
              return this._mouseWheelEnabled;
            }, set:function(a) {
              l("public flash.text.TextField::set mouseWheelEnabled");
              this._mouseWheelEnabled = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "multiline", {get:function() {
              return this._multiline;
            }, set:function(a) {
              this._multiline = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "numLines", {get:function() {
              return this._numLines;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "displayAsPassword", {get:function() {
              return this._displayAsPassword;
            }, set:function(a) {
              l("public flash.text.TextField::set displayAsPassword");
              this._displayAsPassword = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "restrict", {get:function() {
              return this._restrict;
            }, set:function(a) {
              l("public flash.text.TextField::set restrict");
              this._restrict = g(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "scrollH", {get:function() {
              return this._textContent.scrollH;
            }, set:function(a) {
              a |= 0;
              this._ensureLineMetrics();
              this._textContent.scrollH = q(Math.abs(a), 0, this._maxScrollH);
              this._invalidateContent();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "scrollV", {get:function() {
              return this._textContent.scrollV;
            }, set:function(a) {
              a |= 0;
              this._ensureLineMetrics();
              this._textContent.scrollV = q(a, 1, this._maxScrollV);
              this._invalidateContent();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "selectable", {get:function() {
              return this._selectable;
            }, set:function(a) {
              this._selectable = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "selectedText", {get:function() {
              return this._textContent.plainText.substring(this._selectionBeginIndex, this._selectionEndIndex);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "selectionBeginIndex", {get:function() {
              return this._selectionBeginIndex;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "selectionEndIndex", {get:function() {
              return this._selectionEndIndex;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "sharpness", {get:function() {
              return this._sharpness;
            }, set:function(a) {
              this._sharpness = q(+a, -400, 400);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "styleSheet", {get:function() {
              return this._styleSheet;
            }, set:function(a) {
              this._styleSheet = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "text", {get:function() {
              return this._textContent.plainText;
            }, set:function(a) {
              a = g(a);
              a !== this._textContent.plainText && (this._textContent.plainText = a, this._invalidateContent(), this._ensureLineMetrics());
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "textColor", {get:function() {
              return null === this._textColor ? +this._textContent.defaultTextFormat.color : this._textColor;
            }, set:function(a) {
              this._textColor = this._textContent.defaultTextFormat.color = a >>> 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "textHeight", {get:function() {
              this._ensureLineMetrics();
              return this._textHeight / 20 | 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "textWidth", {get:function() {
              this._ensureLineMetrics();
              return this._textWidth / 20 | 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "thickness", {get:function() {
              return this._thickness;
            }, set:function(a) {
              this._thickness = q(+a, -200, 200);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "type", {get:function() {
              return this._type;
            }, set:function(a) {
              this._type = g(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "wordWrap", {get:function() {
              return this._textContent.wordWrap;
            }, set:function(a) {
              a = !!a;
              a !== this._textContent.wordWrap && (this._textContent.wordWrap = !!a, this._invalidateContent());
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "useRichTextClipboard", {get:function() {
              v("public flash.text.TextField::get useRichTextClipboard");
            }, set:function(a) {
              v("public flash.text.TextField::set useRichTextClipboard");
            }, enumerable:!0, configurable:!0});
            f.prototype.copyRichText = function() {
              v("public flash.text.TextField::copyRichText");
            };
            f.prototype.pasteRichText = function(a) {
              g(a);
              v("public flash.text.TextField::pasteRichText");
            };
            f.prototype.getXMLText = function(a, e) {
              v("public flash.text.TextField::getXMLText");
              return "";
            };
            f.prototype.insertXMLText = function(a, e, c, f) {
              g(c);
              v("public flash.text.TextField::insertXMLText");
            };
            f.prototype._ensureLineMetrics = function() {
              if (this._hasFlags(8388608)) {
                var a = d.AVM2.Runtime.AVM2.instance.globals["Shumway.Player.Utils"].syncDisplayObject(this, !1), e = a.readInt(), c = a.readInt(), f = a.readInt(), g = this._lineBounds;
                this._autoSize !== w.TextFieldAutoSize.NONE && (g.xMin = g.xMin = f, g.xMax = g.xMax = f + e + 80, g.yMax = g.yMax = g.yMin + c + 80);
                this._textWidth = e;
                this._textHeight = c;
                this._numLines = a.readInt();
                this._lineMetricsData = a;
                if (this._textHeight > g.height) {
                  c = e = 1;
                  a.position = 16;
                  for (var h = f = 0;h < this._numLines;h++) {
                    a.position += 8;
                    var l = a.readInt(), k = a.readInt(), m = a.readInt(), l = l + k + m;
                    f > g.height / 20 ? e++ : c++;
                    f += l;
                  }
                  this._maxScrollV = e;
                  this._bottomScrollV = c;
                }
                this._maxScrollH = this._textWidth > g.width ? (this._textWidth + 80 - g.width) / 20 | 0 : 0;
              }
            };
            f.prototype.appendText = function(a) {
              this._textContent.appendText(g(a));
            };
            f.prototype.getCharBoundaries = function(b) {
              b |= 0;
              l("public flash.text.TextField::getCharBoundaries");
              var e = this.textHeight, c = .75 * e;
              return new a.geom.Rectangle(b * c, 0, c, e);
            };
            f.prototype.getCharIndexAtPoint = function(a, e) {
              v("public flash.text.TextField::getCharIndexAtPoint");
            };
            f.prototype.getFirstCharInParagraph = function(a) {
              v("public flash.text.TextField::getFirstCharInParagraph");
            };
            f.prototype.getLineIndexAtPoint = function(a, e) {
              v("public flash.text.TextField::getLineIndexAtPoint");
            };
            f.prototype.getLineIndexOfChar = function(a) {
              v("public flash.text.TextField::getLineIndexOfChar");
            };
            f.prototype.getLineLength = function(a) {
              v("public flash.text.TextField::getLineLength");
            };
            f.prototype.getLineMetrics = function() {
              var a;
              a = 0;
              (0 > a || a > this._numLines - 1) && c("RangeError", k.Errors.ParamRangeError);
              this._ensureLineMetrics();
              var e = this._lineMetricsData;
              e.position = 16 + 20 * a;
              a = e.readInt() + this._lineBounds.xMin + 2;
              var f = e.readInt(), d = e.readInt(), g = e.readInt(), e = e.readInt();
              return new w.TextLineMetrics(a, f, d + g + e, d, g, e);
            };
            f.prototype.getLineOffset = function(a) {
              v("public flash.text.TextField::getLineOffset");
            };
            f.prototype.getLineText = function(a) {
              v("public flash.text.TextField::getLineText");
            };
            f.prototype.getParagraphLength = function(a) {
              v("public flash.text.TextField::getParagraphLength");
            };
            f.prototype.getTextFormat = function(a, e) {
              void 0 === a && (a = -1);
              void 0 === e && (e = -1);
              a |= 0;
              e |= 0;
              var f = this._textContent.plainText.length;
              0 > a ? (a = 0, 0 > e && (e = f)) : 0 > e && (e = a + 1);
              (e <= a || e > f) && c("RangeError", k.Errors.ParamRangeError);
              for (var d, f = this._textContent.textRuns, g = 0;g < f.length;g++) {
                var h = f[g];
                h.intersects(a, e) && (d ? d.intersect(h.textFormat) : d = h.textFormat.clone());
              }
              return d;
            };
            f.prototype.getTextRuns = function(a, e) {
              void 0 === a && (a = 0);
              void 0 === e && (e = 2147483647);
              for (var c = this._textContent.textRuns, f = [], d = 0;d < c.length;d++) {
                var g = c[d];
                g.beginIndex >= a && g.endIndex <= e && f.push(g.clone());
              }
              return f;
            };
            f.prototype.getRawText = function() {
              v("public flash.text.TextField::getRawText");
            };
            f.prototype.replaceSelectedText = function(a) {
              this.replaceText(this._selectionBeginIndex, this._selectionEndIndex, "" + a);
            };
            f.prototype.replaceText = function(a, e, c) {
              a |= 0;
              e |= 0;
              0 > a || 0 > e || (this._textContent.replaceText(a, e, "" + c), this._invalidateContent(), this._ensureLineMetrics());
            };
            f.prototype.setSelection = function(a, e) {
              this._selectionBeginIndex = a | 0;
              this._selectionEndIndex = e | 0;
            };
            f.prototype.setTextFormat = function(a, e, f) {
              void 0 === e && (e = -1);
              void 0 === f && (f = -1);
              e |= 0;
              f |= 0;
              var d = this._textContent.plainText, g = d.length;
              0 > e ? (e = 0, 0 > f && (f = g)) : 0 > f && (f = e + 1);
              (e > g || f > g) && c("RangeError", k.Errors.ParamRangeError);
              f <= e || (this._textContent.replaceText(e, f, d.substring(e, f), a), this._invalidateContent(), this._ensureLineMetrics());
            };
            f.prototype.getImageReference = function(a) {
              v("public flash.text.TextField::getImageReference");
            };
            f.classSymbols = null;
            f.instanceSymbols = null;
            f.classInitializer = null;
            f.initializer = function(b) {
              this._alwaysShowSelection = !1;
              this._antiAliasType = w.AntiAliasType.NORMAL;
              this._autoSize = w.TextFieldAutoSize.NONE;
              this._background = !1;
              this._backgroundColor = 4294967295;
              this._border = !1;
              this._borderColor = 255;
              this._bottomScrollV = 1;
              this._caretIndex = 0;
              this._embedFonts = this._condenseWhite = !1;
              this._gridFitType = w.GridFitType.PIXEL;
              this._htmlText = "";
              this._length = 0;
              this._textInteractionMode = w.TextInteractionMode.NORMAL;
              this._maxScrollH = this._maxChars = 0;
              this._maxScrollV = 1;
              this._multiline = this._mouseWheelEnabled = !1;
              this._numLines = 1;
              this._displayAsPassword = !1;
              this._restrict = null;
              this._selectable = !0;
              this._selectedText = "";
              this._sharpness = this._selectionEndIndex = this._selectionBeginIndex = 0;
              this._textColor = this._styleSheet = null;
              this._thickness = this._textWidth = this._textHeight = 0;
              this._type = w.TextFieldType.DYNAMIC;
              this._useRichTextClipboard = !1;
              var e = new a.text.TextFormat(w.Font.DEFAULT_FONT_SERIF, 12, 0, !1, !1, !1, "", "", w.TextFormatAlign.LEFT);
              this._textContent = new d.TextContent(e);
              this._lineMetricsData = null;
              b ? (this._setFillAndLineBoundsFromSymbol(b), e.color = b.color, e.size = b.size / 20 | 0, e.font = b.face, e.bold = b.bold, e.italic = b.italic, e.align = b.align, e.leftMargin = b.leftMargin / 20 | 0, e.rightMargin = b.rightMargin / 20 | 0, e.indent = b.indent / 20 | 0, e.leading = b.leading / 20 | 0, this._multiline = b.multiline, this._embedFonts = b.embedFonts, this._selectable = b.selectable, this._displayAsPassword = b.displayAsPassword, this._type = b.type, this._maxChars = 
              b.maxChars, b.border && (this.border = this.background = !0), b.html ? this.htmlText = b.initialText : this.text = b.initialText, this.wordWrap = b.wordWrap, this.autoSize = b.autoSize) : this._setFillAndLineBoundsFromWidthAndHeight(2E3, 2E3);
            };
            return f;
          }(a.display.InteractiveObject);
          w.TextField = t;
          t = function(c) {
            function f(b) {
              c.call(this, b, a.text.TextField, !0);
              this.size = this.color = 0;
              this.face = "";
              this.italic = this.bold = !1;
              this.align = a.text.TextFormatAlign.LEFT;
              this.leading = this.indent = this.rightMargin = this.leftMargin = 0;
              this.embedFonts = this.wordWrap = this.multiline = !1;
              this.selectable = !0;
              this.border = !1;
              this.initialText = "";
              this.displayAsPassword = this.html = !1;
              this.type = a.text.TextFieldType.DYNAMIC;
              this.maxChars = 0;
              this.autoSize = a.text.TextFieldAutoSize.NONE;
              this.textContent = this.variableName = null;
            }
            __extends(f, c);
            f.FromTextData = function(b, e) {
              var c = new f(b);
              c._setBoundsFromData(b);
              var g = b.tag;
              if (b.static && (c.dynamic = !1, c.symbolClass = a.text.StaticText, g.initialText)) {
                var h = new d.TextContent;
                h.bounds = c.lineBounds;
                h.parseHtml(g.initialText, null, !1);
                new a.geom.Matrix;
                h.matrix = new a.geom.Matrix;
                h.matrix.copyFromUntyped(b.matrix);
                h.coords = b.coords;
                c.textContent = h;
              }
              g.hasColor && (c.color = g.color >>> 8);
              g.hasFont && (c.size = g.fontHeight, (h = e.getSymbolById(g.fontId)) ? (c.face = g.useOutlines ? h.name : "swffont" + h.syncId, c.bold = h.bold, c.italic = h.italic) : u("Font " + g.fontId + " is not defined."));
              g.hasLayout && (c.align = a.text.TextFormatAlign.fromNumber(g.align), c.leftMargin = g.leftMargin, c.rightMargin = g.rightMargin, c.indent = g.indent, c.leading = g.leading);
              c.multiline = !!g.multiline;
              c.wordWrap = !!g.wordWrap;
              c.embedFonts = !!g.useOutlines;
              c.selectable = !g.noSelect;
              c.border = !!g.border;
              g.hasText && (c.initialText = g.initialText);
              c.html = !!g.html;
              c.displayAsPassword = !!g.password;
              c.type = g.readonly ? a.text.TextFieldType.DYNAMIC : a.text.TextFieldType.INPUT;
              g.hasMaxLength && (c.maxChars = g.maxLength);
              c.autoSize = g.autoSize ? a.text.TextFieldAutoSize.LEFT : a.text.TextFieldAutoSize.NONE;
              c.variableName = g.variableName;
              return c;
            };
            f.FromLabelData = function(a, e) {
              for (var c = a.fillBounds, d = a.records, g = a.coords = [], h = "", l = 12, k = "Times Roman", n = !1, q = !1, t = 0, u = 0, v = 0, w, H = 0;H < d.length;H++) {
                var A = d[H];
                if (A.eot) {
                  break;
                }
                if (A.hasFont) {
                  var z = e.getSymbolById(A.fontId);
                  z && (w = z.codes, l = A.fontHeight, z.originalSize || (l /= 20), k = z.metrics ? "swffont" + z.syncId : z.name, n = z.bold, q = z.italic);
                }
                A.hasColor && (t = A.color >>> 8);
                A.hasMoveX && (u = A.moveX, u < c.xMin && (c.xMin = u));
                A.hasMoveY && (v = A.moveY, v < c.yMin && (c.yMin = v));
                for (var z = "", A = A.entries, G = 0, L;L = A[G++];) {
                  var F = String.fromCharCode(w[L.glyphIndex]), z = z + (m[F] || F);
                  g.push(u, v);
                  u += L.advance;
                }
                q && (z = "<i>" + z + "</i>");
                n && (z = "<b>" + z + "</b>");
                h += '<font size="' + l + '" face="' + k + '" color="#' + ("000000" + t.toString(16)).slice(-6) + '">' + z + "</font>";
              }
              a.tag.initialText = h;
              return f.FromTextData(a, e);
            };
            return f;
          }(d.Timeline.DisplaySymbol);
          w.TextSymbol = t;
          var m = {"<":"&lt;", ">":"&gt;", "&":"&amp;"};
        })(a.text || (a.text = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(d) {
        (function(d) {
          var k = function(a) {
            function d() {
              a.call(this);
            }
            __extends(d, a);
            d.fromNumber = function(a) {
              switch(a) {
                case 0:
                  return d.NONE;
                case 1:
                  return d.CENTER;
                case 2:
                  return d.LEFT;
                case 3:
                  return d.RIGHT;
                default:
                  return null;
              }
            };
            d.toNumber = function(a) {
              switch(a) {
                case d.NONE:
                  return 0;
                case d.CENTER:
                  return 1;
                case d.LEFT:
                  return 2;
                case d.RIGHT:
                  return 3;
                default:
                  return -1;
              }
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.NONE = "none";
            d.LEFT = "left";
            d.CENTER = "center";
            d.RIGHT = "right";
            return d;
          }(a.ASNative);
          d.TextFieldAutoSize = k;
        })(d.text || (d.text = {}));
      })(a.flash || (a.flash = {}));
    })(d.AS || (d.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(d) {
        (function(d) {
          var k = function(a) {
            function d() {
              a.call(this);
            }
            __extends(d, a);
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.INPUT = "input";
            d.DYNAMIC = "dynamic";
            return d;
          }(a.ASNative);
          d.TextFieldType = k;
        })(d.text || (d.text = {}));
      })(a.flash || (a.flash = {}));
    })(d.AS || (d.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(n) {
        (function(w) {
          var v = d.AVM2.Runtime.asCoerceString, u = d.NumberUtilities.roundHalfEven, l = d.AVM2.Runtime.throwError, c = function(a) {
            function c(a, d, g, f, b, e, l, k, n, q, u, v, w) {
              void 0 === a && (a = null);
              void 0 === d && (d = null);
              void 0 === g && (g = null);
              void 0 === f && (f = null);
              void 0 === b && (b = null);
              void 0 === e && (e = null);
              void 0 === l && (l = null);
              void 0 === k && (k = null);
              void 0 === n && (n = null);
              void 0 === q && (q = null);
              void 0 === u && (u = null);
              void 0 === v && (v = null);
              void 0 === w && (w = null);
              this.font = a;
              this.size = d;
              this.color = g;
              this.bold = f;
              this.italic = b;
              this.underline = e;
              this.url = l;
              this.target = k;
              this.align = n;
              this.leftMargin = q;
              this.rightMargin = u;
              this.indent = v;
              this.leading = w;
            }
            __extends(c, a);
            Object.defineProperty(c.prototype, "align", {get:function() {
              return this._align;
            }, set:function(a) {
              this._align = a = v(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "blockIndent", {get:function() {
              return this._blockIndent;
            }, set:function(a) {
              this._blockIndent = c.coerceNumber(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "bold", {get:function() {
              return this._bold;
            }, set:function(a) {
              this._bold = c.coerceBoolean(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "bullet", {get:function() {
              return this._bullet;
            }, set:function(a) {
              this._bullet = c.coerceBoolean(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "color", {get:function() {
              return this._color;
            }, set:function(a) {
              this._color = null != a ? +a | 0 : null;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "display", {get:function() {
              return this._display;
            }, set:function(a) {
              this._display = v(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "font", {get:function() {
              return this._font;
            }, set:function(a) {
              this._font = v(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "style", {get:function() {
              return this._bold && this._italic ? w.FontStyle.BOLD_ITALIC : this._bold ? w.FontStyle.BOLD : this._italic ? w.FontStyle.ITALIC : w.FontStyle.REGULAR;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "indent", {get:function() {
              return this._indent;
            }, set:function(a) {
              this._indent = c.coerceNumber(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "italic", {get:function() {
              return this._italic;
            }, set:function(a) {
              this._italic = c.coerceBoolean(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "kerning", {get:function() {
              return this._kerning;
            }, set:function(a) {
              this._kerning = c.coerceBoolean(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "leading", {get:function() {
              return this._leading;
            }, set:function(a) {
              this._leading = c.coerceNumber(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "leftMargin", {get:function() {
              return this._leftMargin;
            }, set:function(a) {
              this._leftMargin = c.coerceNumber(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "letterSpacing", {get:function() {
              return this._letterSpacing;
            }, set:function(a) {
              this._letterSpacing = c.coerceBoolean(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "rightMargin", {get:function() {
              return this._rightMargin;
            }, set:function(a) {
              this._rightMargin = c.coerceNumber(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "size", {get:function() {
              return this._size;
            }, set:function(a) {
              this._size = c.coerceNumber(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "tabStops", {get:function() {
              return this._tabStops;
            }, set:function(a) {
              a instanceof Array || l("ArgumentError", k.Errors.CheckTypeFailedError, a, "Array");
              this._tabStops = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "target", {get:function() {
              return this._target;
            }, set:function(a) {
              this._target = v(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "underline", {get:function() {
              return this._underline;
            }, set:function(a) {
              this._underline = c.coerceBoolean(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "url", {get:function() {
              return this._url;
            }, set:function(a) {
              this._url = v(a);
            }, enumerable:!0, configurable:!0});
            c.coerceNumber = function(a) {
              return void 0 == a ? null : isNaN(a) || 268435455 < a ? -2147483648 : u(a);
            };
            c.coerceBoolean = function(a) {
              return void 0 == a ? null : !!a;
            };
            c.prototype.clone = function() {
              return new n.text.TextFormat(this.font, this.size, this.color, this.bold, this.italic, this.underline, this.url, this.target, this.align, this.leftMargin, this.rightMargin, this.indent, this.leading);
            };
            c.prototype.equals = function(a) {
              return this._align === a._align && this._blockIndent === a._blockIndent && this._bold === a._bold && this._bullet === a._bullet && this._color === a._color && this._display === a._display && this._font === a._font && this._indent === a._indent && this._italic === a._italic && this._kerning === a._kerning && this._leading === a._leading && this._leftMargin === a._leftMargin && this._letterSpacing === a._letterSpacing && this._rightMargin === a._rightMargin && this._size === a._size && 
              this._tabStops === a._tabStops && this._target === a._target && this._underline === a._underline && this._url === a._url;
            };
            c.prototype.merge = function(a) {
              null !== a._align && (this._align = a._align);
              null !== a._blockIndent && (this._blockIndent = a._blockIndent);
              null !== a._bold && (this._bold = a._bold);
              null !== a._bullet && (this._bullet = a._bullet);
              null !== a._color && (this._color = a._color);
              null !== a._display && (this._display = a._display);
              a._font && (this._font = a._font);
              null !== a._indent && (this._indent = a._indent);
              null !== a._italic && (this._italic = a._italic);
              null !== a._kerning && (this._kerning = a._kerning);
              null !== a._leading && (this._leading = a._leading);
              null !== a._leftMargin && (this._leftMargin = a._leftMargin);
              null !== a._letterSpacing && (this._letterSpacing = a._letterSpacing);
              null !== a._rightMargin && (this._rightMargin = a._rightMargin);
              null !== a._size && (this._size = a._size);
              null !== a._tabStops && (this._tabStops = a._tabStops);
              a._target && (this._target = a._target);
              null !== a._underline && (this._underline = a._underline);
              a._url && (this._url = a._url);
            };
            c.prototype.intersect = function(a) {
              a._align !== this._align && (this._align = null);
              a._blockIndent !== this._blockIndent && (this._blockIndent = null);
              a._bold !== this._bold && (this._bold = null);
              a._bullet !== this._bullet && (this._bullet = null);
              a._color !== this._color && (this._color = null);
              a._display !== this._display && (this._display = null);
              a._font !== this._font && (this._font = null);
              a._indent !== this._indent && (this._indent = null);
              a._italic !== this._italic && (this._italic = null);
              a._kerning !== this._kerning && (this._kerning = null);
              a._leading !== this._leading && (this._leading = null);
              a._leftMargin !== this._leftMargin && (this._leftMargin = null);
              a._letterSpacing !== this._letterSpacing && (this._letterSpacing = null);
              a._rightMargin !== this._rightMargin && (this._rightMargin = null);
              a._size !== this._size && (this._size = null);
              a._tabStops !== this._tabStops && (this._tabStops = null);
              a._target !== this._target && (this._target = null);
              a._underline !== this._underline && (this._underline = null);
              a._url !== this._url && (this._url = null);
            };
            c.prototype.transform = function(a) {
              var c = a.textAlign;
              c && (this.align = c);
              c = a.fontWeight;
              "bold" === c ? this.bold = !0 : "normal" === c && (this.bold = !1);
              if (c = a.color) {
                if (c = v(c).trim().toLowerCase(), "#" === c[0]) {
                  for (c = c.substr(1);"0" === c[0];) {
                    c = c.substr(1);
                  }
                  var d = parseInt(c, 16);
                  d.toString(16) === c && (this.color = d);
                }
              }
              if (c = a.display) {
                this.display = c;
              }
              if (c = a.fontFamily) {
                this.font = c.replace("sans-serif", "_sans").replace("serif", "_serif");
              }
              if (c = a.textIndent) {
                this.indent = parseInt(c);
              }
              c = a.fontStyle;
              "italic" === c ? this.italic = !0 : "normal" === c && (this.italic = !1);
              c = a.kerning;
              this.kerning = "true" === c ? 1 : "false" === c ? 0 : parseInt(c);
              if (c = a.leading) {
                this.leading = parseInt(c);
              }
              if (c = a.marginLeft) {
                this.leftMargin = parseInt(c);
              }
              if (c = a.letterSpacing) {
                this.letterSpacing = parseFloat(c);
              }
              if (c = a.marginRight) {
                this.rightMargin = parseInt(c);
              }
              if (c = a.fontSize) {
                c = parseInt(c), 0 < c && (this.size = c);
              }
              c = a.textDecoration;
              "none" === c ? this.underline = !1 : "underline" === c && (this.underline = !0);
              return this;
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.ASNative);
          w.TextFormat = c;
        })(n.text || (n.text = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(d) {
        (function(d) {
          var k = function(a) {
            function d() {
              a.call(this);
            }
            __extends(d, a);
            d.fromNumber = function(a) {
              switch(a) {
                case 0:
                  return d.LEFT;
                case 1:
                  return d.RIGHT;
                case 2:
                  return d.CENTER;
                case 3:
                  return d.JUSTIFY;
                case 4:
                  return d.START;
                case 5:
                  return d.END;
                default:
                  return null;
              }
            };
            d.toNumber = function(a) {
              switch(a) {
                case d.LEFT:
                  return 0;
                case d.RIGHT:
                  return 1;
                case d.CENTER:
                  return 2;
                case d.JUSTIFY:
                  return 3;
                case d.START:
                  return 4;
                case d.END:
                  return 5;
                default:
                  return -1;
              }
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.LEFT = "left";
            d.CENTER = "center";
            d.RIGHT = "right";
            d.JUSTIFY = "justify";
            d.START = "start";
            d.END = "end";
            return d;
          }(a.ASNative);
          d.TextFormatAlign = k;
        })(d.text || (d.text = {}));
      })(a.flash || (a.flash = {}));
    })(d.AS || (d.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(d) {
        (function(d) {
          var k = function(a) {
            function d() {
              a.call(this);
            }
            __extends(d, a);
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.INLINE = "inline";
            d.BLOCK = "block";
            return d;
          }(a.ASNative);
          d.TextFormatDisplay = k;
        })(d.text || (d.text = {}));
      })(a.flash || (a.flash = {}));
    })(d.AS || (d.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(d) {
        (function(d) {
          var k = function(a) {
            function d() {
              a.call(this);
            }
            __extends(d, a);
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.NORMAL = "normal";
            d.SELECTION = "selection";
            return d;
          }(a.ASNative);
          d.TextInteractionMode = k;
        })(d.text || (d.text = {}));
      })(a.flash || (a.flash = {}));
    })(d.AS || (d.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c(a, c, d, l, h, f) {
              n("public flash.text.TextLineMetrics");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.ASNative);
          k.TextLineMetrics = u;
        })(k.text || (k.text = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(d) {
        (function(k) {
          var v = function(a) {
            function l(a, d, l) {
              this._beginIndex = a | 0;
              this._endIndex = d | 0;
              this._textFormat = l;
            }
            __extends(l, a);
            Object.defineProperty(l.prototype, "beginIndex", {get:function() {
              return this._beginIndex;
            }, set:function(a) {
              this._beginIndex = a | 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "endIndex", {get:function() {
              return this._endIndex;
            }, set:function(a) {
              this._endIndex = a | 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "textFormat", {get:function() {
              return this._textFormat;
            }, set:function(a) {
              this._textFormat = a;
            }, enumerable:!0, configurable:!0});
            l.prototype.clone = function() {
              return new d.text.TextRun(this.beginIndex, this.endIndex, this.textFormat.clone());
            };
            l.prototype.containsIndex = function(a) {
              return a >= this._beginIndex && a < this._endIndex;
            };
            l.prototype.intersects = function(a, d) {
              return Math.max(this._beginIndex, a) < Math.min(this._endIndex, d);
            };
            l.classInitializer = null;
            l.initializer = null;
            l.classSymbols = null;
            l.instanceSymbols = null;
            return l;
          }(a.ASNative);
          k.TextRun = v;
        })(d.text || (d.text = {}));
      })(a.flash || (a.flash = {}));
    })(d.AS || (d.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.notImplemented, u = d.Debug.dummyConstructor, l = d.AVM2.Runtime.asCoerceString, c = function(a) {
            function c() {
              u("public flash.text.TextSnapshot");
            }
            __extends(c, a);
            Object.defineProperty(c.prototype, "charCount", {get:function() {
              n("public flash.text.TextSnapshot::get charCount");
            }, enumerable:!0, configurable:!0});
            c.prototype.findText = function(a, c, d) {
              l(c);
              n("public flash.text.TextSnapshot::findText");
            };
            c.prototype.getSelected = function(a, c) {
              n("public flash.text.TextSnapshot::getSelected");
            };
            c.prototype.getSelectedText = function(a) {
              n("public flash.text.TextSnapshot::getSelectedText");
            };
            c.prototype.getText = function(a, c, d) {
              n("public flash.text.TextSnapshot::getText");
            };
            c.prototype.getTextRunInfo = function(a, c) {
              n("public flash.text.TextSnapshot::getTextRunInfo");
            };
            c.prototype.hitTestTextNearPos = function(a, c, d) {
              n("public flash.text.TextSnapshot::hitTestTextNearPos");
            };
            c.prototype.setSelectColor = function(a) {
              n("public flash.text.TextSnapshot::setSelectColor");
            };
            c.prototype.setSelected = function(a, c, d) {
              n("public flash.text.TextSnapshot::setSelected");
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.ASNative);
          k.TextSnapshot = c;
        })(k.text || (k.text = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.notImplemented, u = d.Debug.dummyConstructor, l = function(a) {
            function d() {
              u("public flash.trace.Trace");
            }
            __extends(d, a);
            d.setLevel = function(a, c) {
              n("public flash.trace.Trace::static setLevel");
            };
            d.getLevel = function(a) {
              n("public flash.trace.Trace::static getLevel");
            };
            d.setListener = function(a) {
              n("public flash.trace.Trace::static setListener");
            };
            d.getListener = function() {
              n("public flash.trace.Trace::static getListener");
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.OFF = void 0;
            d.METHODS = 1;
            d.METHODS_WITH_ARGS = 2;
            d.METHODS_AND_LINES = 3;
            d.METHODS_AND_LINES_WITH_ARGS = 4;
            d.FILE = 1;
            d.LISTENER = 2;
            return d;
          }(a.ASNative);
          k.Trace = l;
        })(k.trace || (k.trace = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.Debug.somewhatImplemented, u = function(d) {
            function c() {
              a.display.NativeMenu.instanceConstructorNoInitialize.call(this);
              this.builtInItems = new k.ContextMenuBuiltInItems;
              this.customItems = [];
            }
            __extends(c, d);
            Object.defineProperty(c, "isSupported", {get:function() {
              v("ContextMenu::isSupported");
              return !1;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "builtInItems", {get:function() {
              v("public flash.ui.ContextMenu::get builtInItems");
              return this._builtInItems;
            }, set:function(a) {
              v("public flash.ui.ContextMenu::set builtInItems");
              this._builtInItems = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "customItems", {get:function() {
              v("public flash.ui.ContextMenu::get customItems");
              return this._customItems;
            }, set:function(a) {
              v("public flash.ui.ContextMenu::set customItems");
              this._customItems = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "link", {get:function() {
              v("public flash.ui.ContextMenu::get link");
              return this._link;
            }, set:function(a) {
              v("public flash.ui.ContextMenu::set link");
              this._link = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "clipboardMenu", {get:function() {
              v("public flash.ui.ContextMenu::get clipboardMenu");
              return this._clipboardMenu;
            }, set:function(a) {
              a = !!a;
              v("public flash.ui.ContextMenu::set clipboardMenu");
              this._clipboardMenu = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "clipboardItems", {get:function() {
              v("public flash.ui.ContextMenu::get clipboardItems");
              return this._clipboardItems;
            }, set:function(a) {
              v("public flash.ui.ContextMenu::set clipboardItems");
              this._clipboardItems = a;
            }, enumerable:!0, configurable:!0});
            c.prototype.hideBuiltInItems = function() {
              var a = this.builtInItems;
              a && (a.save = !1, a.zoom = !1, a.quality = !1, a.play = !1, a.loop = !1, a.rewind = !1, a.forwardAndBack = !1, a.print = !1);
            };
            c.prototype.clone = function() {
              var a = new k.ContextMenu;
              a.builtInItems = this.builtInItems.clone();
              this.cloneLinkAndClipboardProperties(a);
              for (var c = this.customItems, d = 0;d < c.length;d++) {
                a.customItems.push(c[d].clone());
              }
              return a;
            };
            c.prototype.cloneLinkAndClipboardProperties = function(a) {
              v("public flash.ui.ContextMenu::cloneLinkAndClipboardProperties");
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.display.NativeMenu);
          k.ContextMenu = u;
        })(a.ui || (a.ui = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(d) {
        (function(d) {
          var k = function(a) {
            function l() {
              this._print = this._forwardAndBack = this._rewind = this._loop = this._play = this._quality = this._zoom = this._save = !0;
            }
            __extends(l, a);
            Object.defineProperty(l.prototype, "save", {get:function() {
              return this._save;
            }, set:function(a) {
              this._save = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "zoom", {get:function() {
              return this._zoom;
            }, set:function(a) {
              this._zoom = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "quality", {get:function() {
              return this._quality;
            }, set:function(a) {
              this._quality = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "play", {get:function() {
              return this._play;
            }, set:function(a) {
              this._play = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "loop", {get:function() {
              return this._loop;
            }, set:function(a) {
              this._loop = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "rewind", {get:function() {
              return this._rewind;
            }, set:function(a) {
              this._rewind = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "forwardAndBack", {get:function() {
              return this._forwardAndBack;
            }, set:function(a) {
              this._forwardAndBack = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "print", {get:function() {
              return this._print;
            }, set:function(a) {
              this._print = !!a;
            }, enumerable:!0, configurable:!0});
            l.prototype.clone = function() {
              var a = new d.ContextMenuBuiltInItems;
              a._save = this._save;
              a._zoom = this._zoom;
              a._quality = this._quality;
              a._play = this._play;
              a._loop = this._loop;
              a._rewind = this._rewind;
              a._forwardAndBack = this._forwardAndBack;
              a._print = this._print;
              return a;
            };
            l.classInitializer = null;
            l.initializer = null;
            l.classSymbols = null;
            l.instanceSymbols = null;
            return l;
          }(a.ASNative);
          d.ContextMenuBuiltInItems = k;
        })(d.ui || (d.ui = {}));
      })(a.flash || (a.flash = {}));
    })(d.AS || (d.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.somewhatImplemented, u = function(a) {
            function c() {
              this._selectAll = this._clear = this._paste = this._copy = this._cut = !0;
            }
            __extends(c, a);
            Object.defineProperty(c.prototype, "cut", {get:function() {
              n("cut");
              return this._cut;
            }, set:function(a) {
              n("cut");
              this._cut = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "copy", {get:function() {
              n("copy");
              return this._copy;
            }, set:function(a) {
              n("copy");
              this._copy = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "paste", {get:function() {
              n("paste");
              return this._paste;
            }, set:function(a) {
              n("paste");
              this._paste = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "clear", {get:function() {
              n("clear");
              return this._clear;
            }, set:function(a) {
              n("clear");
              this._clear = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "selectAll", {get:function() {
              n("selectAll");
              return this._selectAll;
            }, set:function(a) {
              n("selectAll");
              this._selectAll = !!a;
            }, enumerable:!0, configurable:!0});
            c.prototype.clone = function() {
              var a = new k.ContextMenuClipboardItems;
              a._cut = this._cut;
              a._copy = this._copy;
              a._paste = this._paste;
              a._clear = this._clear;
              a._selectAll = this._selectAll;
              return a;
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.ASNative);
          k.ContextMenuClipboardItems = u;
        })(k.ui || (k.ui = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.AVM2.Runtime.asCoerceString, u = function(a) {
            function c(a, c, d, l) {
              void 0 === c && (c = !1);
              void 0 === d && (d = !0);
              void 0 === l && (l = !0);
              this._caption = (a = v(a)) ? a : "";
              this._separatorBefore = !!c;
              this._enabled = !!d;
              this._visible = !!l;
            }
            __extends(c, a);
            Object.defineProperty(c.prototype, "caption", {get:function() {
              return this._caption;
            }, set:function(a) {
              this._caption = a = v(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "separatorBefore", {get:function() {
              return this._separatorBefore;
            }, set:function(a) {
              this._separatorBefore = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "visible", {get:function() {
              return this._visible;
            }, set:function(a) {
              this._visible = !!a;
            }, enumerable:!0, configurable:!0});
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.display.NativeMenuItem);
          k.ContextMenuItem = u;
        })(a.ui || (a.ui = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(w) {
          var v = d.Debug.somewhatImplemented, u = d.Debug.dummyConstructor, l = d.AVM2.Runtime.throwError, c = function(a) {
            function c() {
              u("public flash.ui.GameInput");
            }
            __extends(c, a);
            Object.defineProperty(c.prototype, "numDevices", {get:function() {
              v("public flash.ui.GameInput::get numDevices");
              return 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "isSupported", {get:function() {
              v("public flash.ui.GameInput::get isSupported");
              return !1;
            }, enumerable:!0, configurable:!0});
            c.getDeviceAt = function(a) {
              v("public flash.ui.GameInput::static getDeviceAt");
              l("RangeError", k.Errors.ParamRangeError, "index");
              return null;
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.events.EventDispatcher);
          w.GameInput = c;
        })(a.ui || (a.ui = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.Debug.notImplemented, u = d.Debug.dummyConstructor, l = function(a) {
            function d() {
              u("public flash.ui.GameInputControl");
            }
            __extends(d, a);
            Object.defineProperty(d.prototype, "numValues", {get:function() {
              v("public flash.ui.GameInputControl::get numValues");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "index", {get:function() {
              v("public flash.ui.GameInputControl::get index");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "relative", {get:function() {
              v("public flash.ui.GameInputControl::get relative");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "type", {get:function() {
              v("public flash.ui.GameInputControl::get type");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "hand", {get:function() {
              v("public flash.ui.GameInputControl::get hand");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "finger", {get:function() {
              v("public flash.ui.GameInputControl::get finger");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "device", {get:function() {
              v("public flash.ui.GameInputControl::get device");
            }, enumerable:!0, configurable:!0});
            d.prototype.getValueAt = function(a) {
              v("public flash.ui.GameInputControl::getValueAt");
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(a.events.EventDispatcher);
          k.GameInputControl = l;
        })(a.ui || (a.ui = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.ui.GameInputControlType");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.MOVEMENT = "movement";
            c.ROTATION = "rotation";
            c.DIRECTION = "direction";
            c.ACCELERATION = "acceleration";
            c.BUTTON = "button";
            c.TRIGGER = "trigger";
            return c;
          }(a.ASNative);
          k.GameInputControlType = u;
        })(k.ui || (k.ui = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.Debug.notImplemented, u = d.Debug.dummyConstructor, l = function(a) {
            function d() {
              u("public flash.ui.GameInputDevice");
            }
            __extends(d, a);
            Object.defineProperty(d.prototype, "numControls", {get:function() {
              v("public flash.ui.GameInputDevice::get numControls");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "sampleInterval", {get:function() {
              v("public flash.ui.GameInputDevice::get sampleInterval");
            }, set:function(a) {
              v("public flash.ui.GameInputDevice::set sampleInterval");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "enabled", {get:function() {
              v("public flash.ui.GameInputDevice::get enabled");
            }, set:function(a) {
              v("public flash.ui.GameInputDevice::set enabled");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "id", {get:function() {
              v("public flash.ui.GameInputDevice::get id");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "name", {get:function() {
              v("public flash.ui.GameInputDevice::get name");
            }, enumerable:!0, configurable:!0});
            d.prototype.getControlAt = function(a) {
              v("public flash.ui.GameInputDevice::getControlAt");
            };
            d.prototype.startCachingSamples = function(a, c) {
              v("public flash.ui.GameInputDevice::startCachingSamples");
            };
            d.prototype.stopCachingSamples = function() {
              v("public flash.ui.GameInputDevice::stopCachingSamples");
            };
            d.prototype.getCachedSamples = function(a, c) {
              v("public flash.ui.GameInputDevice::getCachedSamples");
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.MAX_BUFFER_SIZE = 4800;
            return d;
          }(a.events.EventDispatcher);
          k.GameInputDevice = l;
        })(a.ui || (a.ui = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.ui.GameInputFinger");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.THUMB = "thumb";
            c.INDEX = "index";
            c.MIDDLE = "middle";
            c.UNKNOWN = "unknown";
            return c;
          }(a.ASNative);
          k.GameInputFinger = u;
        })(k.ui || (k.ui = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.ui.GameInputHand");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.RIGHT = "right";
            c.LEFT = "left";
            c.UNKNOWN = "unknown";
            return c;
          }(a.ASNative);
          k.GameInputHand = u;
        })(k.ui || (k.ui = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(w) {
          var v = d.Debug.notImplemented, u = d.Debug.dummyConstructor, l = function() {
            function a() {
              this._lastKeyCode = 0;
              this._captureKeyPress = !1;
              this._charCodeMap = [];
            }
            a.prototype.dispatchKeyboardEvent = function(a) {
              var c = a.keyCode;
              if ("keydown" === a.type) {
                this._lastKeyCode = c;
                if (this._captureKeyPress = 8 === c || 9 === c || 13 === c || 32 === c || 48 <= c && 90 >= c || 145 < c) {
                  return;
                }
                this._charCodeMap[c] = 0;
              } else {
                if ("keypress" === a.type) {
                  if (this._captureKeyPress) {
                    c = this._lastKeyCode, this._charCodeMap[c] = a.charCode;
                  } else {
                    return;
                  }
                }
              }
              if (this.target) {
                var d = "keyup" === a.type;
                this.target.dispatchEvent(new k.events.KeyboardEvent(d ? "keyUp" : "keyDown", !0, !1, d ? this._charCodeMap[c] : a.charCode, d ? a.keyCode : this._lastKeyCode, a.location, a.ctrlKey, a.altKey, a.shiftKey));
              }
            };
            return a;
          }();
          w.KeyboardEventDispatcher = l;
          l = function(a) {
            function d() {
              u("public flash.ui.Keyboard");
            }
            __extends(d, a);
            Object.defineProperty(d, "capsLock", {get:function() {
              v("public flash.ui.Keyboard::get capsLock");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "numLock", {get:function() {
              v("public flash.ui.Keyboard::get numLock");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "hasVirtualKeyboard", {get:function() {
              v("public flash.ui.Keyboard::get hasVirtualKeyboard");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "physicalKeyboardType", {get:function() {
              v("public flash.ui.Keyboard::get physicalKeyboardType");
            }, enumerable:!0, configurable:!0});
            d.isAccessible = function() {
              v("public flash.ui.Keyboard::static isAccessible");
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.KEYNAME_UPARROW = "Up";
            d.KEYNAME_DOWNARROW = "Down";
            d.KEYNAME_LEFTARROW = "Left";
            d.KEYNAME_RIGHTARROW = "Right";
            d.KEYNAME_F1 = "F1";
            d.KEYNAME_F2 = "F2";
            d.KEYNAME_F3 = "F3";
            d.KEYNAME_F4 = "F4";
            d.KEYNAME_F5 = "F5";
            d.KEYNAME_F6 = "F6";
            d.KEYNAME_F7 = "F7";
            d.KEYNAME_F8 = "F8";
            d.KEYNAME_F9 = "F9";
            d.KEYNAME_F10 = "F10";
            d.KEYNAME_F11 = "F11";
            d.KEYNAME_F12 = "F12";
            d.KEYNAME_F13 = "F13";
            d.KEYNAME_F14 = "F14";
            d.KEYNAME_F15 = "F15";
            d.KEYNAME_F16 = "F16";
            d.KEYNAME_F17 = "F17";
            d.KEYNAME_F18 = "F18";
            d.KEYNAME_F19 = "F19";
            d.KEYNAME_F20 = "F20";
            d.KEYNAME_F21 = "F21";
            d.KEYNAME_F22 = "F22";
            d.KEYNAME_F23 = "F23";
            d.KEYNAME_F24 = "F24";
            d.KEYNAME_F25 = "F25";
            d.KEYNAME_F26 = "F26";
            d.KEYNAME_F27 = "F27";
            d.KEYNAME_F28 = "F28";
            d.KEYNAME_F29 = "F29";
            d.KEYNAME_F30 = "F30";
            d.KEYNAME_F31 = "F31";
            d.KEYNAME_F32 = "F32";
            d.KEYNAME_F33 = "F33";
            d.KEYNAME_F34 = "F34";
            d.KEYNAME_F35 = "F35";
            d.KEYNAME_INSERT = "Insert";
            d.KEYNAME_DELETE = "Delete";
            d.KEYNAME_HOME = "Home";
            d.KEYNAME_BEGIN = "Begin";
            d.KEYNAME_END = "End";
            d.KEYNAME_PAGEUP = "PgUp";
            d.KEYNAME_PAGEDOWN = "PgDn";
            d.KEYNAME_PRINTSCREEN = "PrntScrn";
            d.KEYNAME_SCROLLLOCK = "ScrlLck";
            d.KEYNAME_PAUSE = "Pause";
            d.KEYNAME_SYSREQ = "SysReq";
            d.KEYNAME_BREAK = "Break";
            d.KEYNAME_RESET = "Reset";
            d.KEYNAME_STOP = "Stop";
            d.KEYNAME_MENU = "Menu";
            d.KEYNAME_USER = "User";
            d.KEYNAME_SYSTEM = "Sys";
            d.KEYNAME_PRINT = "Print";
            d.KEYNAME_CLEARLINE = "ClrLn";
            d.KEYNAME_CLEARDISPLAY = "ClrDsp";
            d.KEYNAME_INSERTLINE = "InsLn";
            d.KEYNAME_DELETELINE = "DelLn";
            d.KEYNAME_INSERTCHAR = "InsChr";
            d.KEYNAME_DELETECHAR = "DelChr";
            d.KEYNAME_PREV = "Prev";
            d.KEYNAME_NEXT = "Next";
            d.KEYNAME_SELECT = "Select";
            d.KEYNAME_EXECUTE = "Exec";
            d.KEYNAME_UNDO = "Undo";
            d.KEYNAME_REDO = "Redo";
            d.KEYNAME_FIND = "Find";
            d.KEYNAME_HELP = "Help";
            d.KEYNAME_MODESWITCH = "ModeSw";
            d.STRING_UPARROW = "\uf700";
            d.STRING_DOWNARROW = "\uf701";
            d.STRING_LEFTARROW = "\uf702";
            d.STRING_RIGHTARROW = "\uf703";
            d.STRING_F1 = "\uf704";
            d.STRING_F2 = "\uf705";
            d.STRING_F3 = "\uf706";
            d.STRING_F4 = "\uf707";
            d.STRING_F5 = "\uf708";
            d.STRING_F6 = "\uf709";
            d.STRING_F7 = "\uf70a";
            d.STRING_F8 = "\uf70b";
            d.STRING_F9 = "\uf70c";
            d.STRING_F10 = "\uf70d";
            d.STRING_F11 = "\uf70e";
            d.STRING_F12 = "\uf70f";
            d.STRING_F13 = "\uf710";
            d.STRING_F14 = "\uf711";
            d.STRING_F15 = "\uf712";
            d.STRING_F16 = "\uf713";
            d.STRING_F17 = "\uf714";
            d.STRING_F18 = "\uf715";
            d.STRING_F19 = "\uf716";
            d.STRING_F20 = "\uf717";
            d.STRING_F21 = "\uf718";
            d.STRING_F22 = "\uf719";
            d.STRING_F23 = "\uf71a";
            d.STRING_F24 = "\uf71b";
            d.STRING_F25 = "\uf71c";
            d.STRING_F26 = "\uf71d";
            d.STRING_F27 = "\uf71e";
            d.STRING_F28 = "\uf71f";
            d.STRING_F29 = "\uf720";
            d.STRING_F30 = "\uf721";
            d.STRING_F31 = "\uf722";
            d.STRING_F32 = "\uf723";
            d.STRING_F33 = "\uf724";
            d.STRING_F34 = "\uf725";
            d.STRING_F35 = "\uf726";
            d.STRING_INSERT = "\uf727";
            d.STRING_DELETE = "\uf728";
            d.STRING_HOME = "\uf729";
            d.STRING_BEGIN = "\uf72a";
            d.STRING_END = "\uf72b";
            d.STRING_PAGEUP = "\uf72c";
            d.STRING_PAGEDOWN = "\uf72d";
            d.STRING_PRINTSCREEN = "\uf72e";
            d.STRING_SCROLLLOCK = "\uf72f";
            d.STRING_PAUSE = "\uf730";
            d.STRING_SYSREQ = "\uf731";
            d.STRING_BREAK = "\uf732";
            d.STRING_RESET = "\uf733";
            d.STRING_STOP = "\uf734";
            d.STRING_MENU = "\uf735";
            d.STRING_USER = "\uf736";
            d.STRING_SYSTEM = "\uf737";
            d.STRING_PRINT = "\uf738";
            d.STRING_CLEARLINE = "\uf739";
            d.STRING_CLEARDISPLAY = "\uf73a";
            d.STRING_INSERTLINE = "\uf73b";
            d.STRING_DELETELINE = "\uf73c";
            d.STRING_INSERTCHAR = "\uf73d";
            d.STRING_DELETECHAR = "\uf73e";
            d.STRING_PREV = "\uf73f";
            d.STRING_NEXT = "\uf740";
            d.STRING_SELECT = "\uf741";
            d.STRING_EXECUTE = "\uf742";
            d.STRING_UNDO = "\uf743";
            d.STRING_REDO = "\uf744";
            d.STRING_FIND = "\uf745";
            d.STRING_HELP = "\uf746";
            d.STRING_MODESWITCH = "\uf747";
            d.CharCodeStrings = void 0;
            d.NUMBER_0 = 48;
            d.NUMBER_1 = 49;
            d.NUMBER_2 = 50;
            d.NUMBER_3 = 51;
            d.NUMBER_4 = 52;
            d.NUMBER_5 = 53;
            d.NUMBER_6 = 54;
            d.NUMBER_7 = 55;
            d.NUMBER_8 = 56;
            d.NUMBER_9 = 57;
            d.A = 65;
            d.B = 66;
            d.C = 67;
            d.D = 68;
            d.E = 69;
            d.F = 70;
            d.G = 71;
            d.H = 72;
            d.I = 73;
            d.J = 74;
            d.K = 75;
            d.L = 76;
            d.M = 77;
            d.N = 78;
            d.O = 79;
            d.P = 80;
            d.Q = 81;
            d.R = 82;
            d.S = 83;
            d.T = 84;
            d.U = 85;
            d.V = 86;
            d.W = 87;
            d.X = 88;
            d.Y = 89;
            d.Z = 90;
            d.SEMICOLON = 186;
            d.EQUAL = 187;
            d.COMMA = 188;
            d.MINUS = 189;
            d.PERIOD = 190;
            d.SLASH = 191;
            d.BACKQUOTE = 192;
            d.LEFTBRACKET = 219;
            d.BACKSLASH = 220;
            d.RIGHTBRACKET = 221;
            d.QUOTE = 222;
            d.ALTERNATE = 18;
            d.BACKSPACE = 8;
            d.CAPS_LOCK = 20;
            d.COMMAND = 15;
            d.CONTROL = 17;
            d.DELETE = 46;
            d.DOWN = 40;
            d.END = 35;
            d.ENTER = 13;
            d.ESCAPE = 27;
            d.F1 = 112;
            d.F2 = 113;
            d.F3 = 114;
            d.F4 = 115;
            d.F5 = 116;
            d.F6 = 117;
            d.F7 = 118;
            d.F8 = 119;
            d.F9 = 120;
            d.F10 = 121;
            d.F11 = 122;
            d.F12 = 123;
            d.F13 = 124;
            d.F14 = 125;
            d.F15 = 126;
            d.HOME = 36;
            d.INSERT = 45;
            d.LEFT = 37;
            d.NUMPAD = 21;
            d.NUMPAD_0 = 96;
            d.NUMPAD_1 = 97;
            d.NUMPAD_2 = 98;
            d.NUMPAD_3 = 99;
            d.NUMPAD_4 = 100;
            d.NUMPAD_5 = 101;
            d.NUMPAD_6 = 102;
            d.NUMPAD_7 = 103;
            d.NUMPAD_8 = 104;
            d.NUMPAD_9 = 105;
            d.NUMPAD_ADD = 107;
            d.NUMPAD_DECIMAL = 110;
            d.NUMPAD_DIVIDE = 111;
            d.NUMPAD_ENTER = 108;
            d.NUMPAD_MULTIPLY = 106;
            d.NUMPAD_SUBTRACT = 109;
            d.PAGE_DOWN = 34;
            d.PAGE_UP = 33;
            d.RIGHT = 39;
            d.SHIFT = 16;
            d.SPACE = 32;
            d.TAB = 9;
            d.UP = 38;
            d.RED = 16777216;
            d.GREEN = 16777217;
            d.YELLOW = 16777218;
            d.BLUE = 16777219;
            d.CHANNEL_UP = 16777220;
            d.CHANNEL_DOWN = 16777221;
            d.RECORD = 16777222;
            d.PLAY = 16777223;
            d.PAUSE = 16777224;
            d.STOP = 16777225;
            d.FAST_FORWARD = 16777226;
            d.REWIND = 16777227;
            d.SKIP_FORWARD = 16777228;
            d.SKIP_BACKWARD = 16777229;
            d.NEXT = 16777230;
            d.PREVIOUS = 16777231;
            d.LIVE = 16777232;
            d.LAST = 16777233;
            d.MENU = 16777234;
            d.INFO = 16777235;
            d.GUIDE = 16777236;
            d.EXIT = 16777237;
            d.BACK = 16777238;
            d.AUDIO = 16777239;
            d.SUBTITLE = 16777240;
            d.DVR = 16777241;
            d.VOD = 16777242;
            d.INPUT = 16777243;
            d.SETUP = 16777244;
            d.HELP = 16777245;
            d.MASTER_SHELL = 16777246;
            d.SEARCH = 16777247;
            return d;
          }(a.ASNative);
          w.Keyboard = l;
        })(k.ui || (k.ui = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(n) {
        (function(w) {
          var v = d.Debug.notImplemented, u = d.Debug.somewhatImplemented, l = d.AVM2.Runtime.asCoerceString, c = n.events, g = function() {
            function a() {
              this.currentTarget = this.stage = null;
            }
            a.prototype._findTarget = function(a, c) {
              var d = [];
              this.stage._containsGlobalPoint(20 * a.x | 0, 20 * a.y | 0, c, d);
              return d.length ? d[0] : d.length ? d[0] : null;
            };
            a.prototype._dispatchMouseEvent = function(a, d, h, f) {
              void 0 === f && (f = null);
              var b = a.globalToLocal(h.point);
              d = new c.MouseEvent(d, d !== c.MouseEvent.ROLL_OVER && d !== c.MouseEvent.ROLL_OUT && d !== c.MouseEvent.MOUSE_LEAVE, !1, b.x, b.y, f, h.ctrlKey, h.altKey, h.shiftKey, !!h.buttons);
              a.dispatchEvent(d);
            };
            a.prototype.handleMouseEvent = function(a) {
              var d = this.stage;
              if (!d) {
                return d;
              }
              var h = a.point;
              n.ui.Mouse.updateCurrentPosition(h);
              var f = this.currentTarget, b = null, e = n.events.MouseEvent.typeFromDOMType(a.type);
              if (0 <= h.x && h.x < d.stageWidth && 0 <= h.y && h.y < d.stageHeight) {
                b = this._findTarget(h, 3) || this.stage;
              } else {
                if (!f) {
                  return d;
                }
                this._dispatchMouseEvent(d, c.MouseEvent.MOUSE_LEAVE, a);
                if (e !== c.MouseEvent.MOUSE_MOVE) {
                  return d;
                }
              }
              n.ui.Mouse.draggableObject && (h = this._findTarget(h, 5), n.ui.Mouse.draggableObject._updateDragState(h));
              switch(e) {
                case c.MouseEvent.MOUSE_DOWN:
                  a.buttons & 1 ? a.buttons = 1 : a.buttons & 2 ? (e = c.MouseEvent.MIDDLE_MOUSE_DOWN, a.buttons = 2) : a.buttons & 4 && (e = c.MouseEvent.RIGHT_MOUSE_DOWN, a.buttons = 4);
                  b._mouseDown = !0;
                  break;
                case c.MouseEvent.MOUSE_UP:
                  a.buttons & 1 ? a.buttons = 1 : a.buttons & 2 ? (e = c.MouseEvent.MIDDLE_MOUSE_UP, a.buttons = 2) : a.buttons & 4 && (e = c.MouseEvent.RIGHT_MOUSE_UP, a.buttons = 4);
                  b._mouseDown = !1;
                  break;
                case c.MouseEvent.CLICK:
                  a.buttons & 1 || (a.buttons & 2 ? e = c.MouseEvent.MIDDLE_CLICK : a.buttons & 4 && (e = c.MouseEvent.RIGHT_CLICK));
                  a.buttons = 0;
                  break;
                case c.MouseEvent.DOUBLE_CLICK:
                  if (!b.doubleClickEnabled) {
                    return;
                  }
                  a.buttons = 0;
                  break;
                case c.MouseEvent.MOUSE_MOVE:
                  this.currentTarget = b;
                  a.buttons &= 1;
                  if (b === f) {
                    break;
                  }
                  h = b ? b.findNearestCommonAncestor(f) : d;
                  if (f && f !== d) {
                    f._mouseOver = !1;
                    f._mouseDown = !1;
                    this._dispatchMouseEvent(f, c.MouseEvent.MOUSE_OUT, a, b);
                    for (var g = f;g && g !== h;) {
                      this._dispatchMouseEvent(g, c.MouseEvent.ROLL_OUT, a, b), g = g.parent;
                    }
                  }
                  if (!b) {
                    return d;
                  }
                  if (b === d) {
                    break;
                  }
                  for (d = b;d !== h;) {
                    this._dispatchMouseEvent(d, c.MouseEvent.ROLL_OVER, a, f), d = d.parent;
                  }
                  b._mouseOver = !0;
                  this._dispatchMouseEvent(b, c.MouseEvent.MOUSE_OVER, a, f);
                  return b;
              }
              this._dispatchMouseEvent(b, e, a);
              return b;
            };
            return a;
          }();
          w.MouseEventDispatcher = g;
          (function(a) {
            a[a.Left = 1] = "Left";
            a[a.Middle = 2] = "Middle";
            a[a.Right = 4] = "Right";
          })(w.MouseButtonFlags || (w.MouseButtonFlags = {}));
          g = function(a) {
            function c() {
            }
            __extends(c, a);
            Object.defineProperty(c, "supportsCursor", {get:function() {
              return !0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "cursor", {get:function() {
              return this._cursor;
            }, set:function(a) {
              a = l(a);
              0 > w.MouseCursor.toNumber(a) && throwError("ArgumentError", k.Errors.InvalidParamError, "cursor");
              this._cursor = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "supportsNativeCursor", {get:function() {
              return !0;
            }, enumerable:!0, configurable:!0});
            c.hide = function() {
              u("public flash.ui.Mouse::static hide");
            };
            c.show = function() {
              u("public flash.ui.Mouse::static show");
            };
            c.registerCursor = function(a, c) {
              l(a);
              v("public flash.ui.Mouse::static registerCursor");
            };
            c.unregisterCursor = function(a) {
              l(a);
              v("public flash.ui.Mouse::static unregisterCursor");
            };
            c.updateCurrentPosition = function(a) {
              this._currentPosition.copyFrom(a);
            };
            c.classInitializer = function() {
              this._currentPosition = new n.geom.Point;
              this._cursor = w.MouseCursor.AUTO;
              this.draggableObject = null;
            };
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.ASNative);
          w.Mouse = g;
        })(n.ui || (n.ui = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.ui.MouseCursor");
            }
            __extends(c, a);
            c.fromNumber = function(a) {
              switch(a) {
                case 0:
                  return c.AUTO;
                case 1:
                  return c.ARROW;
                case 2:
                  return c.BUTTON;
                case 3:
                  return c.HAND;
                case 4:
                  return c.IBEAM;
                default:
                  return null;
              }
            };
            c.toNumber = function(a) {
              switch(a) {
                case c.AUTO:
                  return 0;
                case c.ARROW:
                  return 1;
                case c.BUTTON:
                  return 2;
                case c.HAND:
                  return 3;
                case c.IBEAM:
                  return 4;
                default:
                  return -1;
              }
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.AUTO = "auto";
            c.ARROW = "arrow";
            c.BUTTON = "button";
            c.HAND = "hand";
            c.IBEAM = "ibeam";
            return c;
          }(a.ASNative);
          k.MouseCursor = u;
        })(k.ui || (k.ui = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.notImplemented, u = d.Debug.dummyConstructor, l = function(a) {
            function d() {
              u("public flash.ui.MouseCursorData");
            }
            __extends(d, a);
            Object.defineProperty(d.prototype, "data", {get:function() {
              n("public flash.ui.MouseCursorData::get data");
            }, set:function(a) {
              n("public flash.ui.MouseCursorData::set data");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "hotSpot", {get:function() {
              n("public flash.ui.MouseCursorData::get hotSpot");
            }, set:function(a) {
              n("public flash.ui.MouseCursorData::set hotSpot");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "frameRate", {get:function() {
              n("public flash.ui.MouseCursorData::get frameRate");
            }, set:function(a) {
              n("public flash.ui.MouseCursorData::set frameRate");
            }, enumerable:!0, configurable:!0});
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(a.ASNative);
          k.MouseCursorData = l;
        })(k.ui || (k.ui = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.somewhatImplemented, u = d.Debug.notImplemented, l = d.Debug.dummyConstructor, c = d.AVM2.Runtime.asCoerceString, g = function(a) {
            function d() {
              l("public flash.ui.Multitouch");
            }
            __extends(d, a);
            Object.defineProperty(d, "inputMode", {get:function() {
              u("public flash.ui.Multitouch::get inputMode");
            }, set:function(a) {
              c(a);
              u("public flash.ui.Multitouch::set inputMode");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "supportsTouchEvents", {get:function() {
              n("public flash.ui.Multitouch::get supportsTouchEvents");
              return !1;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "supportsGestureEvents", {get:function() {
              n("public flash.ui.Multitouch::get supportsGestureEvents");
              return !1;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "supportedGestures", {get:function() {
              n("public flash.ui.Multitouch::get supportedGestures");
              return null;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "maxTouchPoints", {get:function() {
              n("public flash.ui.Multitouch::get maxTouchPoints");
              return 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "mapTouchToMouse", {get:function() {
              n("public flash.ui.Multitouch::get mapTouchToMouse");
              return !0;
            }, set:function(a) {
              u("public flash.ui.Multitouch::set mapTouchToMouse");
            }, enumerable:!0, configurable:!0});
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(a.ASNative);
          k.Multitouch = g;
        })(k.ui || (k.ui = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.ui.MultitouchInputMode");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.NONE = "none";
            c.GESTURE = "gesture";
            c.TOUCH_POINT = "touchPoint";
            return c;
          }(a.ASNative);
          k.MultitouchInputMode = u;
        })(k.ui || (k.ui = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.utils.Endian");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            c.BIG_ENDIAN = "bigEndian";
            c.LITTLE_ENDIAN = "littleEndian";
            return c;
          }(a.ASNative);
          k.Endian = u;
        })(k.utils || (k.utils = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(w) {
          var v = d.AVM2.enterTimeline, u = d.AVM2.leaveTimeline, l = function(c) {
            function d(c, g) {
              a.events.EventDispatcher.instanceConstructorNoInitialize.call(this);
              this._delay = +c;
              this._repeatCount = g | 0;
              this._iteration = 0;
            }
            __extends(d, c);
            Object.defineProperty(d.prototype, "running", {get:function() {
              return this._running;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "delay", {get:function() {
              return this._delay;
            }, set:function(a) {
              a = +a;
              (0 > a || !isFinite(a)) && throwError("RangeError", k.Errors.DelayRangeError);
              this._delay = a;
              this._running && (this.stop(), this.start());
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "repeatCount", {get:function() {
              return this._repeatCount;
            }, set:function(a) {
              (this._repeatCount = a | 0) && this._running && this._iteration >= this._repeatCount && this.stop();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "currentCount", {get:function() {
              return this._iteration;
            }, enumerable:!0, configurable:!0});
            d.prototype.reset = function() {
              this._running && this.stop();
              this._iteration = 0;
            };
            d.prototype.stop = function() {
              this._running = !1;
              clearInterval(this._interval);
            };
            d.prototype.start = function() {
              this._running || (this._running = !0, this._interval = setInterval(this._tick.bind(this), this._delay));
            };
            d.prototype._tick = function() {
              this._iteration++;
              if (this._running) {
                if (a.utils.Timer.dispatchingEnabled) {
                  v("Timer.Timer");
                  try {
                    this.dispatchEvent(new a.events.TimerEvent("timer", !0, !1));
                  } catch (c) {
                    console.warn("caught error under Timer TIMER event: ", c);
                  }
                  u();
                }
                if (0 !== this._repeatCount && this._iteration >= this._repeatCount) {
                  this.stop();
                  v("Timer.TimerComplete");
                  try {
                    this.dispatchEvent(new a.events.TimerEvent(a.events.TimerEvent.TIMER_COMPLETE, !1, !1));
                  } catch (d) {
                    console.warn("caught error under Timer COMPLETE event: ", d);
                  }
                  u();
                }
              }
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            d.dispatchingEnabled = !0;
            return d;
          }(a.events.EventDispatcher);
          w.Timer = l;
        })(a.utils || (a.utils = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.Debug.dummyConstructor, u = function(a) {
            function c(a, c, d, l) {
              v("packageInternal flash.utils.SetIntervalTimer");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.utils.Timer);
          k.SetIntervalTimer = u;
        })(a.utils || (a.utils = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.notImplemented, u = d.Debug.dummyConstructor, l = d.AVM2.Runtime.asCoerceString, c = function(a) {
            function c(a, d) {
              l(d);
              u("public flash.xml.XMLNode");
            }
            __extends(c, a);
            c.escapeXML = function(a) {
              l(a);
              n("public flash.xml.XMLNode::static escapeXML");
            };
            c.initializer = null;
            return c;
          }(a.ASNative);
          k.XMLNode = c;
        })(k.xml || (k.xml = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        (function(k) {
          var v = d.Debug.dummyConstructor, u = d.AVM2.Runtime.asCoerceString, l = function(a) {
            function d(a) {
              void 0 === a && (a = null);
              u(a);
              v("public flash.xml.XMLDocument");
            }
            __extends(d, a);
            d.initializer = null;
            return d;
          }(a.xml.XMLNode);
          k.XMLDocument = l;
        })(a.xml || (a.xml = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.dummyConstructor, u = function(a) {
            function c() {
              n("public flash.xml.XMLNodeType");
            }
            __extends(c, a);
            c.initializer = null;
            return c;
          }(a.ASNative);
          k.XMLNodeType = u;
        })(k.xml || (k.xml = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.notImplemented, u = d.Debug.dummyConstructor, l = d.AVM2.Runtime.asCoerceString, c = function(a) {
            function c() {
              u("packageInternal flash.xml.XMLParser");
            }
            __extends(c, a);
            c.prototype.startParse = function(a, c) {
              l(a);
              n("packageInternal flash.xml.XMLParser::startParse");
            };
            c.prototype.getNext = function(a) {
              n("packageInternal flash.xml.XMLParser::getNext");
            };
            c.initializer = null;
            return c;
          }(a.ASNative);
          k.XMLParser = c;
        })(k.xml || (k.xml = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(k) {
        (function(k) {
          var n = d.Debug.notImplemented, u = d.Debug.dummyConstructor, l = d.AVM2.Runtime.asCoerceString, c = function(a) {
            function c() {
              u("packageInternal flash.xml.XMLTag");
            }
            __extends(c, a);
            Object.defineProperty(c.prototype, "type", {get:function() {
              n("packageInternal flash.xml.XMLTag::get type");
            }, set:function(a) {
              n("packageInternal flash.xml.XMLTag::set type");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "empty", {get:function() {
              n("packageInternal flash.xml.XMLTag::get empty");
            }, set:function(a) {
              n("packageInternal flash.xml.XMLTag::set empty");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "value", {get:function() {
              n("packageInternal flash.xml.XMLTag::get value");
            }, set:function(a) {
              l(a);
              n("packageInternal flash.xml.XMLTag::set value");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "attrs", {get:function() {
              n("packageInternal flash.xml.XMLTag::get attrs");
            }, set:function(a) {
              n("packageInternal flash.xml.XMLTag::set attrs");
            }, enumerable:!0, configurable:!0});
            c.initializer = null;
            return c;
          }(a.ASNative);
          k.XMLTag = c;
        })(k.xml || (k.xml = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      function n(a, c, b) {
        return {classSimpleName:a, nativeName:c, cls:b};
      }
      function w(a, c, b) {
        Object.defineProperty(a, b, {get:function() {
          var e = d.AVM2.Runtime.AVM2.instance.systemDomain.getClass(c);
          Object.defineProperty(a, b, {value:e.instanceConstructor, writable:!1});
          return a[b];
        }, configurable:!0});
      }
      function v() {
        return Date.now() - t.display.Loader.runtimeStartTime;
      }
      function u(a, c) {
        null !== a && void 0 !== a || q("TypeError", k.Errors.NullPointerError, "request");
        d.AVM2.Runtime.AVM2.instance.systemDomain.getClass("flash.net.URLRequest").isInstanceOf(a) || q("TypeError", k.Errors.CheckTypeFailedError, a, "flash.net.URLRequest");
        var b = a.url;
        d.isNullOrUndefined(b) && q("TypeError", k.Errors.NullPointerError, "url");
        /^fscommand:/i.test(b) ? d.AVM2.Runtime.AVM2.instance.applicationDomain.getProperty(m.fromSimpleName("flash.system.fscommand"), !0, !0).call(null, b.substring(10), c) : d.FileLoadingService.instance.navigateTo(b, c);
      }
      function l(a) {
        null !== a && void 0 !== a || q("TypeError", k.Errors.NullPointerError, "request");
        d.AVM2.Runtime.AVM2.instance.systemDomain.getClass("flash.net.URLRequest").isInstanceOf(a) || q("TypeError", k.Errors.CheckTypeFailedError, a, "flash.net.URLRequest");
        var c = d.FileLoadingService.instance.createSession();
        c.onprogress = function() {
        };
        c.open(a);
      }
      function c(a, c) {
        a || q("TypeError", k.Errors.NullPointerError, "aliasName");
        c || q("TypeError", k.Errors.NullPointerError, "classObject");
        k.aliasesCache.classes.set(c, a);
        k.aliasesCache.names[a] = c;
      }
      function g(a) {
        a || q("TypeError", k.Errors.NullPointerError, "aliasName");
        var c = k.aliasesCache.names[a];
        c || q("ReferenceError", k.Errors.ClassNotFoundError, a);
        return c;
      }
      var q = d.AVM2.Runtime.throwError, t = d.AVM2.AS.flash, m = d.AVM2.ABC.Multiname;
      jsGlobal.flash = d.AVM2.AS.flash;
      a.linkNatives = function(h) {
        [n("flash.display.DisplayObject", "DisplayObjectClass", t.display.DisplayObject), n("flash.display.InteractiveObject", "InteractiveObjectClass", t.display.InteractiveObject), n("flash.display.DisplayObjectContainer", "ContainerClass", t.display.DisplayObjectContainer), n("flash.display.Sprite", "SpriteClass", t.display.Sprite), n("flash.display.MovieClip", "MovieClipClass", t.display.MovieClip), n("flash.display.Shape", "ShapeClass", t.display.Shape), n("flash.display.Bitmap", "BitmapClass", 
        t.display.Bitmap), n("flash.display.BitmapData", "BitmapDataClass", t.display.BitmapData), n("flash.display.Stage", "StageClass", t.display.Stage), n("flash.display.Loader", "LoaderClass", t.display.Loader), n("flash.display.LoaderInfo", "LoaderInfoClass", t.display.LoaderInfo), n("flash.display.Graphics", "GraphicsClass", t.display.Graphics), n("flash.display.SimpleButton", "SimpleButtonClass", t.display.SimpleButton), n("flash.display.MorphShape", "MorphShapeClass", t.display.MorphShape), 
        n("flash.display.NativeMenu", "NativeMenuClass", t.display.NativeMenu), n("flash.display.NativeMenuItem", "NativeMenuItemClass", t.display.NativeMenuItem), n("flash.display.FrameLabel", "FrameLabelClass", t.display.FrameLabel), n("flash.display.Scene", "SceneClass", t.display.Scene), n("flash.display.AVM1Movie", "AVM1MovieClass", t.display.AVM1Movie), n("flash.filters.BevelFilter", "BevelFilterClass", t.filters.BevelFilter), n("flash.filters.BitmapFilter", "BitmapFilterClass", t.filters.BitmapFilter), 
        n("flash.filters.BlurFilter", "BlurFilterClass", t.filters.BlurFilter), n("flash.filters.ColorMatrixFilter", "ColorMatrixFilterClass", t.filters.ColorMatrixFilter), n("flash.filters.ConvolutionFilter", "ConvolutionFilterClass", t.filters.ConvolutionFilter), n("flash.filters.DisplacementMapFilter", "DisplacementMapFilterClass", t.filters.DisplacementMapFilter), n("flash.filters.DropShadowFilter", "DropShadowFilterClass", t.filters.DropShadowFilter), n("flash.filters.GlowFilter", "GlowFilterClass", 
        t.filters.GlowFilter), n("flash.filters.GradientBevelFilter", "GradientBevelFilterClass", t.filters.GradientBevelFilter), n("flash.filters.GradientGlowFilter", "GradientGlowFilterClass", t.filters.GradientGlowFilter), n("flash.geom.Point", "PointClass", t.geom.Point), n("flash.geom.Rectangle", "RectangleClass", t.geom.Rectangle), n("flash.geom.Matrix", "MatrixClass", t.geom.Matrix), n("flash.geom.Matrix3D", "Matrix3DClass", t.geom.Matrix3D), n("flash.geom.Vector3D", "Vector3DClass", t.geom.Vector3D), 
        n("flash.geom.Transform", "TransformClass", t.geom.Transform), n("flash.geom.ColorTransform", "ColorTransformClass", t.geom.ColorTransform), n("flash.events.EventDispatcher", "EventDispatcherClass", t.events.EventDispatcher), n("flash.events.Event", "EventClass", t.events.Event), n("flash.events.ErrorEvent", "ErrorEventClass", t.events.ErrorEvent), n("flash.events.IOErrorEvent", "IOErrorEventClass", t.events.IOErrorEvent), n("flash.events.KeyboardEvent", "KeyboardEventClass", t.events.KeyboardEvent), 
        n("flash.events.MouseEvent", "MouseEventClass", t.events.MouseEvent), n("flash.events.GestureEvent", "GestureEventClass", t.events.GestureEvent), n("flash.events.TextEvent", "TextEventClass", t.events.TextEvent), n("flash.events.TimerEvent", "TimerEventClass", t.events.TimerEvent), n("flash.events.ProgressEvent", "ProgressEventClass", t.events.ProgressEvent), n("flash.events.NetStatusEvent", "NetStatusEventClass", t.events.NetStatusEvent), n("flash.events.HTTPStatusEvent", "HTTPStatusEventClass", 
        t.events.HTTPStatusEvent), n("flash.events.UncaughtErrorEvents", "UncaughtErrorEventsClass", t.events.UncaughtErrorEvents), n("flash.external.ExternalInterface", "ExternalInterfaceClass", t.external.ExternalInterface), n("flash.ui.ContextMenu", "ContextMenuClass", t.ui.ContextMenu), n("flash.ui.ContextMenuItem", "ContextMenuItemClass", t.ui.ContextMenuItem), n("flash.ui.ContextMenuBuiltInItems", "ContextMenuBuiltInItemsClass", t.ui.ContextMenuBuiltInItems), n("flash.ui.ContextMenuClipboardItems", 
        "ContextMenuClipboardItemsClass", t.ui.ContextMenuClipboardItems), n("flash.ui.Keyboard", "KeyboardClass", t.ui.Keyboard), n("flash.ui.Mouse", "MouseClass", t.ui.Mouse), n("flash.ui.MouseCursorData", "MouseCursorDataClass", t.ui.MouseCursorData), n("flash.ui.GameInput", "GameInputClass", t.ui.GameInput), n("flash.events.GameInputEvent", "GameInputEventClass", t.events.GameInputEvent), n("flash.ui.GameInputControl", "GameInputControlClass", t.ui.GameInputControl), n("flash.ui.GameInputControlType", 
        "GameInputControlTypeClass", t.ui.GameInputControlType), n("flash.ui.GameInputDevice", "GameInputDeviceClass", t.ui.GameInputDevice), n("flash.ui.GameInputFinger", "GameInputFingerClass", t.ui.GameInputFinger), n("flash.ui.GameInputHand", "GameInputHandClass", t.ui.GameInputHand), n("flash.ui.Multitouch", "MultitouchClass", t.ui.Multitouch), n("flash.ui.MultitouchInputMode", "MultitouchInputModeClass", t.ui.MultitouchInputMode), n("flash.events.TouchEvent", "TouchEventClass", t.events.TouchEvent), 
        n("flash.text.Font", "FontClass", t.text.Font), n("flash.text.TextField", "TextFieldClass", t.text.TextField), n("flash.text.StaticText", "StaticTextClass", t.text.StaticText), n("flash.text.StyleSheet", "StyleSheetClass", t.text.StyleSheet), n("flash.text.TextFormat", "TextFormatClass", t.text.TextFormat), n("flash.text.TextRun", "TextRunClass", t.text.TextRun), n("flash.text.TextLineMetrics"), n("flash.media.Sound", "SoundClass", t.media.Sound), n("flash.media.SoundChannel", "SoundChannelClass", 
        t.media.SoundChannel), n("flash.media.SoundMixer", "SoundMixerClass", t.media.SoundMixer), n("flash.media.SoundTransform", "SoundTransformClass", t.media.SoundTransform), n("flash.media.Video", "VideoClass", t.media.Video), n("flash.media.StageVideo", "StageVideoClass", t.media.StageVideo), n("flash.media.ID3Info", "ID3InfoClass", t.media.ID3Info), n("flash.media.Microphone", "MicrophoneClass", t.media.Microphone), n("flash.net.FileFilter", "FileFilterClass", t.net.FileFilter), n("flash.net.NetConnection", 
        "NetConnectionClass", t.net.NetConnection), n("flash.net.NetStream", "NetStreamClass", t.net.NetStream), n("flash.net.Responder", "ResponderClass", t.net.Responder), n("flash.net.URLRequest", "URLRequestClass", t.net.URLRequest), n("flash.net.URLRequestHeader"), n("flash.net.URLStream", "URLStreamClass", t.net.URLStream), n("flash.net.URLLoader", "URLLoaderClass", t.net.URLLoader), n("flash.net.SharedObject", "SharedObjectClass", t.net.SharedObject), n("flash.net.ObjectEncoding", "ObjectEncodingClass", 
        t.net.ObjectEncoding), n("flash.net.LocalConnection", "LocalConnectionClass", t.net.LocalConnection), n("flash.net.Socket", "SocketClass", t.net.Socket), n("flash.net.URLVariables", "URLVariablesClass", t.net.URLVariables), n("packageInternal flash.system.FSCommand", "FSCommandClass", t.system.FSCommand), n("flash.system.Capabilities", "CapabilitiesClass", t.system.Capabilities), n("flash.system.Security", "SecurityClass", t.system.Security), n("flash.system.SecurityDomain", "SecurityDomainClass", 
        t.system.SecurityDomain), n("flash.system.ApplicationDomain", "ApplicationDomainClass", t.system.ApplicationDomain), n("flash.system.JPEGLoaderContext", "JPEGLoaderContextClass", t.system.JPEGLoaderContext), n("flash.system.LoaderContext", "LoaderContextClass", t.system.LoaderContext), n("flash.accessibility.Accessibility", "AccessibilityClass", t.accessibility.Accessibility), n("flash.utils.Timer", "TimerClass", t.utils.Timer), n("flash.utils.ByteArray", "ByteArrayClass", t.utils.ByteArray)].forEach(function(c) {
          for (var b = m.fromSimpleName(c.classSimpleName).getOriginalName().split("."), e = d.AVM2.AS, h = 0, g = b.length - 1;h < g;h++) {
            e[b[h]] || (e[b[h]] = {}), e = e[b[h]];
          }
          w(e, c.classSimpleName, b[b.length - 1]);
          a.registerNativeClass(c.nativeName, c.cls);
        });
        a.registerNativeFunction("FlashUtilScript::getDefinitionByName", d.AVM2.AS.Natives.getDefinitionByName);
        a.registerNativeFunction("FlashUtilScript::getTimer", v);
        a.registerNativeFunction("FlashUtilScript::escapeMultiByte", escape);
        a.registerNativeFunction("FlashUtilScript::unescapeMultiByte", unescape);
        a.registerNativeFunction("FlashNetScript::navigateToURL", u);
        a.registerNativeFunction("FlashNetScript::sendToURL", l);
        a.registerNativeFunction("Toplevel::registerClassAlias", c);
        a.registerNativeFunction("Toplevel::getClassByAlias", g);
      };
      a.FlashUtilScript_getTimer = v;
      a.FlashNetScript_navigateToURL = u;
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
console.timeEnd("Load Flash TS Dependencies");
console.time("Load AVM1 Dependencies");
(function(d) {
  (function(d) {
    var a = function() {
      function a(d, k) {
        this.array = d;
        this.position = 0;
        this.end = d.length;
        this.readANSI = 6 > k;
        var n = new ArrayBuffer(4);
        (new Int32Array(n))[0] = 1;
        if (!(new Uint8Array(n))[0]) {
          throw Error("big-endian platform");
        }
      }
      a.prototype.readUI8 = function() {
        return this.array[this.position++];
      };
      a.prototype.readUI16 = function() {
        var a = this.position, d = this.array, d = d[a + 1] << 8 | d[a];
        this.position = a + 2;
        return d;
      };
      a.prototype.readSI16 = function() {
        var a = this.position, d = this.array, d = d[a + 1] << 8 | d[a];
        this.position = a + 2;
        return 32768 > d ? d : d - 65536;
      };
      a.prototype.readInteger = function() {
        var a = this.position, d = this.array, d = d[a] | d[a + 1] << 8 | d[a + 2] << 16 | d[a + 3] << 24;
        this.position = a + 4;
        return d;
      };
      a.prototype.readFloat = function() {
        var a = this.position, d = this.array, k = new ArrayBuffer(4), l = new Uint8Array(k);
        l[0] = d[a];
        l[1] = d[a + 1];
        l[2] = d[a + 2];
        l[3] = d[a + 3];
        this.position = a + 4;
        return (new Float32Array(k))[0];
      };
      a.prototype.readDouble = function() {
        var a = this.position, d = this.array, k = new ArrayBuffer(8), l = new Uint8Array(k);
        l[4] = d[a];
        l[5] = d[a + 1];
        l[6] = d[a + 2];
        l[7] = d[a + 3];
        l[0] = d[a + 4];
        l[1] = d[a + 5];
        l[2] = d[a + 6];
        l[3] = d[a + 7];
        this.position = a + 8;
        return (new Float64Array(k))[0];
      };
      a.prototype.readBoolean = function() {
        return !!this.readUI8();
      };
      a.prototype.readANSIString = function() {
        for (var a = "", d;d = this.readUI8();) {
          a += String.fromCharCode(d);
        }
        return a;
      };
      a.prototype.readUTF8String = function() {
        for (var a = "", d;d = this.readUI8();) {
          if (128 > d) {
            a += String.fromCharCode(d);
          } else {
            if (128 === (d & 192)) {
              a += String.fromCharCode(d);
            } else {
              var k = this.position - 1, l = 192, c = 5;
              do {
                var g = l >> 1 | 128;
                if ((d & g) === l) {
                  break;
                }
                l = g;
                --c;
              } while (0 <= c);
              l = d & (1 << c) - 1;
              for (g = 5;g >= c;--g) {
                if (d = this.readUI8(), 128 !== (d & 192)) {
                  for (d = this.position - 1, this.position = k;this.position < d;) {
                    a += String.fromCharCode(this.readUI8());
                  }
                } else {
                  l = l << 6 | d & 63;
                }
              }
              a = 65536 <= l ? a + String.fromCharCode(l - 65536 >> 10 & 1023 | 55296, l & 1023 | 56320) : a + String.fromCharCode(l);
            }
          }
        }
        return a;
      };
      a.prototype.readString = function() {
        return this.readANSI ? this.readANSIString() : this.readUTF8String();
      };
      a.prototype.readBytes = function(a) {
        var d = this.position, k = Math.max(this.end - d, 0);
        k < a && (a = k);
        k = this.array.subarray(d, d + a);
        this.position = d + a;
        return k;
      };
      return a;
    }();
    d.ActionsDataStream = a;
  })(d.AVM1 || (d.AVM1 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    var a = d.AVM1.ActionsDataStream;
    (function(a) {
      a[a.None = 0] = "None";
      a[a.ActionGotoFrame = 129] = "ActionGotoFrame";
      a[a.ActionGetURL = 131] = "ActionGetURL";
      a[a.ActionNextFrame = 4] = "ActionNextFrame";
      a[a.ActionPreviousFrame = 5] = "ActionPreviousFrame";
      a[a.ActionPlay = 6] = "ActionPlay";
      a[a.ActionStop = 7] = "ActionStop";
      a[a.ActionToggleQuality = 8] = "ActionToggleQuality";
      a[a.ActionStopSounds = 9] = "ActionStopSounds";
      a[a.ActionWaitForFrame = 138] = "ActionWaitForFrame";
      a[a.ActionSetTarget = 139] = "ActionSetTarget";
      a[a.ActionGoToLabel = 140] = "ActionGoToLabel";
      a[a.ActionPush = 150] = "ActionPush";
      a[a.ActionPop = 23] = "ActionPop";
      a[a.ActionAdd = 10] = "ActionAdd";
      a[a.ActionSubtract = 11] = "ActionSubtract";
      a[a.ActionMultiply = 12] = "ActionMultiply";
      a[a.ActionDivide = 13] = "ActionDivide";
      a[a.ActionEquals = 14] = "ActionEquals";
      a[a.ActionLess = 15] = "ActionLess";
      a[a.ActionAnd = 16] = "ActionAnd";
      a[a.ActionOr = 17] = "ActionOr";
      a[a.ActionNot = 18] = "ActionNot";
      a[a.ActionStringEquals = 19] = "ActionStringEquals";
      a[a.ActionStringLength = 20] = "ActionStringLength";
      a[a.ActionMBStringLength = 49] = "ActionMBStringLength";
      a[a.ActionStringAdd = 33] = "ActionStringAdd";
      a[a.ActionStringExtract = 21] = "ActionStringExtract";
      a[a.ActionMBStringExtract = 53] = "ActionMBStringExtract";
      a[a.ActionStringLess = 41] = "ActionStringLess";
      a[a.ActionToInteger = 24] = "ActionToInteger";
      a[a.ActionCharToAscii = 50] = "ActionCharToAscii";
      a[a.ActionMBCharToAscii = 54] = "ActionMBCharToAscii";
      a[a.ActionAsciiToChar = 51] = "ActionAsciiToChar";
      a[a.ActionMBAsciiToChar = 55] = "ActionMBAsciiToChar";
      a[a.ActionJump = 153] = "ActionJump";
      a[a.ActionIf = 157] = "ActionIf";
      a[a.ActionCall = 158] = "ActionCall";
      a[a.ActionGetVariable = 28] = "ActionGetVariable";
      a[a.ActionSetVariable = 29] = "ActionSetVariable";
      a[a.ActionGetURL2 = 154] = "ActionGetURL2";
      a[a.ActionGotoFrame2 = 159] = "ActionGotoFrame2";
      a[a.ActionSetTarget2 = 32] = "ActionSetTarget2";
      a[a.ActionGetProperty = 34] = "ActionGetProperty";
      a[a.ActionSetProperty = 35] = "ActionSetProperty";
      a[a.ActionCloneSprite = 36] = "ActionCloneSprite";
      a[a.ActionRemoveSprite = 37] = "ActionRemoveSprite";
      a[a.ActionStartDrag = 39] = "ActionStartDrag";
      a[a.ActionEndDrag = 40] = "ActionEndDrag";
      a[a.ActionWaitForFrame2 = 141] = "ActionWaitForFrame2";
      a[a.ActionTrace = 38] = "ActionTrace";
      a[a.ActionGetTime = 52] = "ActionGetTime";
      a[a.ActionRandomNumber = 48] = "ActionRandomNumber";
      a[a.ActionCallFunction = 61] = "ActionCallFunction";
      a[a.ActionCallMethod = 82] = "ActionCallMethod";
      a[a.ActionConstantPool = 136] = "ActionConstantPool";
      a[a.ActionDefineFunction = 155] = "ActionDefineFunction";
      a[a.ActionDefineLocal = 60] = "ActionDefineLocal";
      a[a.ActionDefineLocal2 = 65] = "ActionDefineLocal2";
      a[a.ActionDelete = 58] = "ActionDelete";
      a[a.ActionDelete2 = 59] = "ActionDelete2";
      a[a.ActionEnumerate = 70] = "ActionEnumerate";
      a[a.ActionEquals2 = 73] = "ActionEquals2";
      a[a.ActionGetMember = 78] = "ActionGetMember";
      a[a.ActionInitArray = 66] = "ActionInitArray";
      a[a.ActionInitObject = 67] = "ActionInitObject";
      a[a.ActionNewMethod = 83] = "ActionNewMethod";
      a[a.ActionNewObject = 64] = "ActionNewObject";
      a[a.ActionSetMember = 79] = "ActionSetMember";
      a[a.ActionTargetPath = 69] = "ActionTargetPath";
      a[a.ActionWith = 148] = "ActionWith";
      a[a.ActionToNumber = 74] = "ActionToNumber";
      a[a.ActionToString = 75] = "ActionToString";
      a[a.ActionTypeOf = 68] = "ActionTypeOf";
      a[a.ActionAdd2 = 71] = "ActionAdd2";
      a[a.ActionLess2 = 72] = "ActionLess2";
      a[a.ActionModulo = 63] = "ActionModulo";
      a[a.ActionBitAnd = 96] = "ActionBitAnd";
      a[a.ActionBitLShift = 99] = "ActionBitLShift";
      a[a.ActionBitOr = 97] = "ActionBitOr";
      a[a.ActionBitRShift = 100] = "ActionBitRShift";
      a[a.ActionBitURShift = 101] = "ActionBitURShift";
      a[a.ActionBitXor = 98] = "ActionBitXor";
      a[a.ActionDecrement = 81] = "ActionDecrement";
      a[a.ActionIncrement = 80] = "ActionIncrement";
      a[a.ActionPushDuplicate = 76] = "ActionPushDuplicate";
      a[a.ActionReturn = 62] = "ActionReturn";
      a[a.ActionStackSwap = 77] = "ActionStackSwap";
      a[a.ActionStoreRegister = 135] = "ActionStoreRegister";
      a[a.ActionInstanceOf = 84] = "ActionInstanceOf";
      a[a.ActionEnumerate2 = 85] = "ActionEnumerate2";
      a[a.ActionStrictEquals = 102] = "ActionStrictEquals";
      a[a.ActionGreater = 103] = "ActionGreater";
      a[a.ActionStringGreater = 104] = "ActionStringGreater";
      a[a.ActionDefineFunction2 = 142] = "ActionDefineFunction2";
      a[a.ActionExtends = 105] = "ActionExtends";
      a[a.ActionCastOp = 43] = "ActionCastOp";
      a[a.ActionImplementsOp = 44] = "ActionImplementsOp";
      a[a.ActionTry = 143] = "ActionTry";
      a[a.ActionThrow = 42] = "ActionThrow";
      a[a.ActionFSCommand2 = 45] = "ActionFSCommand2";
      a[a.ActionStrictMode = 137] = "ActionStrictMode";
    })(k.ActionCode || (k.ActionCode = {}));
    var n = function() {
      return function(a) {
        this.registerNumber = a;
      };
    }();
    k.ParsedPushRegisterAction = n;
    var w = function() {
      return function(a) {
        this.constantIndex = a;
      };
    }();
    k.ParsedPushConstantAction = w;
    (function(a) {
      a[a.None = 0] = "None";
      a[a.Argument = 1] = "Argument";
      a[a.This = 2] = "This";
      a[a.Arguments = 4] = "Arguments";
      a[a.Super = 8] = "Super";
      a[a.Global = 16] = "Global";
      a[a.Parent = 32] = "Parent";
      a[a.Root = 64] = "Root";
    })(k.ArgumentAssignmentType || (k.ArgumentAssignmentType = {}));
    var v = function() {
      function d(c, g) {
        this._actionsData = c;
        this.dataId = c.id;
        this._stream = new a(c.bytes, g);
      }
      Object.defineProperty(d.prototype, "position", {get:function() {
        return this._stream.position;
      }, set:function(a) {
        this._stream.position = a;
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(d.prototype, "eof", {get:function() {
        return this._stream.position >= this._stream.end;
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(d.prototype, "length", {get:function() {
        return this._stream.end;
      }, enumerable:!0, configurable:!0});
      d.prototype.readNext = function() {
        var a = this._stream, d = a.position, l = a.readUI8(), t = 128 <= l ? a.readUI16() : 0, t = a.position + t, m = null;
        switch(l | 0) {
          case 129:
            var h = a.readUI16(), m = a.readUI8(), f = !1;
            6 !== m && 7 !== m ? a.position-- : (t++, f = 6 === m);
            m = [h, f];
            break;
          case 131:
            h = a.readString();
            m = a.readString();
            m = [h, m];
            break;
          case 138:
            var h = a.readUI16(), b = a.readUI8(), m = [h, b];
            break;
          case 139:
            m = [a.readString()];
            break;
          case 140:
            h = a.readString();
            m = a.readUI8();
            f = !1;
            6 !== m && 7 !== m ? a.position-- : (t++, f = 6 === m);
            m = [h, f];
            break;
          case 150:
            for (m = [];a.position < t;) {
              h = a.readUI8();
              switch(h | 0) {
                case 0:
                  h = a.readString();
                  break;
                case 1:
                  h = a.readFloat();
                  break;
                case 2:
                  h = null;
                  break;
                case 3:
                  h = void 0;
                  break;
                case 4:
                  h = new n(a.readUI8());
                  break;
                case 5:
                  h = a.readBoolean();
                  break;
                case 6:
                  h = a.readDouble();
                  break;
                case 7:
                  h = a.readInteger();
                  break;
                case 8:
                  h = new w(a.readUI8());
                  break;
                case 9:
                  h = new w(a.readUI16());
                  break;
                default:
                  console.error("Unknown value type: " + h);
                  a.position = t;
                  continue;
              }
              m.push(h);
            }
            break;
          case 153:
            h = a.readSI16();
            m = [h];
            break;
          case 157:
            h = a.readSI16();
            m = [h];
            break;
          case 154:
            h = a.readUI8();
            m = [h];
            break;
          case 159:
            h = a.readUI8();
            m = [h];
            h & 2 && m.push(a.readUI16());
            break;
          case 141:
            b = a.readUI8();
            m = [b];
            break;
          case 136:
            for (var b = a.readUI16(), h = [], e = 0;e < b;e++) {
              h.push(a.readString());
            }
            m = [h];
            break;
          case 155:
            m = a.readString();
            b = a.readUI16();
            f = [];
            for (e = 0;e < b;e++) {
              f.push(a.readString());
            }
            h = a.readUI16();
            t += h;
            h = new k.AVM1ActionsData(a.readBytes(h), this.dataId + "_f" + a.position, this._actionsData);
            m = [h, m, f];
            break;
          case 148:
            h = a.readUI16();
            t += h;
            m = [new k.AVM1ActionsData(a.readBytes(h), this.dataId + "_w" + a.position, this._actionsData)];
            break;
          case 135:
            var r = a.readUI8(), m = [r];
            break;
          case 142:
            for (var m = a.readString(), b = a.readUI16(), p = a.readUI8(), h = a.readUI16(), v = [], f = [], e = 0;e < b;e++) {
              var r = a.readUI8(), I = a.readString();
              f.push(I);
              r && (v[r] = {type:1, name:I, index:e});
            }
            b = 1;
            h & 1 && (v[b++] = {type:2});
            h & 4 && (v[b++] = {type:4});
            h & 16 && (v[b++] = {type:8});
            h & 64 && (v[b++] = {type:64});
            h & 128 && (v[b++] = {type:32});
            h & 256 && (v[b++] = {type:16});
            b = 0;
            h & 2 && (b |= 2);
            h & 8 && (b |= 4);
            h & 32 && (b |= 8);
            h = a.readUI16();
            t += h;
            h = new k.AVM1ActionsData(a.readBytes(h), this.dataId + "_f" + a.position, this._actionsData);
            m = [h, m, f, p, v, b];
            break;
          case 143:
            h = a.readUI8();
            m = !!(h & 4);
            f = !!(h & 2);
            h = !!(h & 1);
            b = a.readUI16();
            e = a.readUI16();
            v = a.readUI16();
            p = m ? a.readUI8() : a.readString();
            t += b + e + v;
            b = new k.AVM1ActionsData(a.readBytes(b), this.dataId + "_t" + a.position, this._actionsData);
            e = new k.AVM1ActionsData(a.readBytes(e), this.dataId + "_c" + a.position, this._actionsData);
            v = new k.AVM1ActionsData(a.readBytes(v), this.dataId + "_z" + a.position, this._actionsData);
            m = [m, p, b, h, e, f, v];
            break;
          case 137:
            m = [a.readUI8()];
        }
        a.position = t;
        return {position:d, actionCode:l, actionName:u[l], args:m};
      };
      d.prototype.skip = function(a) {
        for (var d = this._stream;0 < a && d.position < d.end;) {
          var l = 128 <= d.readUI8() ? d.readUI16() : 0;
          d.position += l;
          a--;
        }
      };
      return d;
    }();
    k.ActionsDataParser = v;
    var u = {0:"EOA", 4:"ActionNextFrame", 5:"ActionPreviousFrame", 6:"ActionPlay", 7:"ActionStop", 8:"ActionToggleQuality", 9:"ActionStopSounds", 10:"ActionAdd", 11:"ActionSubtract", 12:"ActionMultiply", 13:"ActionDivide", 14:"ActionEquals", 15:"ActionLess", 16:"ActionAnd", 17:"ActionOr", 18:"ActionNot", 19:"ActionStringEquals", 20:"ActionStringLength", 21:"ActionStringExtract", 23:"ActionPop", 24:"ActionToInteger", 28:"ActionGetVariable", 29:"ActionSetVariable", 32:"ActionSetTarget2", 33:"ActionStringAdd", 
    34:"ActionGetProperty", 35:"ActionSetProperty", 36:"ActionCloneSprite", 37:"ActionRemoveSprite", 38:"ActionTrace", 39:"ActionStartDrag", 40:"ActionEndDrag", 41:"ActionStringLess", 42:"ActionThrow", 43:"ActionCastOp", 44:"ActionImplementsOp", 45:"ActionFSCommand2", 48:"ActionRandomNumber", 49:"ActionMBStringLength", 50:"ActionCharToAscii", 51:"ActionAsciiToChar", 52:"ActionGetTime", 53:"ActionMBStringExtract", 54:"ActionMBCharToAscii", 55:"ActionMBAsciiToChar", 58:"ActionDelete", 59:"ActionDelete2", 
    60:"ActionDefineLocal", 61:"ActionCallFunction", 62:"ActionReturn", 63:"ActionModulo", 64:"ActionNewObject", 65:"ActionDefineLocal2", 66:"ActionInitArray", 67:"ActionInitObject", 68:"ActionTypeOf", 69:"ActionTargetPath", 70:"ActionEnumerate", 71:"ActionAdd2", 72:"ActionLess2", 73:"ActionEquals2", 74:"ActionToNumber", 75:"ActionToString", 76:"ActionPushDuplicate", 77:"ActionStackSwap", 78:"ActionGetMember", 79:"ActionSetMember", 80:"ActionIncrement", 81:"ActionDecrement", 82:"ActionCallMethod", 
    83:"ActionNewMethod", 84:"ActionInstanceOf", 85:"ActionEnumerate2", 96:"ActionBitAnd", 97:"ActionBitOr", 98:"ActionBitXor", 99:"ActionBitLShift", 100:"ActionBitRShift", 101:"ActionBitURShift", 102:"ActionStrictEquals", 103:"ActionGreater", 104:"ActionStringGreater", 105:"ActionExtends", 129:"ActionGotoFrame", 131:"ActionGetURL", 135:"ActionStoreRegister", 136:"ActionConstantPool", 137:"ActionStrictMode", 138:"ActionWaitForFrame", 139:"ActionSetTarget", 140:"ActionGoToLabel", 141:"ActionWaitForFrame2", 
    142:"ActionDefineFunction2", 143:"ActionTry", 148:"ActionWith", 150:"ActionPush", 153:"ActionJump", 154:"ActionGetURL2", 155:"ActionDefineFunction", 157:"ActionIf", 158:"ActionCall", 159:"ActionGotoFrame2"};
  })(d.AVM1 || (d.AVM1 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    var a = function() {
      function a() {
        this.parentResults = null;
        this.registersLimit = 0;
      }
      a.prototype.analyze = function(a) {
        for (var d = [], k = [0], l = [!0], c = !1, g = null, n = [0];0 < n.length;) {
          var t = n.shift();
          if (!d[t]) {
            for (a.position = t;!a.eof && !d[t];) {
              var m = a.readNext();
              if (0 === m.actionCode) {
                break;
              }
              var h = a.position, f = {action:m, next:h, conditionalJumpTo:-1}, b = 0, e = !1, r = !1;
              switch(m.actionCode) {
                case 138:
                ;
                case 141:
                  e = !0;
                  a.skip(138 === m.actionCode ? m.args[1] : m.args[0]);
                  b = a.position;
                  a.position = h;
                  break;
                case 153:
                  e = r = !0;
                  b = h + m.args[0];
                  break;
                case 157:
                  e = !0;
                  b = h + m.args[0];
                  break;
                case 42:
                ;
                case 62:
                ;
                case 0:
                  e = r = !0;
                  b = a.length;
                  break;
                case 136:
                  if (c) {
                    g = null;
                    break;
                  }
                  c = !0;
                  0 === t && (g = m.args[0]);
              }
              if (e) {
                if (0 > b || b > a.length) {
                  console.error("jump outside the action block;"), b = a.length;
                }
                r ? f.next = b : f.conditionalJumpTo = b;
                l[b] || (k.push(b), n.push(b), l[b] = !0);
              }
              d[t] = f;
              if (r) {
                break;
              }
              t = h;
            }
          }
        }
        var p = [];
        k.forEach(function(a) {
          if (d[a]) {
            var b = [], e = a;
            do {
              e = d[e], b.push(e), e = e.next;
            } while (!l[e] && d[e]);
            p.push({label:a, items:b, jump:e});
          }
        });
        k = null;
        c ? k = g : this.parentResults && (k = this.parentResults.singleConstantPool);
        return {actions:d, blocks:p, dataId:a.dataId, singleConstantPool:k, registersLimit:this.registersLimit};
      };
      return a;
    }();
    d.ActionsDataAnalyzer = a;
  })(d.AVM1 || (d.AVM1 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    var a = function() {
      return function(a, d, l) {
        void 0 === l && (l = null);
        this.bytes = a;
        this.id = d;
        this.parent = l;
      };
    }();
    d.AVM1ActionsData = a;
    var n = function() {
      function d() {
        this._cache = new WeakMap;
      }
      d.prototype.createActionsData = function(d, l) {
        var c;
        void 0 === c && (c = null);
        var g = this._cache.get(d);
        g || (g = new a(d, l, c), this._cache.set(d, g));
        return g;
      };
      return d;
    }();
    d.ActionsDataFactory = n;
    var w = function() {
      function a() {
        this.globals = this.root = null;
        this.actionsDataFactory = new n;
      }
      a.prototype.flushPendingScripts = function() {
      };
      a.prototype.addAsset = function(a, d, c) {
      };
      a.prototype.registerClass = function(a, d) {
      };
      a.prototype.getAsset = function(a) {
      };
      a.prototype.resolveTarget = function(a) {
      };
      a.prototype.resolveLevel = function(a) {
      };
      a.prototype.addToPendingScripts = function(a) {
      };
      a.prototype.registerEventPropertyObserver = function(a, d) {
      };
      a.prototype.unregisterEventPropertyObserver = function(a, d) {
      };
      a.prototype.enterContext = function(a, d) {
      };
      a.prototype.executeActions = function(a, d) {
      };
      a.instance = null;
      return a;
    }();
    d.AVM1Context = w;
  })(d.AVM1 || (d.AVM1 = {}));
})(Shumway || (Shumway = {}));
__extends = this.__extends || function(d, k) {
  function a() {
    this.constructor = d;
  }
  for (var n in k) {
    k.hasOwnProperty(n) && (d[n] = k[n]);
  }
  a.prototype = k.prototype;
  d.prototype = new a;
};
(function(d) {
  (function(k) {
    function a(a, b, e, c, d) {
      if (k.avm1ErrorsEnabled.value) {
        try {
          throw Error(a);
        } catch (f) {
        }
      }
      console.warn.apply(console, arguments);
    }
    function n(a) {
      if (null === a) {
        return "null";
      }
      var b = typeof a;
      return "function" === b ? "object" : "object" === b && "object" === typeof a && a && a instanceof k.Lib.AVM1MovieClip ? "movieclip" : b;
    }
    function w(a) {
      return "object" !== n(a) ? a : a.valueOf();
    }
    function v() {
      return k.AVM1Context.instance.loaderInfo.swfVersion;
    }
    function u(a) {
      return "object" !== n(a) ? a : a instanceof Date && 6 <= v() ? a.toString() : a.valueOf();
    }
    function l(a) {
      switch(n(a)) {
        default:
        ;
        case "undefined":
        ;
        case "null":
          return !1;
        case "boolean":
          return a;
        case "number":
          return 0 !== a && !isNaN(a);
        case "string":
          return 0 !== a.length;
        case "movieclip":
        ;
        case "object":
          return !0;
      }
    }
    function c(a) {
      a = w(a);
      switch(n(a)) {
        case "undefined":
        ;
        case "null":
          return 7 <= v() ? NaN : 0;
        case "boolean":
          return a ? 1 : 0;
        case "number":
          return a;
        case "string":
          return "" === a && 5 > v() ? 0 : +a;
        default:
          return 5 <= v() ? NaN : 0;
      }
    }
    function g(a) {
      a = c(a);
      return isNaN(a) || !isFinite(a) || 0 === a ? 0 : a | 0;
    }
    function q(a) {
      switch(n(a)) {
        case "undefined":
          return 7 <= v() ? "undefined" : "";
        case "null":
          return "null";
        case "boolean":
          return a ? "true" : "false";
        case "number":
          return a.toString();
        case "string":
          return a;
        case "movieclip":
          return a.__targetPath;
        case "object":
          if ("function" === typeof a && a.asGetPublicProperty("toString") === d.AVM2.AS.ASFunction.traitsPrototype.asGetPublicProperty("toString")) {
            return "[type Function]";
          }
          var b = a.asCallPublicProperty("toString", null);
          return "string" === typeof b ? b : "function" === typeof a ? "[type Function]" : "[type Object]";
      }
    }
    function t(a, b) {
      var e = w(a), d = w(b);
      if ("string" !== typeof e || "string" !== typeof d) {
        return e = c(e), d = c(d), isNaN(e) || isNaN(d) ? void 0 : e < d;
      }
    }
    function m(a, b) {
      if (d.isNullOrUndefined(a) || d.isNullOrUndefined(b)) {
        return !1;
      }
      if (b === d.AVM2.AS.ASString) {
        return "string" === typeof a;
      }
      if (b === d.AVM2.AS.ASNumber) {
        return "number" === typeof a;
      }
      if (b === d.AVM2.AS.ASBoolean) {
        return "boolean" === typeof a;
      }
      if (b === d.AVM2.AS.ASArray) {
        return Array.isArray(a);
      }
      if (b === d.AVM2.AS.ASFunction) {
        return "function" === typeof a;
      }
      if (b === d.AVM2.AS.ASObject) {
        return "object" === typeof a;
      }
      var e = b.asGetPublicProperty("prototype");
      if (!e) {
        return !1;
      }
      for (var c = a;c;) {
        if (c === e) {
          return !0;
        }
        c = c.asGetPublicProperty("__proto__");
      }
      return !1;
    }
    function h(a, b, e) {
      var c = Object.create(null);
      do {
        Yb(a, function(d) {
          c[d] || (b.call(e, a, d), c[d] = !0);
        }), a = a.asGetPublicProperty("__proto__");
      } while (a);
    }
    function f(a, b) {
      do {
        if (a.asHasProperty(void 0, b, 0)) {
          return qa.link = a, qa.name = b, qa;
        }
        a = a.asGetPublicProperty("__proto__");
      } while (a);
      return null;
    }
    function b(b, e, c) {
      if (d.isNullOrUndefined(b)) {
        return a("AVM1 warning: cannot look up member '" + e + "' on undefined object"), null;
      }
      var g;
      b = Object(b);
      if (null !== (g = f(b, e))) {
        return g;
      }
      if (Zb(e) || 6 < v()) {
        return c ? (qa.link = b, qa.name = e, qa) : null;
      }
      var l = e.toLowerCase();
      if (null !== (g = f(b, l))) {
        return g;
      }
      null === Ha && (Ha = Object.create(null), $b.forEach(function(a) {
        Ha[a.toLowerCase()] = a;
      }));
      var k = Ha[l] || null;
      if (k && null !== (g = f(b, k))) {
        return g;
      }
      var p = null, r = null;
      h(b, function(a, b) {
        null === p && b.toLowerCase() === l && (r = a, p = b);
      }, null);
      return p ? (qa.link = r, qa.name = p, qa) : c ? (qa.link = b, qa.name = k || e, qa) : null;
    }
    function e(a, e) {
      var c = b(a, e, !1);
      return c ? c.link.asGetPublicProperty(c.name) : void 0;
    }
    function r(a, e, c) {
      if (e = b(a, e, !0)) {
        var d = e.link.asGetPropertyDescriptor(void 0, e.name, 0);
        !d || "value" in d ? a.asSetPublicProperty(e.name, c) : e.link.asSetPublicProperty(e.name, c);
        p(e.name);
      }
    }
    function p(a) {
      "o" === a[0] && "n" === a[1] && k.AVM1Context.instance.broadcastEventPropertyChange(a);
    }
    function C(a) {
      return "undefined" !== typeof InternalError && a instanceof InternalError && "too much recursion" === a.message ? new sa("long running script -- AVM1 recursion limit is reached") : a;
    }
    function I(a, b, e) {
      a.asSetPublicProperty("__proto__", b);
      a.asDefinePublicProperty("__constructor__", {value:e, writable:!0, enumerable:!1, configurable:!1});
    }
    function B(a, b) {
      var e;
      if (a instanceof d.AVM2.AS.ASClass) {
        e = ac(a, b), I(e, a.asGetPublicProperty("prototype"), a);
      } else {
        if (Ka(a)) {
          for (var c = a.asGetPublicProperty("prototype");c && !c.initAVM1ObjectInstance;) {
            c = c.asGetPublicProperty("__proto__");
          }
          e = c ? Object.create(c) : {};
          I(e, a.asGetPublicProperty("prototype"), a);
          c && c.initAVM1ObjectInstance.call(e, k.AVM1Context.instance);
          a.apply(e, b);
        } else {
          return;
        }
      }
      return e;
    }
    function D(a, b) {
      h(a, function(a, e) {
        return b.call(null, e);
      });
    }
    function M(a, e) {
      if (6 > v()) {
        return null;
      }
      var c;
      c = a.inSequence && a.previousFrame.calleeSuper;
      if (!c) {
        c = b(a.currentThis, e, !1);
        if (!c) {
          return null;
        }
        c = c.link;
      }
      c = c.asGetPublicProperty("__proto__");
      return c ? (c = b(c, e, !1)) ? {target:c.link, name:c.name, obj:c.link.asGetPublicProperty(c.name)} : null : null;
    }
    function E(a, b, e) {
      if (!b.executionProhibited) {
        var c = Wa.get(), d = [];
        d.length = 4;
        var f = b.initialScope.create(e), h;
        b.pushCallFrame(e, null, null);
        c.message("ActionScript Execution Starts");
        c.indent();
        b.enterContext(function() {
          try {
            wa(a, f, [], d);
          } catch (b) {
            h = C(b);
          }
        }, e);
        h instanceof sa && (b.executionProhibited = !0, console.error("Disabling AVM1 execution"));
        b.popCallFrame();
        c.unindent();
        c.message("ActionScript Execution Stops");
        if (h) {
          throw h;
        }
      }
    }
    function J(b, e, c) {
      var d = b.split(/[\/.]/g);
      "" === d[d.length - 1] && d.pop();
      if ("" === d[0] || "_level0" === d[0] || "_root" === d[0]) {
        e = c, d.shift();
      }
      for (;0 < d.length;) {
        c = e;
        e = e.__lookupChild(d[0]);
        if (!e) {
          return a(d[0] + " (expr " + b + ") is not found in " + c._target), {};
        }
        d.shift();
      }
      return e;
    }
    function P(a, b) {
      if (a === Array) {
        var e = b;
        1 == b.length && "number" === typeof b[0] && (e = [], e.length = b[0]);
        return e;
      }
      if (a === Boolean || a === Number || a === String || a === Function) {
        return a.apply(null, b);
      }
      if (a === Date) {
        switch(b.length) {
          case 0:
            return new Date;
          case 1:
            return new Date(b[0]);
          default:
            return new Date(b[0], b[1], 2 < b.length ? b[2] : 1, 3 < b.length ? b[3] : 0, 4 < b.length ? b[4] : 0, 5 < b.length ? b[5] : 0, 6 < b.length ? b[6] : 0);
        }
      }
      if (a === Object) {
        return new Xa;
      }
    }
    function y(b, e) {
      if (isNaN(b) || 0 > b) {
        return a("Invalid amount of arguments: " + b), 0;
      }
      b |= 0;
      return b > e ? (a("Truncating amount of arguments: from " + b + " to " + e), e) : b;
    }
    function K(a) {
      for (var b = +a.pop(), b = y(b, a.length), e = [], c = 0;c < b;c++) {
        e.push(a.pop());
      }
      return e;
    }
    function H(a, b) {
      var e = a.context;
      if (b) {
        try {
          var c = J(b, e.currentTarget || e.defaultTarget, e.resolveLevel(0));
          e.currentTarget = c;
        } catch (d) {
          throw e.currentTarget = null, d;
        }
      } else {
        e.currentTarget = null;
      }
    }
    function A(a) {
      return a === this;
    }
    function z(a, b, e, c, d, f, h) {
      function g() {
        if (!k.executionProhibited) {
          var a, e = new bc, d = A(this) ? m : this, C, w, Va = k.pushCallFrame(d, g, arguments);
          h & 4 || (C = Ya(arguments, 0), e.asSetPublicProperty("arguments", C));
          h & 2 || e.asSetPublicProperty("this", d);
          h & 8 || (w = new xa(Va), e.asSetPublicProperty("super", w));
          a = r.create(e);
          var B, x = l();
          for (B = 0;B < v;B++) {
            var D = f[B];
            if (D) {
              switch(D.type) {
                case 1:
                  x[B] = arguments[D.index];
                  break;
                case 2:
                  x[B] = d;
                  break;
                case 4:
                  C = C || Ya(arguments, 0);
                  x[B] = C;
                  break;
                case 8:
                  w = w || new xa(Va);
                  x[B] = w;
                  break;
                case 16:
                  x[B] = p;
                  break;
                case 32:
                  x[B] = m.asGetPublicProperty("_parent");
                  break;
                case 64:
                  x[B] = k.resolveLevel(0);
              }
            }
          }
          for (B = 0;B < arguments.length || B < c.length;B++) {
            u && u[B] || e.asSetPublicProperty(c[B], arguments[B]);
          }
          var E, M;
          n.indent();
          if (256 <= ++k.stackDepth) {
            throw new sa("long running script -- AVM1 recursion limit is reached");
          }
          k.enterContext(function() {
            try {
              E = wa(b, a, t, x);
            } catch (e) {
              M = e;
            }
          }, q);
          k.stackDepth--;
          k.popCallFrame();
          n.unindent();
          10 < I.length || I.push(x);
          if (M) {
            throw M;
          }
          return E;
        }
      }
      function l() {
        if (0 < I.length) {
          return I.pop();
        }
        var a = [];
        a.length = w;
        return a;
      }
      var k = a.context, p = a.global, r = a.scopeContainer, m = a.scope, n = a.actionTracer, q = k.defaultTarget, t = a.constantPool, u = null, v = f ? f.length : 0;
      for (a = 0;a < v;a++) {
        var C = f[a];
        C && 1 === C.type && (u || (u = []), u[f[a].index] = !0);
      }
      var w = Math.min(d, 255), w = Math.max(w, v + 1), I = [];
      d = g;
      d.instanceConstructor = g;
      d.debugName = "avm1 " + (e || "<function>");
      e && (d.name = e);
      return g;
    }
    function G(a) {
      return a && (0 <= a.indexOf(".") || 0 <= a.indexOf(":"));
    }
    function L(e, c, d) {
      var f = e.global;
      e = e.context;
      var h, g;
      if (0 <= c.indexOf(":")) {
        h = e.currentTarget || e.defaultTarget;
        g = c.split(":");
        h = J(g[0], h, e.resolveLevel(0));
        if (!h) {
          return a(g[0] + " is undefined"), null;
        }
        g = g[1];
      } else {
        if (0 <= c.indexOf(".")) {
          for (c = c.split("."), g = c.pop(), h = f, f = 0;f < c.length;f++) {
            if (h = (e = b(h, c[f], !1)) && e.link.asGetPublicProperty(e.name), !h) {
              return a(c.slice(0, f + 1) + " is undefined"), null;
            }
          }
        }
      }
      return (e = b(h, g, d)) ? (ka.obj = h, ka.link = e.link, ka.name = e.name, ka) : null;
    }
    function F(a, e) {
      if (G(e)) {
        return L(a, e, !1);
      }
      var c = a.scopeContainer, d = a.context, d = d.currentTarget || d.defaultTarget, f = a.scope, h;
      if (h = b(f, e, !1)) {
        return ka.obj = f, ka.link = h.link, ka.name = h.name, ka;
      }
      for (;c;c = c.next) {
        if (h = b(c.scope, e, !1)) {
          return ka.obj = c.scope, ka.link = h.link, ka.name = h.name, ka;
        }
      }
      return (h = b(d, e, !1)) ? (ka.obj = d, ka.link = h.link, ka.name = h.name, ka) : "this" === e ? (f.asDefinePublicProperty("this", {value:d, configurable:!0}), ka.obj = f, ka.link = f, ka.name = "this", ka) : null;
    }
    function S(a, e) {
      if (G(e)) {
        return L(a, e, !0);
      }
      var c = a.scopeContainer, d = a.context, f = d.currentTarget || d.defaultTarget, h = a.scope;
      if (d.currentTarget) {
        return ka.obj = f, ka.link = f, ka.name = e, ka;
      }
      if (d = b(h, e, !1)) {
        return ka.obj = h, ka.link = d.link, ka.name = d.name, ka;
      }
      for (;c.next;c = c.next) {
        if (d = b(c.scope, e, !1)) {
          return ka.obj = c.scope, ka.link = d.link, ka.name = d.name, ka;
        }
      }
      ka.obj = f;
      ka.link = f;
      ka.name = e;
      return ka;
    }
    function U(a, b) {
      var e = a.global, c = b[0];
      b[1] ? e.gotoAndPlay(c + 1) : e.gotoAndStop(c + 1);
    }
    function N(a, b) {
      a.global.getURL(b[0], b[1]);
    }
    function R(a) {
      a.global.nextFrame();
    }
    function T(a) {
      a.global.prevFrame();
    }
    function X(a) {
      a.global.play();
    }
    function da(a) {
      a.global.stop();
    }
    function x(a) {
      a.global.toggleHighQuality();
    }
    function Y(a) {
      a.global.stopAllSounds();
    }
    function V(a, b) {
      return !a.global.ifFrameLoaded(b[0]);
    }
    function ba(a, b) {
      H(a, b[0]);
    }
    function Z(a, b) {
      var e = a.global, c = b[0];
      b[1] ? e.gotoAndPlay(c) : e.gotoAndStop(c);
    }
    function O(a, b) {
      var e = a.registers, c = a.constantPool, d = a.stack;
      b.forEach(function(a) {
        a instanceof k.ParsedPushConstantAction ? d.push(c[a.constantIndex]) : a instanceof k.ParsedPushRegisterAction ? (a = a.registerNumber, 0 > a || a >= e.length ? d.push(void 0) : d.push(e[a])) : d.push(a);
      });
    }
    function aa(a) {
      a.stack.pop();
    }
    function ea(a) {
      a = a.stack;
      var b = c(a.pop()), e = c(a.pop());
      a.push(b + e);
    }
    function ia(a) {
      a = a.stack;
      var b = c(a.pop()), e = c(a.pop());
      a.push(e - b);
    }
    function ja(a) {
      a = a.stack;
      var b = c(a.pop()), e = c(a.pop());
      a.push(b * e);
    }
    function ga(a) {
      var b = a.stack;
      a = a.isSwfVersion5;
      var e = c(b.pop()), e = c(b.pop()) / e;
      b.push(a ? e : isFinite(e) ? e : "#ERROR#");
    }
    function ca(a) {
      var b = a.stack;
      a = a.isSwfVersion5;
      var e = c(b.pop()), d = c(b.pop()), e = e == d;
      b.push(a ? e : e ? 1 : 0);
    }
    function fa(a) {
      var b = a.stack;
      a = a.isSwfVersion5;
      var e = c(b.pop()), e = c(b.pop()) < e;
      b.push(a ? e : e ? 1 : 0);
    }
    function Q(a) {
      var b = a.stack;
      a = a.isSwfVersion5;
      var e = l(b.pop()), c = l(b.pop()), e = e && c;
      b.push(a ? e : e ? 1 : 0);
    }
    function ma(a) {
      var b = a.stack;
      a = a.isSwfVersion5;
      var e = l(b.pop()), c = l(b.pop()), e = e || c;
      b.push(a ? e : e ? 1 : 0);
    }
    function W(a) {
      var b = a.stack;
      a = a.isSwfVersion5;
      var e = !l(b.pop());
      b.push(a ? e : e ? 1 : 0);
    }
    function la(a) {
      var b = a.stack;
      a = a.isSwfVersion5;
      var e = q(b.pop()), c = q(b.pop()), e = e == c;
      b.push(a ? e : e ? 1 : 0);
    }
    function na(a) {
      var b = a.stack;
      a = a.global;
      var e = q(b.pop());
      b.push(a.length_(e));
    }
    function oa(a) {
      var b = a.stack;
      a = a.global;
      var e = q(b.pop());
      b.push(a.length_(e));
    }
    function ta(a) {
      a = a.stack;
      var b = q(a.pop()), e = q(a.pop());
      a.push(e + b);
    }
    function pa(a) {
      var b = a.stack;
      a = a.global;
      var e = b.pop(), c = b.pop(), d = q(b.pop());
      b.push(a.substring(d, c, e));
    }
    function Ea(a) {
      var b = a.stack;
      a = a.global;
      var e = b.pop(), c = b.pop(), d = q(b.pop());
      b.push(a.mbsubstring(d, c, e));
    }
    function ua(a) {
      var b = a.stack;
      a = a.isSwfVersion5;
      var e = q(b.pop()), e = q(b.pop()) < e;
      b.push(a ? e : e ? 1 : 0);
    }
    function ya(a) {
      var b = a.stack;
      b.push(a.global.int(b.pop()));
    }
    function va(a) {
      var b = a.stack;
      a = a.global;
      var e = b.pop();
      b.push(a.ord(e));
    }
    function ha(a) {
      var b = a.stack;
      a = a.global;
      var e = b.pop();
      b.push(a.mbord(e));
    }
    function Fa(a) {
      var b = a.stack;
      a = a.global;
      var e = +b.pop();
      b.push(a.chr(e));
    }
    function Ga(a) {
      var b = a.stack;
      a = a.global;
      var e = +b.pop();
      b.push(a.mbchr(e));
    }
    function Ja(a, b) {
    }
    function Da(a, b) {
      return !!a.stack.pop();
    }
    function za(a) {
      var b = a.global;
      a = a.stack.pop();
      b.call(a);
    }
    function ra(a) {
      var b = a.stack, e = "" + b.pop(), c = b.length;
      b.push(void 0);
      a = F(a, e);
      b[c] = a ? a.link.asGetPublicProperty(a.name) : void 0;
    }
    function Aa(a) {
      var b = a.stack, e = b.pop(), b = "" + b.pop();
      if (a = S(a, b)) {
        a.link.asSetPublicProperty(a.name, e), p(a.name);
      }
    }
    function La(a, b) {
      var e = a.global, c = a.stack, d = b[0], f = c.pop(), c = c.pop(), h;
      d & 1 ? h = "GET" : d & 2 && (h = "POST");
      var g = d & 64;
      d & 128 ? e.loadVariables(c, f, h) : g ? e.loadMovie(c, f, h) : e.getURL(c, f, h);
    }
    function Ma(a, b) {
      var e = a.global, c = b[0], d = [a.stack.pop()];
      c & 2 && d.push(b[1]);
      (c & 1 ? e.gotoAndPlay : e.gotoAndStop).apply(e, d);
    }
    function Na(a) {
      var b = a.stack.pop();
      H(a, b);
    }
    function Oa(a) {
      var b = a.global;
      a = a.stack;
      var e = a.pop(), c = a.pop(), d = a.length;
      a.push(void 0);
      a[d] = b.getAVM1Property(c, e);
    }
    function Pa(a) {
      var b = a.global, e = a.stack;
      a = e.pop();
      var c = e.pop(), e = e.pop();
      b.setAVM1Property(e, c, a);
    }
    function Qa(a) {
      var b = a.global, e = a.stack;
      a = e.pop();
      var c = e.pop(), e = e.pop();
      b.duplicateMovieClip(e, c, a);
    }
    function Ra(a) {
      var b = a.global;
      a = a.stack.pop();
      b.removeMovieClip(a);
    }
    function Sa(a) {
      var b = a.global, e = a.stack;
      a = e.pop();
      var c = e.pop(), e = e.pop() ? {y2:e.pop(), x2:e.pop(), y1:e.pop(), x1:e.pop()} : null;
      a = [a, c];
      e && (a = a.concat(e.x1, e.y1, e.x2, e.y2));
      b.startDrag.apply(b, a);
    }
    function Ta(a) {
      a.global.stopDrag();
    }
    function Ua(a, b) {
      var e = a.global, c = a.stack.pop();
      return !e.ifFrameLoaded(c);
    }
    function Za(a) {
      var b = a.global;
      a = a.stack.pop();
      b.trace(void 0 === a ? "undefined" : q(a));
    }
    function $a(a) {
      a.stack.push(a.global.getTimer());
    }
    function ab(a) {
      var b = a.stack;
      b.push(a.global.random(b.pop()));
    }
    function bb(b) {
      var e = b.stack, c = e.pop(), d = K(e), f = e.length;
      e.push(void 0);
      var h = (b = F(b, c)) ? b.link.asGetPublicProperty(b.name) : void 0;
      h instanceof Function ? e[f] = h.apply(b.obj || null, d) : a("AVM1 warning: function '" + c + (h ? "' is not callable" : "' is undefined"));
    }
    function cb(b) {
      var c = b.stack, f = c.pop(), h = c.pop(), g = K(c), l, k = c.length;
      c.push(void 0);
      if (d.isNullOrUndefined(h)) {
        a("AVM1 warning: method '" + f + "' can't be called on undefined object");
      } else {
        b = b.context.frame;
        var p, r;
        if (d.isNullOrUndefined(f) || "" === f) {
          if (h instanceof xa) {
            var m = h.callFrame, n = M(m, "__constructor__");
            n && (p = n.target, r = n.obj, l = m.currentThis);
          } else {
            l = r = h;
          }
          Ka(r) ? (b.setCallee(l, p, r, g), c[k] = r.apply(l, g), b.resetCallee()) : a("AVM1 warning: obj '" + h + (h ? "' is not callable" : "' is undefined"));
        } else {
          if (h instanceof xa) {
            if (m = h.callFrame, n = M(m, f)) {
              p = n.target, r = n.obj, l = m.currentThis;
            }
          } else {
            r = e(h, f), l = h;
          }
          Ka(r) ? (b.setCallee(l, p, r, g), c[k] = r.apply(l, g), b.resetCallee()) : a("AVM1 warning: method '" + f + "' on object", h, d.isNullOrUndefined(r) ? "is undefined" : "is not callable");
        }
      }
    }
    function db(a, b) {
      a.constantPool = b[0];
    }
    function eb(a, b) {
      var e = a.stack, c = a.scope, d = b[1], f = z(a, b[0], d, b[2], 4, null, 0);
      d ? c.asSetPublicProperty(d, f) : e.push(f);
    }
    function fb(a) {
      var b = a.stack;
      a = a.scope;
      var e = b.pop(), b = b.pop();
      a.asSetPublicProperty(b, e);
    }
    function gb(a) {
      var b = a.scope;
      a = a.stack.pop();
      b.asSetPublicProperty(a, void 0);
    }
    function hb(a) {
      a = a.stack;
      var b = a.pop(), e = a.pop();
      a.push(e.asDeleteProperty(void 0, b, 0));
      p(b);
    }
    function ib(a) {
      var e = a.stack, c = e.pop();
      a: {
        for (a = a.scopeContainer;a;a = a.next) {
          var d = b(a.scope, c, !1);
          if (d) {
            d.link.asSetPublicProperty(d.name, void 0);
            a = d.link.asDeleteProperty(void 0, d.name, 0);
            break a;
          }
        }
        a = !1;
      }
      e.push(a);
      p(c);
    }
    function jb(a) {
      var b = a.stack, e = b.pop();
      b.push(null);
      a = (a = F(a, e)) ? a.link.asGetPublicProperty(a.name) : void 0;
      d.isNullOrUndefined(a) || D(a, function(a) {
        b.push(a);
      });
    }
    function kb(a) {
      a = a.stack;
      var b = a.pop(), e = a.pop();
      a.push(b == e);
    }
    function lb(b) {
      b = b.stack;
      var c = b.pop(), f = b.pop();
      b.push(void 0);
      if (d.isNullOrUndefined(f)) {
        a("AVM1 warning: cannot get member '" + c + "' on undefined object");
      } else {
        if (f instanceof xa) {
          if (c = M(f.callFrame, c)) {
            b[b.length - 1] = c.obj;
          }
        } else {
          b[b.length - 1] = e(f, c);
        }
      }
    }
    function mb(a) {
      a = a.stack;
      var b = K(a);
      a.push(b);
    }
    function nb(a) {
      a = a.stack;
      var b = +a.pop(), b = y(b, a.length >> 1), e = {};
      I(e, null, Xa);
      for (var c = 0;c < b;c++) {
        var d = a.pop(), f = a.pop();
        e.asSetPublicProperty(f, d);
      }
      a.push(e);
    }
    function ob(e) {
      e = e.stack;
      var c = e.pop(), f = e.pop(), h = K(e), g = e.length;
      e.push(void 0);
      if (d.isNullOrUndefined(f)) {
        a("AVM1 warning: method '" + c + "' can't be constructed on undefined object");
      } else {
        var l;
        d.isNullOrUndefined(c) || "" === c ? l = f : (l = b(f, c, !1), l = f.asGetPublicProperty(l ? l.name : null));
        h = B(l, h);
        void 0 === h && a("AVM1 warning: method '" + c + "' on object", f, "is not constructible");
        e[g] = h;
      }
    }
    function pb(b) {
      var e = b.stack, c = e.pop(), d = K(e), f = e.length;
      e.push(void 0);
      b = (b = F(b, c)) ? b.link.asGetPublicProperty(b.name) : void 0;
      var h = P(b, d);
      void 0 === h && (h = B(b, d), void 0 === h && a("AVM1 warning: object '" + c + (b ? "' is not constructible" : "' is undefined")));
      e[f] = h;
    }
    function qb(b) {
      var e = b.stack;
      b = e.pop();
      var c = e.pop(), e = e.pop();
      d.isNullOrUndefined(e) ? a("AVM1 warning: cannot set member '" + c + "' on undefined object") : e instanceof xa ? a("AVM1 warning: cannot set member '" + c + "' on super") : r(e, c, b);
    }
    function rb(a) {
      a = a.stack;
      var b = a.pop();
      a.push("movieclip" === n(b) ? b._target : void 0);
    }
    function sb(a, b) {
      var e = b[0], c = a.stack.pop(), d = a.constantPool, f = a.registers, c = a.scopeContainer.create(Object(c));
      wa(e, c, d, f);
    }
    function tb(a) {
      a = a.stack;
      a.push(c(a.pop()));
    }
    function ub(a) {
      a = a.stack;
      a.push(q(a.pop()));
    }
    function vb(a) {
      a = a.stack;
      var b = a.pop();
      a.push(n(b));
    }
    function wb(a) {
      a = a.stack;
      var b = u(a.pop()), e = u(a.pop());
      "string" === typeof b || "string" === typeof e ? a.push(q(e) + q(b)) : a.push(c(e) + c(b));
    }
    function xb(a) {
      a = a.stack;
      var b = a.pop(), e = a.pop();
      a.push(t(e, b));
    }
    function yb(a) {
      a = a.stack;
      var b = c(a.pop()), e = c(a.pop());
      a.push(e % b);
    }
    function zb(a) {
      a = a.stack;
      var b = g(a.pop()), e = g(a.pop());
      a.push(e & b);
    }
    function Ab(a) {
      a = a.stack;
      var b = g(a.pop()), e = g(a.pop());
      a.push(e << b);
    }
    function Bb(a) {
      a = a.stack;
      var b = g(a.pop()), e = g(a.pop());
      a.push(e | b);
    }
    function Cb(a) {
      a = a.stack;
      var b = g(a.pop()), e = g(a.pop());
      a.push(e >> b);
    }
    function Db(a) {
      a = a.stack;
      var b = g(a.pop()), e = g(a.pop());
      a.push(e >>> b);
    }
    function Eb(a) {
      a = a.stack;
      var b = g(a.pop()), e = g(a.pop());
      a.push(e ^ b);
    }
    function Fb(a) {
      a = a.stack;
      var b = c(a.pop());
      b--;
      a.push(b);
    }
    function Gb(a) {
      a = a.stack;
      var b = c(a.pop());
      b++;
      a.push(b);
    }
    function Hb(a) {
      a = a.stack;
      a.push(a[a.length - 1]);
    }
    function Ib(a) {
      a.isEndOfActions = !0;
    }
    function Jb(a) {
      a = a.stack;
      a.push(a.pop(), a.pop());
    }
    function Kb(a, b) {
      var e = a.stack, c = a.registers, d = b[0];
      0 > d || d >= c.length || (c[d] = e[e.length - 1]);
    }
    function Lb(a) {
      a = a.stack;
      var b = a.pop(), e = a.pop();
      a.push(m(e, b));
    }
    function Mb(b) {
      var e = b.stack;
      b = e.pop();
      e.push(null);
      d.isNullOrUndefined(b) ? a("AVM1 warning: cannot iterate over undefined object") : D(b, function(a) {
        e.push(a);
      });
    }
    function Nb(a) {
      a = a.stack;
      var b = a.pop(), e = a.pop();
      a.push(e === b);
    }
    function Ob(a) {
      a = a.stack;
      var b = a.pop(), e = a.pop();
      a.push(t(b, e));
    }
    function Pb(a) {
      var b = a.stack;
      a = a.isSwfVersion5;
      var e = q(b.pop()), e = q(b.pop()) > e;
      b.push(a ? e : e ? 1 : 0);
    }
    function Qb(a, b) {
      var e = a.stack, c = a.scope, d = b[1], f = z(a, b[0], d, b[2], b[3], b[4], b[5]);
      d ? c.asSetPublicProperty(d, f) : e.push(f);
    }
    function Rb(a) {
      var b = a.stack;
      a = b.pop();
      var b = b.pop().asGetPublicProperty("prototype"), e = a.asGetPublicProperty("prototype");
      b.asSetPublicProperty("__proto__", e);
      b.asSetPublicProperty("__constructor__", a);
    }
    function Sb(a) {
      a = a.stack;
      var b = a.pop(), e = a.pop();
      a.push(m(b, e) ? b : null);
    }
    function Tb(a) {
      a = a.stack;
      var b = a.pop(), e = +a.pop();
      y(e, a.length);
      for (var c = [], d = 0;d < e;d++) {
        c.push(a.pop());
      }
      b._as2Interfaces = c;
    }
    function Ub(a, b) {
      var e = b[5], c = b[3], d = b[1], f = b[2], h = b[4], g = b[6], l = a.context, k = a.scopeContainer, p = a.scope, r = a.constantPool, m = a.registers, n = l.isTryCatchListening, q;
      try {
        l.isTryCatchListening = !0, wa(f, k, r, m);
      } catch (u) {
        l.isTryCatchListening = n, c && u instanceof Ia ? ("string" === typeof d ? p.asSetPublicProperty(d, u.error) : m[d] = u.error, wa(h, k, r, m)) : q = u;
      }
      l.isTryCatchListening = n;
      e && wa(g, k, r, m);
      if (q) {
        throw q;
      }
    }
    function Vb(a) {
      a = a.stack.pop();
      throw new Ia(a);
    }
    function Wb(a) {
      var b = a.stack, e = a.global, c = K(b);
      a = b.length;
      b.push(void 0);
      e = e.fscommand.apply(null, c);
      b[a] = e;
    }
    function cc(a, b) {
    }
    function dc(a) {
      return function(b, e) {
        var c;
        try {
          a(b, e), b.recoveringFromError = !1;
        } catch (f) {
          c = b.context;
          f = C(f);
          if (f instanceof sa) {
            throw f;
          }
          if (f instanceof Ia) {
            throw f;
          }
          if (!b.recoveringFromError) {
            if (1E3 <= c.errorsIgnored++) {
              throw new sa("long running script -- AVM1 errors limit is reached");
            }
            console.log(typeof f);
            console.log(Object.getPrototypeOf(f));
            console.log(Object.getPrototypeOf(Object.getPrototypeOf(f)));
            console.error("AVM1 error: " + f);
            d.AVM2.Runtime.AVM2.instance.exceptions.push({source:"avm1", message:f.message, stack:f.stack});
            b.recoveringFromError = !0;
          }
        }
      };
    }
    function ec() {
      var a;
      a = k.avm1ErrorsEnabled.value ? function(a) {
        return a;
      } : dc;
      return {ActionGotoFrame:a(U), ActionGetURL:a(N), ActionNextFrame:a(R), ActionPreviousFrame:a(T), ActionPlay:a(X), ActionStop:a(da), ActionToggleQuality:a(x), ActionStopSounds:a(Y), ActionWaitForFrame:a(V), ActionSetTarget:a(ba), ActionGoToLabel:a(Z), ActionPush:a(O), ActionPop:a(aa), ActionAdd:a(ea), ActionSubtract:a(ia), ActionMultiply:a(ja), ActionDivide:a(ga), ActionEquals:a(ca), ActionLess:a(fa), ActionAnd:a(Q), ActionOr:a(ma), ActionNot:a(W), ActionStringEquals:a(la), ActionStringLength:a(na), 
      ActionMBStringLength:a(oa), ActionStringAdd:a(ta), ActionStringExtract:a(pa), ActionMBStringExtract:a(Ea), ActionStringLess:a(ua), ActionToInteger:a(ya), ActionCharToAscii:a(va), ActionMBCharToAscii:a(ha), ActionAsciiToChar:a(Fa), ActionMBAsciiToChar:a(Ga), ActionJump:a(Ja), ActionIf:a(Da), ActionCall:a(za), ActionGetVariable:a(ra), ActionSetVariable:a(Aa), ActionGetURL2:a(La), ActionGotoFrame2:a(Ma), ActionSetTarget2:a(Na), ActionGetProperty:a(Oa), ActionSetProperty:a(Pa), ActionCloneSprite:a(Qa), 
      ActionRemoveSprite:a(Ra), ActionStartDrag:a(Sa), ActionEndDrag:a(Ta), ActionWaitForFrame2:a(Ua), ActionTrace:a(Za), ActionGetTime:a($a), ActionRandomNumber:a(ab), ActionCallFunction:a(bb), ActionCallMethod:a(cb), ActionConstantPool:a(db), ActionDefineFunction:a(eb), ActionDefineLocal:a(fb), ActionDefineLocal2:a(gb), ActionDelete:a(hb), ActionDelete2:a(ib), ActionEnumerate:a(jb), ActionEquals2:a(kb), ActionGetMember:a(lb), ActionInitArray:a(mb), ActionInitObject:a(nb), ActionNewMethod:a(ob), 
      ActionNewObject:a(pb), ActionSetMember:a(qb), ActionTargetPath:a(rb), ActionWith:a(sb), ActionToNumber:a(tb), ActionToString:a(ub), ActionTypeOf:a(vb), ActionAdd2:a(wb), ActionLess2:a(xb), ActionModulo:a(yb), ActionBitAnd:a(zb), ActionBitLShift:a(Ab), ActionBitOr:a(Bb), ActionBitRShift:a(Cb), ActionBitURShift:a(Db), ActionBitXor:a(Eb), ActionDecrement:a(Fb), ActionIncrement:a(Gb), ActionPushDuplicate:a(Hb), ActionReturn:a(Ib), ActionStackSwap:a(Jb), ActionStoreRegister:a(Kb), ActionInstanceOf:a(Lb), 
      ActionEnumerate2:a(Mb), ActionStrictEquals:a(Nb), ActionGreater:a(Ob), ActionStringGreater:a(Pb), ActionDefineFunction2:a(Qb), ActionExtends:a(Rb), ActionCastOp:a(Sb), ActionImplementsOp:a(Tb), ActionTry:a(Ub), ActionThrow:a(Vb), ActionFSCommand2:a(Wb), ActionStrictMode:a(cc)};
    }
    function wa(a, b, e, c) {
      var f = k.AVM1Context.instance;
      if (!a.ir) {
        var h = new k.ActionsDataParser(a, f.loaderInfo.swfVersion), g = new k.ActionsDataAnalyzer;
        g.registersLimit = c.length;
        g.parentResults = a.parent && a.parent.ir;
        a.ir = g.analyze(h);
        if (k.avm1CompilerEnabled.value) {
          try {
            var l = new fc;
            a.ir.compiled = l.generate(a.ir);
          } catch (p) {
            console.error("Unable to compile AVM1 function: " + p);
          }
        }
      }
      a = a.ir;
      var g = a.compiled, h = [], r = 5 <= f.loaderInfo.swfVersion, m = Wa.get(), l = b.scope;
      b = {context:f, global:f.globals, scopeContainer:b, scope:l, actionTracer:m, constantPool:e, registers:c, stack:h, frame:null, isSwfVersion5:r, recoveringFromError:!1, isEndOfActions:!1};
      l._as3Object && l._as3Object._deferScriptExecution && (f.deferScriptExecution = !0);
      if (g) {
        return g(b);
      }
      e = 0;
      f = f.abortExecutionAt;
      if (k.avm1DebuggerEnabled.value && (k.Debugger.pause || k.Debugger.breakpoints[a.dataId])) {
        debugger;
      }
      for (c = a.actions[0];c && !b.isEndOfActions;) {
        if (0 === e++ % 1E3 && Date.now() >= f) {
          throw new sa("long running script -- AVM1 instruction hang timeout");
        }
        g = b;
        l = r = void 0;
        try {
          var r = g, n = c.action, q = n.actionCode, u = n.args;
          r.actionTracer.print(n, r.stack);
          m = !1;
          switch(q | 0) {
            case 129:
              U(r, u);
              break;
            case 131:
              N(r, u);
              break;
            case 4:
              R(r);
              break;
            case 5:
              T(r);
              break;
            case 6:
              X(r);
              break;
            case 7:
              da(r);
              break;
            case 8:
              x(r);
              break;
            case 9:
              Y(r);
              break;
            case 138:
              m = V(r, u);
              break;
            case 139:
              ba(r, u);
              break;
            case 140:
              Z(r, u);
              break;
            case 150:
              O(r, u);
              break;
            case 23:
              aa(r);
              break;
            case 10:
              ea(r);
              break;
            case 11:
              ia(r);
              break;
            case 12:
              ja(r);
              break;
            case 13:
              ga(r);
              break;
            case 14:
              ca(r);
              break;
            case 15:
              fa(r);
              break;
            case 16:
              Q(r);
              break;
            case 17:
              ma(r);
              break;
            case 18:
              W(r);
              break;
            case 19:
              la(r);
              break;
            case 20:
              na(r);
              break;
            case 49:
              oa(r);
              break;
            case 33:
              ta(r);
              break;
            case 21:
              pa(r);
              break;
            case 53:
              Ea(r);
              break;
            case 41:
              ua(r);
              break;
            case 24:
              ya(r);
              break;
            case 50:
              va(r);
              break;
            case 54:
              ha(r);
              break;
            case 51:
              Fa(r);
              break;
            case 55:
              Ga(r);
              break;
            case 153:
              break;
            case 157:
              m = Da(r, u);
              break;
            case 158:
              za(r);
              break;
            case 28:
              ra(r);
              break;
            case 29:
              Aa(r);
              break;
            case 154:
              La(r, u);
              break;
            case 159:
              Ma(r, u);
              break;
            case 32:
              Na(r);
              break;
            case 34:
              Oa(r);
              break;
            case 35:
              Pa(r);
              break;
            case 36:
              Qa(r);
              break;
            case 37:
              Ra(r);
              break;
            case 39:
              Sa(r);
              break;
            case 40:
              Ta(r);
              break;
            case 141:
              m = Ua(r, u);
              break;
            case 38:
              Za(r);
              break;
            case 52:
              $a(r);
              break;
            case 48:
              ab(r);
              break;
            case 61:
              bb(r);
              break;
            case 82:
              cb(r);
              break;
            case 136:
              db(r, u);
              break;
            case 155:
              eb(r, u);
              break;
            case 60:
              fb(r);
              break;
            case 65:
              gb(r);
              break;
            case 58:
              hb(r);
              break;
            case 59:
              ib(r);
              break;
            case 70:
              jb(r);
              break;
            case 73:
              kb(r);
              break;
            case 78:
              lb(r);
              break;
            case 66:
              mb(r);
              break;
            case 67:
              nb(r);
              break;
            case 83:
              ob(r);
              break;
            case 64:
              pb(r);
              break;
            case 79:
              qb(r);
              break;
            case 69:
              rb(r);
              break;
            case 148:
              sb(r, u);
              break;
            case 74:
              tb(r);
              break;
            case 75:
              ub(r);
              break;
            case 68:
              vb(r);
              break;
            case 71:
              wb(r);
              break;
            case 72:
              xb(r);
              break;
            case 63:
              yb(r);
              break;
            case 96:
              zb(r);
              break;
            case 99:
              Ab(r);
              break;
            case 97:
              Bb(r);
              break;
            case 100:
              Cb(r);
              break;
            case 101:
              Db(r);
              break;
            case 98:
              Eb(r);
              break;
            case 81:
              Fb(r);
              break;
            case 80:
              Gb(r);
              break;
            case 76:
              Hb(r);
              break;
            case 62:
              Ib(r);
              break;
            case 77:
              Jb(r);
              break;
            case 135:
              Kb(r, u);
              break;
            case 84:
              Lb(r);
              break;
            case 85:
              Mb(r);
              break;
            case 102:
              Nb(r);
              break;
            case 103:
              Ob(r);
              break;
            case 104:
              Pb(r);
              break;
            case 142:
              Qb(r, u);
              break;
            case 105:
              Rb(r);
              break;
            case 43:
              Sb(r);
              break;
            case 44:
              Tb(r);
              break;
            case 143:
              Ub(r, u);
              break;
            case 42:
              Vb(r);
              break;
            case 45:
              Wb(r);
              break;
            case 137:
              break;
            case 0:
              r.isEndOfActions = !0;
              break;
            default:
              throw Error("Unknown action code: " + q);;
          }
          l = m;
          g.recoveringFromError = !1;
        } catch (t) {
          r = g.context;
          t = C(t);
          if (k.avm1ErrorsEnabled.value && !r.isTryCatchListening || t instanceof sa) {
            throw t;
          }
          if (t instanceof Ia) {
            throw t;
          }
          if (!g.recoveringFromError) {
            if (1E3 <= r.errorsIgnored++) {
              throw new sa("long running script -- AVM1 errors limit is reached");
            }
            console.error("AVM1 error: " + t);
            d.AVM2.Runtime.AVM2.instance.exceptions.push({source:"avm1", message:t.message, stack:t.stack});
            g.recoveringFromError = !0;
          }
        }
        c = l ? c.conditionalJumpTo : c.next;
        c = a.actions[c];
      }
      return h.pop();
    }
    var Yb = d.AVM2.Runtime.forEachPublicProperty, ac = d.AVM2.Runtime.construct, Zb = d.isNumeric, Ka = d.isFunction, gc = d.Debug.notImplemented, Xb = d.AVM2.Runtime.asCoerceString, Ya = d.AVM2.Runtime.sliceArguments, Ba = d.Options.Option, Ca = d.Settings.shumwayOptions.register(new d.Options.OptionSet("AVM1"));
    k.avm1TraceEnabled = Ca.register(new Ba("t1", "traceAvm1", "boolean", !1, "trace AVM1 execution"));
    k.avm1ErrorsEnabled = Ca.register(new Ba("e1", "errorsAvm1", "boolean", !1, "fail on AVM1 warnings and errors"));
    k.avm1TimeoutDisabled = Ca.register(new Ba("ha1", "nohangAvm1", "boolean", !1, "disable fail on AVM1 hang"));
    k.avm1CompilerEnabled = Ca.register(new Ba("ca1", "compileAvm1", "boolean", !0, "compiles AVM1 code"));
    k.avm1DebuggerEnabled = Ca.register(new Ba("da1", "debugAvm1", "boolean", !1, "allows AVM1 code debugging"));
    k.Debugger = {pause:!1, breakpoints:{}};
    var $b = "addCallback addListener addProperty addRequestHeader AsBroadcaster attachAudio attachMovie attachSound attachVideo beginFill beginGradientFill blendMode blockIndent broadcastMessage cacheAsBitmap CASEINSENSITIVE charAt charCodeAt checkPolicyFile clearInterval clearRequestHeaders concat createEmptyMovieClip curveTo DESCENDING displayState duplicateMovieClip E endFill exactSettings fromCharCode fullScreenSourceRect getBounds getBytesLoaded getBytesTotal getDate getDay getDepth getDepth getDuration getFullYear getHours getLocal getMilliseconds getMinutes getMonth getNewTextFormat getPan getPosition getRGB getSeconds getSize getTextFormat getTime getTimezoneOffset getTransform getUTCDate getUTCDay getUTCFullYear getUTCHours getUTCMilliseconds getUTCMinutes getUTCMonth getUTCSeconds getUTCYear getVolume getYear globalToLocal gotoAndPlay gotoAndStop hasAccessibility hasAudio hasAudioEncoder hasEmbeddedVideo hasIME hasMP3 hasOwnProperty hasPrinting hasScreenBroadcast hasScreenPlayback hasStreamingAudio hasStreamingVideo hasVideoEncoder hitTest indexOf isActive isDebugger isFinite isNaN isPropertyEnumerable isPrototypeOf lastIndexOf leftMargin letterSpacing lineStyle lineTo LN10 LN10E LN2 LN2E loadSound localFileReadDisable localToGlobal MAX_VALUE MIN_VALUE moveTo NaN NEGATIVE_INFINITY nextFrame NUMERIC onChanged onData onDragOut onDragOver onEnterFrame onFullScreen onKeyDown onKeyUp onKillFocus onLoad onMouseDown onMouseMove onMouseUp onPress onRelease onReleaseOutside onResize onResize onRollOut onRollOver onScroller onSetFocus onStatus onSync onUnload parseFloat parseInt PI pixelAspectRatio playerType POSITIVE_INFINITY prevFrame registerClass removeListener removeMovieClip removeTextField replaceSel RETURNINDEXEDARRAY rightMargin scale9Grid scaleMode screenColor screenDPI screenResolutionX screenResolutionY serverString setClipboard setDate setDuration setFps setFullYear setHours setInterval setMask setMilliseconds setMinutes setMonth setNewTextFormat setPan setPosition setRGB setSeconds setTextFormat setTime setTimeout setTransform setTransform setUTCDate setUTCFullYear setUTCHours setUTCMilliseconds setUTCMinutes setUTCMonth setUTCSeconds setVolume setYear showMenu showRedrawRegions sortOn SQRT1_2 SQRT2 startDrag stopDrag swapDepths tabEnabled tabIndex tabIndex tabStops toLowerCase toString toUpperCase trackAsMenu UNIQUESORT updateAfterEvent updateProperties useCodepage useHandCursor UTC valueOf".split(" "), 
    Ha = null, hc = function() {
      function a(b, e) {
        this.scope = b;
        this.next = e;
      }
      a.prototype.create = function(b) {
        return new a(b, this);
      };
      return a;
    }(), bc = function(a) {
      function b() {
        a.call(this);
        this.asSetPublicProperty("toString", this.toString);
      }
      __extends(b, a);
      b.prototype.toString = function() {
        return this;
      };
      return b;
    }(d.AVM2.AS.ASObject), ic = function() {
      function a(b, e, c, d) {
        this.previousFrame = b;
        this.currentThis = e;
        this.fn = c;
        this.args = d;
        this.inSequence = b ? b.calleeThis === e && b.calleeFn === c : !1;
        this.resetCallee();
      }
      a.prototype.setCallee = function(a, b, e, c) {
        this.calleeThis = a;
        this.calleeSuper = b;
        this.calleeFn = e;
        this.calleeArgs = c;
      };
      a.prototype.resetCallee = function() {
        this.calleeFn = this.calleeSuper = this.calleeThis = null;
      };
      return a;
    }(), jc = function(c) {
      function d(a) {
        c.call(this);
        this.loaderInfo = a;
        this.globals = new (k.Lib.AVM1Globals.createAVM1Class())(this);
        this.initialScope = new hc(this.globals, null);
        this.assets = {};
        this.assetsSymbols = [];
        this.assetsClasses = [];
        this.executionProhibited = this.isActive = !1;
        this.stackDepth = this.abortExecutionAt = 0;
        this.frame = null;
        this.isTryCatchListening = !1;
        this.errorsIgnored = 0;
        this.deferScriptExecution = !0;
        this.pendingScripts = [];
        this.eventObservers = Object.create(null);
        var f = this;
        this.utils = {hasProperty:function(a, e) {
          var c;
          f.enterContext(function() {
            c = !!b(a, e, !1);
          }, a);
          return c;
        }, getProperty:function(a, b) {
          var c;
          f.enterContext(function() {
            c = e(a, b);
          }, a);
          return c;
        }, setProperty:function(a, b, e) {
          f.enterContext(function() {
            r(a, b, e);
          }, a);
        }};
      }
      __extends(d, c);
      d.prototype.addAsset = function(a, b, e) {
        this.assets[a.toLowerCase()] = b;
        this.assetsSymbols[b] = e;
      };
      d.prototype.registerClass = function(b, e) {
        b = Xb(b);
        if (null === b) {
          return a("Cannot register class for symbol: className is missing"), null;
        }
        var c = this.assets[b.toLowerCase()];
        void 0 === c ? a("Cannot register " + b + " class for symbol") : this.assetsClasses[c] = e;
      };
      d.prototype.getAsset = function(a) {
        a = Xb(a);
        if (null !== a && (a = this.assets[a.toLowerCase()], void 0 !== a)) {
          var b = this.assetsSymbols[a];
          if (!b) {
            b = this.loaderInfo.getSymbolById(a);
            if (!b) {
              return;
            }
            this.assetsSymbols[a] = b;
          }
          return {symbolId:a, symbolProps:b, theClass:this.assetsClasses[a]};
        }
      };
      d.prototype.resolveTarget = function(a) {
        var b = this.currentTarget || this.defaultTarget;
        a ? "string" === typeof a && (a = J(a, b, this.resolveLevel(0))) : a = b;
        if ("object" !== typeof a || null === a || !("_as3Object" in a)) {
          throw Error("Invalid AVM1 target object: " + Object.prototype.toString.call(a));
        }
        return a;
      };
      d.prototype.resolveLevel = function(a) {
        if (0 === a) {
          return this.root;
        }
      };
      d.prototype.addToPendingScripts = function(a) {
        this.deferScriptExecution ? this.pendingScripts.push(a) : a();
      };
      d.prototype.flushPendingScripts = function() {
        for (var a = this.pendingScripts;a.length;) {
          a.shift()();
        }
        this.deferScriptExecution = !1;
      };
      d.prototype.pushCallFrame = function(a, b, e) {
        return this.frame = a = new ic(this.frame, a, b, e);
      };
      d.prototype.popCallFrame = function() {
        this.frame = this.frame.previousFrame;
      };
      d.prototype.enterContext = function(a, b) {
        if (this === k.AVM1Context.instance && this.isActive && this.defaultTarget === b && null === this.currentTarget) {
          a(), this.currentTarget = null;
        } else {
          var e = k.AVM1Context.instance, c = this.isActive, d = this.defaultTarget, f = this.currentTarget, h;
          try {
            k.AVM1Context.instance = this, c || (this.abortExecutionAt = k.avm1TimeoutDisabled.value ? Number.MAX_VALUE : Date.now() + 1E3, this.errorsIgnored = 0, this.isActive = !0), this.defaultTarget = b, this.currentTarget = null, a();
          } catch (g) {
            h = g;
          }
          this.defaultTarget = d;
          this.currentTarget = f;
          this.isActive = c;
          k.AVM1Context.instance = e;
          if (h) {
            throw h;
          }
        }
      };
      d.prototype.executeActions = function(a, b) {
        E(a, this, b);
      };
      d.prototype.registerEventPropertyObserver = function(a, b) {
        var e = this.eventObservers[a];
        e || (e = [], this.eventObservers[a] = e);
        e.push(b);
      };
      d.prototype.unregisterEventPropertyObserver = function(a, b) {
        var e = this.eventObservers[a];
        if (e) {
          var c = e.indexOf(b);
          0 > c || e.splice(c, 1);
        }
      };
      d.prototype.broadcastEventPropertyChange = function(a) {
        var b = this.eventObservers[a];
        b && b.forEach(function(b) {
          return b.onEventPropertyModified(a);
        });
      };
      return d;
    }(k.AVM1Context);
    k.AVM1Context.create = function(a) {
      return new jc(a);
    };
    var Ia = function() {
      return function(a) {
        this.error = a;
      };
    }(), sa = function(a) {
      function b(e, c) {
        a.call(this, e);
        this.error = c;
      }
      __extends(b, a);
      return b;
    }(Error), qa = {link:void 0, name:null};
    k.executeActions = E;
    var Xa = function(a) {
      function b() {
        a.apply(this, arguments);
      }
      __extends(b, a);
      return b;
    }(d.AVM2.AS.ASObject), xa = function() {
      return function(a) {
        this.callFrame = a;
      };
    }(), ka = {obj:null, link:null, name:null}, fc = function() {
      function a() {
        a.cachedCalls || (a.cachedCalls = ec());
      }
      a.prototype.convertArgs = function(a, b, e, c) {
        for (var d = [], f = 0;f < a.length;f++) {
          var h = a[f];
          if ("object" !== typeof h || null === h || Array.isArray(h)) {
            void 0 === h ? d.push("undefined") : d.push(JSON.stringify(h));
          } else {
            if (h instanceof k.ParsedPushConstantAction) {
              if (c.singleConstantPool) {
                var g = c.singleConstantPool[h.constantIndex];
                d.push(void 0 === g ? "undefined" : JSON.stringify(g));
              } else {
                var g = "", l = e.constantPool;
                l && (g = l[h.constantIndex], g = void 0 === g ? "undefined" : JSON.stringify(g), g = 0 <= g.indexOf("*/") ? "" : " /* " + g + " */");
                d.push("constantPool[" + h.constantIndex + "]" + g);
              }
            } else {
              h instanceof k.ParsedPushRegisterAction ? (h = h.registerNumber, 0 > h || h >= c.registersLimit ? d.push("undefined") : d.push("registers[" + h + "]")) : h instanceof k.AVM1ActionsData ? (g = "code_" + b + "_" + f, e[g] = h, d.push("res." + g)) : gc("Unknown AVM1 action argument type");
            }
          }
        }
        return d.join(",");
      };
      a.prototype.convertAction = function(a, b, e, c, d) {
        switch(a.action.actionCode) {
          case 153:
          ;
          case 62:
            return "";
          case 136:
            return e.constantPool = a.action.args[0], "  constantPool = [" + this.convertArgs(a.action.args[0], b, e, d) + "];\n  ectx.constantPool = constantPool;\n";
          case 150:
            return "  stack.push(" + this.convertArgs(a.action.args, b, e, d) + ");\n";
          case 135:
            return a = a.action.args[0], 0 > a || a >= d.registersLimit ? "" : "  registers[" + a + "] = stack[stack.length - 1];\n";
          case 138:
          ;
          case 141:
            return "  if (calls." + a.action.actionName + "(ectx,[" + this.convertArgs(a.action.args, b, e, d) + "])) { position = " + a.conditionalJumpTo + "; checkTimeAfter -= " + (c + 1) + "; break; }\n";
          case 157:
            return "  if (!!stack.pop()) { position = " + a.conditionalJumpTo + "; checkTimeAfter -= " + (c + 1) + "; break; }\n";
          default:
            return "  calls." + a.action.actionName + "(ectx" + (a.action.args ? ",[" + this.convertArgs(a.action.args, b, e, d) + "]" : "") + ");\n";
        }
      };
      a.prototype.checkAvm1Timeout = function(a) {
        if (Date.now() >= a.context.abortExecutionAt) {
          throw new sa("long running script -- AVM1 instruction hang timeout");
        }
      };
      a.prototype.generate = function(b) {
        var e = this, c = b.blocks, d = {}, f = 0, h = b.dataId, g = "return function avm1gen_" + h + "(ectx) {\nvar position = 0;\nvar checkTimeAfter = 0;\nvar constantPool = ectx.constantPool, registers = ectx.registers, stack = ectx.stack;\n";
        k.avm1DebuggerEnabled.value && (g += "/* Running " + h + " */ if (Shumway.AVM1.Debugger.pause || Shumway.AVM1.Debugger.breakpoints." + h + ") { debugger; }\n");
        g += "while (!ectx.isEndOfActions) {\nif (checkTimeAfter <= 0) { checkTimeAfter = 1000; checkTimeout(ectx); }\nswitch(position) {\n";
        c.forEach(function(a) {
          g += " case " + a.label + ":\n";
          a.items.forEach(function(a, c) {
            g += e.convertAction(a, f++, d, c, b);
          });
          g += "  position = " + a.jump + ";\n  checkTimeAfter -= " + a.items.length + ";\n  break;\n";
        });
        g += " default: ectx.isEndOfActions = true; break;\n}\n}\nreturn stack.pop();};";
        g += "//# sourceURL=avm1gen-" + h;
        return (new Function("calls", "res", "checkTimeout", g))(a.cachedCalls, d, this.checkAvm1Timeout);
      };
      return a;
    }(), Wa = function() {
      function a() {
      }
      a.get = function() {
        return k.avm1TraceEnabled.value ? a.tracer : a.nullTracer;
      };
      a.tracer = function() {
        var a = 0;
        return {print:function(b, e) {
          for (var c = b.position, d = b.actionCode, f = b.actionName, h = [], g = 0;g < e.length;g++) {
            var l = e[g];
            l && "object" === typeof l ? (l = l.asGetPublicProperty("__constructor__"), h.push("[" + (l ? l.name : "Object") + "]")) : h.push(l);
          }
          console.log("AVM1 trace: " + Array(a + 1).join("..") + c + ": " + f + "(" + d.toString(16) + "), stack=" + h);
        }, indent:function() {
          a++;
        }, unindent:function() {
          a--;
        }, message:function(a) {
          console.log("AVM1 trace: ------- " + a);
        }};
      }();
      a.nullTracer = {print:function(a, b) {
      }, indent:function() {
      }, unindent:function() {
      }, message:function(a) {
      }};
      return a;
    }();
  })(d.AVM1 || (d.AVM1 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      function n(a, c, b) {
        return a.utils.hasProperty(c, b) ? !0 : (c = a.utils.getProperty(c, "_listeners")) ? c.some(function(e) {
          return a.utils.hasProperty(e, b);
        }) : !1;
      }
      function w(a, c, b, e) {
        void 0 === e && (e = null);
        var g = a.utils.getProperty(c, b);
        d.isFunction(g) && g.apply(c, e);
        g = a.utils.getProperty(this, "_listeners");
        Array.isArray(g) && g.forEach(function(g) {
          g = a.utils.getProperty(g, b);
          d.isFunction(g) && g.apply(c, e);
        });
      }
      function v(a, c, b) {
        for (var e = a.prototype;e && !e.initAVM1SymbolInstance;) {
          e = e.asGetPublicProperty("__proto__");
        }
        e = Object.create(e);
        e.asSetPublicProperty("__proto__", a.asGetPublicProperty("prototype"));
        e.asDefinePublicProperty("__constructor__", {value:a, writable:!0, enumerable:!1, configurable:!1});
        c._as2Object = e;
        e.initAVM1SymbolInstance(b, c);
        a.call(e);
        return e;
      }
      function u(a, c) {
        return a ? a._as2Object ? a._as2Object : g.display.MovieClip.isType(a) ? a._avm1SymbolClass ? v(a._avm1SymbolClass, a, c) : v(c.globals.MovieClip, a, c) : g.display.SimpleButton.isType(a) ? v(c.globals.Button, a, c) : g.text.TextField.isType(a) ? v(c.globals.TextField, a, c) : g.display.BitmapData.isType(a) ? new a : null : null;
      }
      function l(a, c) {
        var b;
        "function" === typeof a ? (b = function() {
          return a.apply(this, arguments);
        }, Object.getOwnPropertyNames(a).forEach(function(e) {
          b.hasOwnProperty(e) || Object.defineProperty(b, e, Object.getOwnPropertyDescriptor(a, e));
        })) : (d.Debug.assert("object" === typeof a && null !== a), b = Object.create(a));
        if (!c) {
          return b;
        }
        c.forEach(function(a) {
          var c = a, d = a.indexOf("=>");
          0 <= d && (c = a.substring(0, d), a = a.substring(d + 2));
          b.asDefinePublicProperty(c, {get:function() {
            return this[a];
          }, set:function(b) {
            this[a] = b;
          }, enumerable:!1, configurable:!0});
        });
        return b;
      }
      function c(a, c) {
        return c.context.executeActions(a, c);
      }
      var g = d.AVM2.AS.flash, q = function() {
        function a(c, b, e) {
          void 0 === e && (e = null);
          this.propertyName = c;
          this.eventName = b;
          this.argsConverter = e;
        }
        a.prototype.onBind = function(a) {
        };
        a.prototype.onUnbind = function(a) {
        };
        return a;
      }();
      a.AVM1EventHandler = q;
      q = function() {
        function a() {
        }
        Object.defineProperty(a.prototype, "context", {get:function() {
          return this._context;
        }, enumerable:!0, configurable:!0});
        a.prototype.initAVM1ObjectInstance = function(a) {
          this._context = a;
        };
        return a;
      }();
      a.AVM1NativeObject = q;
      q = function(a) {
        function c() {
          a.apply(this, arguments);
        }
        __extends(c, a);
        Object.defineProperty(c.prototype, "isAVM1Instance", {get:function() {
          return !!this._as3Object;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(c.prototype, "as3Object", {get:function() {
          return this._as3Object;
        }, enumerable:!0, configurable:!0});
        c.prototype.initAVM1SymbolInstance = function(a, e) {
          this.initAVM1ObjectInstance(a);
          this._as3Object = e;
        };
        c.prototype.bindEvents = function(a) {
          var e;
          void 0 === e && (e = !0);
          this._events = a;
          var c = Object.create(null);
          this._eventsMap = c;
          this._eventsListeners = Object.create(null);
          var d = this, f = this.context;
          a.forEach(function(a) {
            c[a.propertyName] = a;
            f.registerEventPropertyObserver(a.propertyName, d);
            d._updateEvent(a);
          });
          e && d.as3Object.addEventListener("removedFromStage", function B() {
            d.as3Object.removeEventListener("removedFromStage", B);
            d.unbindEvents();
          });
        };
        c.prototype.unbindEvents = function() {
          var a = this, e = this.context;
          this._events.forEach(function(c) {
            e.unregisterEventPropertyObserver(c.propertyName, a);
            a._removeEventListener(c);
          });
          this._eventsListeners = this._eventsMap = this._events = null;
        };
        c.prototype.updateAllEvents = function() {
          this._events.forEach(function(a) {
            this._updateEvent(a);
          }, this);
        };
        c.prototype._updateEvent = function(a) {
          n(this.context, this, a.propertyName) ? this._addEventListener(a) : this._removeEventListener(a);
        };
        c.prototype._addEventListener = function(a) {
          var e = this._eventsListeners[a.propertyName];
          e || (e = function() {
            var e = a.argsConverter ? a.argsConverter.apply(null, arguments) : null;
            w(this.context, this, a.propertyName, e);
          }.bind(this), this.as3Object.addEventListener(a.eventName, e), a.onBind(this), this._eventsListeners[a.propertyName] = e);
        };
        c.prototype._removeEventListener = function(a) {
          var e = this._eventsListeners[a.propertyName];
          e && (this.as3Object.removeEventListener(a.eventName, e), this._eventsListeners[a.propertyName] = null);
        };
        c.prototype.onEventPropertyModified = function(a) {
          this._updateEvent(this._eventsMap[a]);
        };
        return c;
      }(q);
      a.AVM1SymbolBase = q;
      a.avm1HasEventProperty = n;
      a.avm1BroadcastEvent = w;
      q = function() {
        function a() {
        }
        a.addProperty = function(a, b, e, c, d) {
          void 0 === d && (d = !0);
          a.asDefinePublicProperty(b, {get:e, set:c || void 0, enumerable:d, configurable:!0});
        };
        a.resolveTarget = function(a) {
          void 0 === a && (a = void 0);
          return k.AVM1Context.instance.resolveTarget(a);
        };
        a.resolveMovieClip = function(a) {
          void 0 === a && (a = void 0);
          return a ? k.AVM1Context.instance.resolveTarget(a) : void 0;
        };
        a.resolveLevel = function(a) {
          return k.AVM1Context.instance.resolveLevel(+a);
        };
        Object.defineProperty(a, "currentStage", {get:function() {
          return k.AVM1Context.instance.root.as3Object.stage;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a, "swfVersion", {get:function() {
          return k.AVM1Context.instance.loaderInfo.swfVersion;
        }, enumerable:!0, configurable:!0});
        a.getTarget = function(a) {
          a = a.as3Object;
          if (a === a.root) {
            return "/";
          }
          var b = "";
          do {
            b = "/" + a.name + b, a = a.parent;
          } while (a !== a.root);
          return b;
        };
        return a;
      }();
      a.AVM1Utils = q;
      a.getAVM1Object = u;
      a.wrapAVM1Object = l;
      a.wrapAVM1Class = function(a, c, b) {
        c = l(a, c);
        a = l(a.prototype, b);
        c.asSetPublicProperty("prototype", a);
        return c;
      };
      var t = !1;
      a.installObjectMethods = function() {
        if (!t) {
          t = !0;
          var a = d.AVM2.AS.ASObject, c = a.asGetPublicProperty("prototype");
          a.asSetPublicProperty("registerClass", function(a, e) {
            k.AVM1Context.instance.registerClass(a, e);
          });
          c.asDefinePublicProperty("addProperty", {value:function(a, e, c) {
            if ("string" !== typeof a || "" === a || "function" !== typeof e || "function" !== typeof c && null !== c) {
              return !1;
            }
            this.asDefinePublicProperty(a, {get:e, set:c || void 0, configurable:!0, enumerable:!0});
            return !0;
          }, writable:!1, enumerable:!1, configurable:!1});
          Object.defineProperty(c, "__proto__avm1", {value:null, writable:!0, enumerable:!1});
          c.asDefinePublicProperty("__proto__", {get:function() {
            return this.__proto__avm1;
          }, set:function(a) {
            if (a !== this.__proto__avm1) {
              if (a) {
                for (var e = a;e;) {
                  if (e === this) {
                    return;
                  }
                  e = e.__proto__avm1;
                }
                this.__proto__avm1 = a;
              } else {
                this.__proto__avm1 = null;
              }
            }
          }, enumerable:!1, configurable:!1});
        }
      };
      a.initializeAVM1Object = function(a, d, b) {
        var e = u(a, d);
        b.variableName && e.asSetPublicProperty("variable", b.variableName);
        var g = b.events;
        if (g) {
          for (var l = 0;l < g.length;l++) {
            var k = g[l], n;
            k.actionsData ? (n = d.actionsDataFactory.createActionsData(k.actionsData, "s" + b.symbolId + "e" + l), k.actionsData = null, k.compiled = n) : n = k.compiled;
            n = c.bind(null, n, e);
            var k = k.flags, q;
            for (q in m) {
              if (q |= 0, k & (q | 0)) {
                var t = m[q];
                switch(q) {
                  case 2048:
                  ;
                  case 4096:
                  ;
                  case 8192:
                  ;
                  case 16384:
                    a.buttonMode = !0;
                }
                a.addEventListener(t, n);
              }
            }
          }
        }
      };
      var m = Object.create(null);
      m[1] = "load";
      m[2] = "frameConstructed";
      m[4] = "unload";
      m[8] = "mouseMove";
      m[16] = "mouseDown";
      m[32] = "mouseUp";
      m[64] = "keyDown";
      m[128] = "keyUp";
      m[256] = {toString:function() {
      }};
      m[512] = "initialize";
      m[1024] = "mouseDown";
      m[2048] = "click";
      m[4096] = "releaseOutside";
      m[8192] = "mouseOver";
      m[16384] = "mouseOut";
      m[32768] = {toString:function() {
      }};
      m[65536] = {toString:function() {
      }};
      m[131072] = {toString:function() {
      }};
      m[262144] = "construct";
    })(k.Lib || (k.Lib = {}));
  })(d.AVM1 || (d.AVM1 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var n = d.Debug.notImplemented, w = d.Debug.somewhatImplemented, v = d.AVM2.Runtime.forEachPublicProperty, u = d.AVM2.AS.flash, l = jsGlobal.escape, c = [], g = function() {
        function g(c) {
          this.fscommand = u.system.FSCommand._fscommand;
          this.getTimer = d.AVM2.AS.FlashUtilScript_getTimer;
          this.NaN = Number.NaN;
          this.Infinity = Number.POSITIVE_INFINITY;
          this.isFinite = isFinite;
          this.isNaN = isNaN;
          this.parseFloat = parseFloat;
          this.parseInt = parseInt;
          this.Object = d.AVM2.AS.ASObject;
          this.Function = d.AVM2.AS.ASFunction;
          this.Array = d.AVM2.AS.ASArray;
          this.Number = d.AVM2.AS.ASNumber;
          this.Math = d.AVM2.AS.ASMath;
          this.Boolean = d.AVM2.AS.ASBoolean;
          this.Date = d.AVM2.AS.ASDate;
          this.RegExp = d.AVM2.AS.ASRegExp;
          this.String = d.AVM2.AS.ASString;
          this.undefined = void 0;
          this.MovieClip = a.AVM1MovieClip.createAVM1Class();
          this.AsBroadcaster = a.AVM1Broadcaster.createAVM1Class();
          this.System = a.AVM1System.createAVM1Class();
          this.Stage = a.AVM1Stage.createAVM1Class();
          this.Button = a.AVM1Button.createAVM1Class();
          this.TextField = a.AVM1TextField.createAVM1Class();
          this.Color = a.AVM1Color.createAVM1Class();
          this.Key = a.AVM1Key.createAVM1Class();
          this.Mouse = a.AVM1Mouse.createAVM1Class();
          this.MovieClipLoader = a.AVM1MovieClipLoader.createAVM1Class();
          this.Sound = a.AVM1Sound.createAVM1Class();
          this.SharedObject = u.net.SharedObject;
          this.ContextMenu = u.ui.ContextMenu;
          this.ContextMenuItem = u.ui.ContextMenuItem;
          this.TextFormat = a.AVM1TextFormat.createAVM1Class();
          g.instance = this;
          this._global = this;
          "Object Function Array Number Math Boolean Date RegExp String".split(" ").forEach(function(a) {
            d.AVM2.Runtime.AVM2.instance.systemDomain.getClass(a);
          });
          8 <= c.loaderInfo.swfVersion && this._initializeFlashObject();
          this.AsBroadcaster.initializeWithContext(this.Stage, c);
          this.AsBroadcaster.initializeWithContext(this.Key, c);
          this.AsBroadcaster.initializeWithContext(this.Mouse, c);
        }
        g.createAVM1Class = function() {
          return a.wrapAVM1Class(g, [], "_global flash ASSetPropFlags call chr clearInterval clearTimeout duplicateMovieClip fscommand escape unescape getTimer getURL getVersion gotoAndPlay gotoAndStop ifFrameLoaded int length=>length_ loadMovie loadMovieNum loadVariables loadVariablesNum mbchr mblength mbord mbsubstring nextFrame nextScene ord play prevFrame prevScene print printAsBitmap printAsBitmapNum printNum random removeMovieClip setInterval setTimeout showRedrawRegions startDrag stop stopDrag substring targetPath toggleHighQuality trace unloadMovie unloadMovieNum updateAfterEvent NaN Infinity isFinite isNaN parseFloat parseInt undefined Object Function Array Number Math Boolean Date RegExp String MovieClip AsBroadcaster System Stage Button TextField Color Key Mouse MovieClipLoader Sound SharedObject ContextMenu ContextMenuItem TextFormat toString $asfunction=>asfunction".split(" "));
        };
        g.prototype.asfunction = function(a) {
          n("AVM1Globals.$asfunction");
        };
        g.prototype.ASSetPropFlags = function(a, c, d, b) {
        };
        g.prototype.call = function(c) {
          var d = a.AVM1Utils.resolveTarget().as3Object;
          c = d._getAbsFrameNumber(c, null);
          void 0 !== c && d.callFrame(c);
        };
        g.prototype.chr = function(a) {
          return String.fromCharCode(a);
        };
        g.prototype.clearInterval = function(a) {
          var d = c[a - 1];
          d && (clearInterval(d), delete c[a - 1]);
        };
        g.prototype.clearTimeout = function(a) {
          var d = c[a - 1];
          d && (clearTimeout(d), delete c[a - 1]);
        };
        g.prototype.duplicateMovieClip = function(c, d, f) {
          a.AVM1Utils.resolveTarget(c).duplicateMovieClip(d, f, null);
        };
        g.prototype.getAVM1Property = function(c, d) {
          return a.AVM1Utils.resolveTarget(c)[q[d]];
        };
        g.prototype.getURL = function(a, c, f) {
          var b = new u.net.URLRequest(String(a));
          f && (b.method = f);
          "string" === typeof c && 0 === c.indexOf("_level") ? this.loadMovieNum(a, +c.substr(6), f) : d.AVM2.AS.FlashNetScript_navigateToURL(b, c);
        };
        g.prototype.getVersion = function() {
          return u.system.Capabilities.version;
        };
        g.prototype._addToPendingScripts = function(a, c, d) {
          void 0 === d && (d = null);
          var b = k.AVM1Context.instance, e = b.resolveTarget(void 0);
          b.addToPendingScripts(function() {
            b.enterContext(function() {
              try {
                c.apply(a, d);
              } catch (b) {
                console.error("AVM1 pending script error: " + b.message);
              }
            }, e);
          });
        };
        g.prototype.escape = function(a) {
          return encodeURIComponent(a).replace(/!|'|\(|\)|\*|-|\.|_|~/g, function(a) {
            switch(a) {
              case "*":
                return "%2A";
              case "-":
                return "%2D";
              case ".":
                return "%2E";
              case "_":
                return "%5F";
              default:
                return l(a);
            }
          });
        };
        g.prototype.unescape = function(a) {
          return decodeURIComponent(a);
        };
        g.prototype.gotoAndPlay = function(c, d) {
          var f = a.AVM1Utils.resolveTarget();
          2 > arguments.length ? this._addToPendingScripts(f, f.gotoAndPlay, [arguments[0]]) : this._addToPendingScripts(f, f.gotoAndPlay, [arguments[1], arguments[0]]);
        };
        g.prototype.gotoAndStop = function(c, d) {
          var f = a.AVM1Utils.resolveTarget();
          2 > arguments.length ? this._addToPendingScripts(f, f.gotoAndStop, [arguments[0]]) : this._addToPendingScripts(f, f.gotoAndStop, [arguments[1], arguments[0]]);
        };
        g.prototype.ifFrameLoaded = function(c, d) {
          var f = a.AVM1Utils.resolveTarget(), b = f._framesloaded;
          return Math.min((2 > arguments.length ? arguments[0] : arguments[1]) + 1, f._totalframes) <= b;
        };
        g.prototype.int = function(a) {
          return a | 0;
        };
        g.prototype.length_ = function(a) {
          return ("" + a).length;
        };
        g.prototype.loadMovie = function(c, d, f) {
          if (c && 0 === c.toLowerCase().indexOf("fscommand:")) {
            this.fscommand(c.substring(10), d);
          } else {
            var b = "string" === typeof d && 0 === d.indexOf("_level"), e;
            b && (b = d.charAt(6), e = parseInt(b, 10), b = e.toString() === b);
            e = new u.display.Loader;
            b ? (c = new u.net.URLRequest(c), f && (c.method = f), e.load(c)) : a.AVM1Utils.resolveTarget(d).loadMovie(c, f);
          }
        };
        g.prototype._setLevel = function(a, c) {
        };
        g.prototype.loadMovieNum = function(a, c, d) {
          a && 0 === a.toLowerCase().indexOf("fscommand:") ? this.fscommand(a.substring(10)) : (c = new u.display.Loader, a = new u.net.URLRequest(a), d && (a.method = d), c.load(a));
        };
        g.prototype.loadVariables = function(c, d, f) {
          void 0 === f && (f = "");
          d = a.AVM1Utils.resolveTarget(d);
          this._loadVariables(d, c, f);
        };
        g.prototype.loadVariablesNum = function(c, d, f) {
          void 0 === f && (f = "");
          this._loadVariables(a.AVM1Utils.resolveLevel(d), c, f);
        };
        g.prototype._loadVariables = function(c, d, f) {
          function b(d) {
            g.removeEventListener(u.events.Event.COMPLETE, b);
            v(g.data, function(a, b) {
              e.utils.setProperty(c, a, b);
            });
            c instanceof a.AVM1MovieClip && a.avm1BroadcastEvent(e, c, "onData");
          }
          d = new u.net.URLRequest(d);
          f && (d.method = f);
          var e = k.AVM1Context.instance, g = new u.net.URLLoader(d);
          g._ignoreDecodeErrors = !0;
          g.dataFormat = "variables";
          g.addEventListener(u.events.Event.COMPLETE, b);
        };
        g.prototype.mbchr = function(a) {
          return String.fromCharCode(a);
        };
        g.prototype.mblength = function(a) {
          return ("" + a).length;
        };
        g.prototype.mbord = function(a) {
          return ("" + a).charCodeAt(0);
        };
        g.prototype.mbsubstring = function(a, c, d) {
          return c !== (0 | c) || d !== (0 | d) ? "" : ("" + a).substr(c, d);
        };
        g.prototype.nextFrame = function() {
          var c = a.AVM1Utils.resolveTarget();
          this._addToPendingScripts(c, c.nextFrame);
        };
        g.prototype.nextScene = function() {
          var c = a.AVM1Utils.resolveTarget();
          this._addToPendingScripts(c, c.nextScene);
        };
        g.prototype.ord = function(a) {
          return ("" + a).charCodeAt(0);
        };
        g.prototype.play = function() {
          a.AVM1Utils.resolveTarget().play();
        };
        g.prototype.prevFrame = function() {
          var c = a.AVM1Utils.resolveTarget();
          this._addToPendingScripts(c, c.prevFrame);
        };
        g.prototype.prevScene = function() {
          var c = a.AVM1Utils.resolveTarget();
          this._addToPendingScripts(c, c.prevScene);
        };
        g.prototype.print = function(a, c) {
          n("AVM1Globals.print");
        };
        g.prototype.printAsBitmap = function(a, c) {
          n("AVM1Globals.printAsBitmap");
        };
        g.prototype.printAsBitmapNum = function(a, c) {
          n("AVM1Globals.printAsBitmapNum");
        };
        g.prototype.printNum = function(a, c) {
          n("AVM1Globals.printNum");
        };
        g.prototype.random = function(a) {
          return 0 | Math.random() * (0 | a);
        };
        g.prototype.removeMovieClip = function(c) {
          a.AVM1Utils.resolveTarget(c).removeMovieClip();
        };
        g.prototype.setInterval = function() {
          if (!(2 > arguments.length)) {
            var a = [];
            if ("function" === typeof arguments[0]) {
              a = arguments;
            } else {
              if (3 > arguments.length) {
                return;
              }
              var d = arguments[0], f = arguments[1];
              if (!d || "object" !== typeof d || "string" !== typeof f) {
                return;
              }
              a[0] = function() {
                d.asCallPublicProperty(f, arguments);
              };
              for (var b = 2;b < arguments.length;b++) {
                a.push(arguments[b]);
              }
            }
            a[1] |= 0;
            a = setInterval.apply(null, a);
            return c.push(a);
          }
        };
        g.prototype.setAVM1Property = function(c, d, f) {
          a.AVM1Utils.resolveTarget(c)[q[d]] = f;
        };
        g.prototype.setTimeout = function() {
          if (!(2 > arguments.length || "function" !== typeof arguments[0])) {
            arguments[1] |= 0;
            var a = setTimeout.apply(null, arguments);
            return c.push(a);
          }
        };
        g.prototype.showRedrawRegions = function(a, c) {
          n("AVM1Globals.showRedrawRegions");
        };
        g.prototype.startDrag = function(c, d, f, b, e, g) {
          a.AVM1Utils.resolveTarget(c).startDrag(d, 3 > arguments.length ? null : new u.geom.Rectangle(f, b, e - f, g - b));
        };
        g.prototype.stop = function() {
          a.AVM1Utils.resolveTarget().stop();
        };
        g.prototype.stopAllSounds = function() {
          u.media.SoundMixer.stopAll();
        };
        g.prototype.stopDrag = function(c) {
          a.AVM1Utils.resolveTarget(c).stopDrag();
        };
        g.prototype.substring = function(a, c, d) {
          return this.mbsubstring(a, c, d);
        };
        g.prototype.targetPath = function(c) {
          return a.AVM1Utils.resolveTarget(c)._target;
        };
        g.prototype.toggleHighQuality = function() {
          n("AVM1Globals.toggleHighQuality");
        };
        g.prototype.trace = function(a) {
          d.AVM2.AS.Natives.print(a);
        };
        g.prototype.unloadMovie = function(c) {
          a.AVM1Utils.resolveTarget(c).unloadMovie();
        };
        g.prototype.unloadMovieNum = function(c) {
          a.AVM1Utils.resolveLevel(c).unloadMovie();
        };
        g.prototype.updateAfterEvent = function() {
          w("AVM1Globals.updateAfterEvent");
        };
        g.prototype._initializeFlashObject = function() {
          this.flash = {};
          this.flash.asSetPublicProperty("_MovieClip", this.MovieClip);
          var c = {};
          c.asSetPublicProperty("BitmapData", a.AVM1BitmapData.createAVM1Class());
          this.flash.asSetPublicProperty("display", c);
          c = {};
          c.asSetPublicProperty("ExternalInterface", a.AVM1ExternalInterface.createAVM1Class());
          this.flash.asSetPublicProperty("external", c);
          this.flash.asSetPublicProperty("filters", {});
          c = {};
          c.asSetPublicProperty("ColorTransform", u.geom.ColorTransform);
          c.asSetPublicProperty("Matrix", u.geom.Matrix);
          c.asSetPublicProperty("Point", u.geom.Point);
          c.asSetPublicProperty("Rectangle", u.geom.Rectangle);
          c.asSetPublicProperty("Transform", a.AVM1Transform.createAVM1Class());
          this.flash.asSetPublicProperty("geom", c);
          this.flash.asSetPublicProperty("text", {});
        };
        g.prototype.toString = function() {
          return "[type Object]";
        };
        return g;
      }();
      a.AVM1Globals = g;
      var q = "_x _y _xscale _yscale _currentframe _totalframes _alpha _visible _width _height _rotation _target _framesloaded _name _droptarget _url _highquality _focusrect _soundbuftime _quality _xmouse _ymouse".split(" ");
    })(k.Lib || (k.Lib = {}));
  })(d.AVM1 || (d.AVM1 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      var n = function() {
        function n() {
        }
        n.setAVM1Context = function(a) {
          this._context = a;
        };
        n.createAVM1Class = function() {
          return a.wrapAVM1Class(n, ["initialize"], []);
        };
        n.initialize = function(a) {
          n.initializeWithContext(a, d.AVM1Context.instance);
        };
        n.initializeWithContext = function(d, k) {
          d.asSetPublicProperty("_listeners", []);
          d.asSetPublicProperty("broadcastMessage", function(d) {
            for (var c = [], g = 1;g < arguments.length;g++) {
              c[g - 1] = arguments[g];
            }
            a.avm1BroadcastEvent(k, this, d, c);
          });
          d.asSetPublicProperty("addListener", function(a) {
            k.utils.getProperty(this, "_listeners").push(a);
            this.isAVM1Instance && this.updateAllEvents();
          });
          d.asSetPublicProperty("removeListener", function(a) {
            var c = k.utils.getProperty(this, "_listeners");
            a = c.indexOf(a);
            if (0 > a) {
              return !1;
            }
            c.splice(a, 1);
            this.isAVM1Instance && this.updateAllEvents();
            return !0;
          });
        };
        return n;
      }();
      a.AVM1Broadcaster = n;
    })(d.Lib || (d.Lib = {}));
  })(d.AVM1 || (d.AVM1 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      var d = function() {
        function d() {
        }
        d.createAVM1Class = function() {
          return a.wrapAVM1Class(d, ["DOWN", "LEFT", "RIGHT", "UP", "isDown"], []);
        };
        d._bind = function(a, k) {
          a.addEventListener("keyDown", function(a) {
            a = a.asGetPublicProperty("keyCode");
            d._lastKeyCode = a;
            d._keyStates[a] = 1;
            k.globals.Key.asCallPublicProperty("broadcastMessage", ["onKeyDown"]);
          }, !1);
          a.addEventListener("keyUp", function(a) {
            a = a.asGetPublicProperty("keyCode");
            d._lastKeyCode = a;
            delete d._keyStates[a];
            k.globals.Key.asCallPublicProperty("broadcastMessage", ["onKeyUp"]);
          }, !1);
        };
        d.isDown = function(a) {
          return !!d._keyStates[a];
        };
        d.DOWN = 40;
        d.LEFT = 37;
        d.RIGHT = 39;
        d.UP = 38;
        d._keyStates = [];
        d._lastKeyCode = 0;
        return d;
      }();
      a.AVM1Key = d;
    })(d.Lib || (d.Lib = {}));
  })(d.AVM1 || (d.AVM1 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      var d = function() {
        function d() {
        }
        d.createAVM1Class = function() {
          return a.wrapAVM1Class(d, ["show", "hide"], []);
        };
        d._bind = function(a, d) {
          a.addEventListener("mouseDown", function(a) {
            d.globals.Mouse.asCallPublicProperty("broadcastMessage", ["onMouseDown"]);
          }, !1);
          a.addEventListener("mouseMove", function(a) {
            d.globals.Mouse.asCallPublicProperty("broadcastMessage", ["onMouseMove"]);
          }, !1);
          a.addEventListener("mouseOut", function(a) {
            d.globals.Mouse.asCallPublicProperty("broadcastMessage", ["onMouseMove"]);
          }, !1);
          a.addEventListener("mouseUp", function(a) {
            d.globals.Mouse.asCallPublicProperty("broadcastMessage", ["onMouseUp"]);
          }, !1);
        };
        d.hide = function() {
        };
        d.show = function() {
        };
        return d;
      }();
      a.AVM1Mouse = d;
    })(d.Lib || (d.Lib = {}));
  })(d.AVM1 || (d.AVM1 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      var d = function() {
        function d() {
        }
        d.createAVM1Class = function() {
          return a.wrapAVM1Class(d, "align displayState fullScreenSourceRect height scaleMode showMenu width".split(" "), []);
        };
        Object.defineProperty(d, "align", {get:function() {
          return a.AVM1Utils.currentStage.align;
        }, set:function(d) {
          a.AVM1Utils.currentStage.align = d;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(d, "displayState", {get:function() {
          return a.AVM1Utils.currentStage.displayState;
        }, set:function(d) {
          a.AVM1Utils.currentStage.displayState = d;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(d, "fullScreenSourceRect", {get:function() {
          return a.AVM1Utils.currentStage.fullScreenSourceRect;
        }, set:function(d) {
          a.AVM1Utils.currentStage.fullScreenSourceRect = d;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(d, "height", {get:function() {
          return a.AVM1Utils.currentStage.stageHeight;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(d, "scaleMode", {get:function() {
          return a.AVM1Utils.currentStage.scaleMode;
        }, set:function(d) {
          a.AVM1Utils.currentStage.scaleMode = d;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(d, "showMenu", {get:function() {
          return a.AVM1Utils.currentStage.showDefaultContextMenu;
        }, set:function(d) {
          a.AVM1Utils.currentStage.showDefaultContextMenu = d;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(d, "width", {get:function() {
          return a.AVM1Utils.currentStage.stageWidth;
        }, enumerable:!0, configurable:!0});
        return d;
      }();
      a.AVM1Stage = d;
    })(d.Lib || (d.Lib = {}));
  })(d.AVM1 || (d.AVM1 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var n = d.AVM2.AS.flash, w = d.AVM2.ABC.Multiname, v = d.AVM2.Runtime.resolveMultinameProperty, u = Object.prototype.asGetProperty, l = Object.prototype.asHasProperty, c = Object.prototype.asGetEnumerableKeys, g = function(a) {
        function c(d, f, b) {
          void 0 === b && (b = null);
          a.call(this, d, f, b);
          this.propertyName = d;
          this.eventName = f;
          this.argsConverter = b;
        }
        __extends(c, a);
        c.prototype.onBind = function(a) {
          a.as3Object.buttonMode = !0;
        };
        return c;
      }(a.AVM1EventHandler), q = function(q) {
        function m() {
          q.call(this);
        }
        __extends(m, q);
        m.createAVM1Class = function() {
          return a.wrapAVM1Class(m, [], "_alpha attachAudio attachBitmap attachMovie beginFill beginBitmapFill beginGradientFill blendMode cacheAsBitmap _callFrame clear createEmptyMovieClip createTextField _currentframe curveTo _droptarget duplicateMovieClip enabled endFill filters _framesloaded focusEnabled _focusrect forceSmothing getBounds getBytesLoaded getBytesTotal getDepth getInstanceAtDepth getNextHighestDepth getRect getSWFVersion getTextSnapshot getURL globalToLocal gotoAndPlay gotoAndStop _height _highquality hitArea hitTest lineGradientStyle listStyle lineTo loadMovie loadVariables localToGlobal _lockroot menu moveTo _name nextFrame opaqueBackground _parent play prevFrame _quality removeMovieClip _rotation scale9Grid scrollRect setMask _soundbuftime startDrag stop stopDrag swapDepths tabChildren tabEnabled tabIndex _target _totalframes trackAsMenu transform toString unloadMovie _url useHandCursor _visible _width _x _xmouse _xscale _y _ymouse _yscale".split(" "));
        };
        Object.defineProperty(m.prototype, "graphics", {get:function() {
          return this.as3Object.graphics;
        }, enumerable:!0, configurable:!0});
        m.prototype.initAVM1SymbolInstance = function(a, c) {
          q.prototype.initAVM1SymbolInstance.call(this, a, c);
          this._boundExecuteFrameScripts = this._frameScripts = null;
          this._initEventsHandlers();
        };
        m.prototype.__lookupChild = function(c) {
          return "." == c ? this : ".." == c ? a.getAVM1Object(this.as3Object.parent, this.context) : a.getAVM1Object(this._lookupChildByName(c), this.context);
        };
        m.prototype._lookupChildByName = function(a) {
          a = asCoerceString(a);
          return this.as3Object._lookupChildByName(a);
        };
        Object.defineProperty(m.prototype, "__targetPath", {get:function() {
          var a = this._target;
          return "/" != a ? "_level0" + a.replace(/\//g, ".") : "_level0";
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(m.prototype, "_alpha", {get:function() {
          return this.as3Object.alpha;
        }, set:function(a) {
          this.as3Object.alpha = a;
        }, enumerable:!0, configurable:!0});
        m.prototype.attachAudio = function(a) {
          throw "Not implemented: attachAudio";
        };
        m.prototype._constructMovieClipSymbol = function(a, c) {
          var b = k.AVM1Context.instance.getAsset(a);
          if (b) {
            var e = Object.create(b.symbolProps);
            e.avm1Name = c;
            e.avm1SymbolClass = b.theClass;
            b = n.display.MovieClip.initializeFrom(e);
            n.display.MovieClip.instanceConstructorNoInitialize.call(b);
            return b;
          }
        };
        m.prototype.attachMovie = function(a, c, b, e) {
          if (a = this._constructMovieClipSymbol(a, c)) {
            b = this._insertChildAtDepth(a, b);
            for (var d in e) {
              b[d] = e[d];
            }
            return b;
          }
        };
        m.prototype.beginFill = function(a, c) {
          this.graphics.beginFill(a, c);
        };
        m.prototype.beginBitmapFill = function(a, c, b, e) {
          a instanceof n.display.BitmapData && this.graphics.beginBitmapFill(a, c, b, e);
        };
        m.prototype.beginGradientFill = function(a, c, b, e, d, g, l, k) {
          this.graphics.beginGradientFill(a, c, b, e, d, g, l, k);
        };
        Object.defineProperty(m.prototype, "blendMode", {get:function() {
          return this.as3Object.blendMode;
        }, set:function(a) {
          this.as3Object.blendMode = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(m.prototype, "cacheAsBitmap", {get:function() {
          return this.as3Object.cacheAsBitmap;
        }, set:function(a) {
          this.as3Object.cacheAsBitmap = a;
        }, enumerable:!0, configurable:!0});
        m.prototype._callFrame = function(a) {
        };
        m.prototype.clear = function() {
          this.graphics.clear();
        };
        m.prototype._insertChildAtDepth = function(c, d) {
          var b = this.as3Object;
          b.addTimelineObjectAtDepth(c, Math.min(b.numChildren, d));
          return n.display.Bitmap.isType(c) ? null : a.getAVM1Object(c, this.context);
        };
        m.prototype.createEmptyMovieClip = function(a, c) {
          var b = new n.display.MovieClip;
          b.name = a;
          return this._insertChildAtDepth(b, c);
        };
        m.prototype.createTextField = function(a, c, b, e, d, g) {
          var l = new n.text.TextField;
          l.name = a;
          l.x = b;
          l.y = e;
          l.width = d;
          l.height = g;
          return this._insertChildAtDepth(l, c);
        };
        Object.defineProperty(m.prototype, "_currentframe", {get:function() {
          return this.as3Object.currentFrame;
        }, enumerable:!0, configurable:!0});
        m.prototype.curveTo = function(a, c, b, e) {
          this.graphics.curveTo(a, c, b, e);
        };
        Object.defineProperty(m.prototype, "_droptarget", {get:function() {
          return this.as3Object.dropTarget;
        }, enumerable:!0, configurable:!0});
        m.prototype._duplicate = function(a, c, b) {
        };
        m.prototype.duplicateMovieClip = function(c, d, b) {
          return a.getAVM1Object(this._duplicate(c, +d, b), this.context);
        };
        Object.defineProperty(m.prototype, "enabled", {get:function() {
          return this.as3Object.enabled;
        }, set:function(a) {
          this.as3Object.enabled = a;
        }, enumerable:!0, configurable:!0});
        m.prototype.endFill = function() {
          this.graphics.endFill();
        };
        Object.defineProperty(m.prototype, "filters", {get:function() {
          throw "Not implemented: get$filters";
        }, set:function(a) {
          throw "Not implemented: set$filters";
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(m.prototype, "focusEnabled", {get:function() {
          throw "Not implemented: get$focusEnabled";
        }, set:function(a) {
          throw "Not implemented: set$focusEnabled";
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(m.prototype, "_focusrect", {get:function() {
          throw "Not implemented: get$_focusrect";
        }, set:function(a) {
          throw "Not implemented: set$_focusrect";
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(m.prototype, "forceSmoothing", {get:function() {
          throw "Not implemented: get$forceSmoothing";
        }, set:function(a) {
          throw "Not implemented: set$forceSmoothing";
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(m.prototype, "_framesloaded", {get:function() {
          return this.as3Object.framesLoaded;
        }, enumerable:!0, configurable:!0});
        m.prototype.getBounds = function(a) {
          a = a.as3Object;
          if (!a) {
            throw "Unsupported bounds type";
          }
          return this.as3Object.getBounds(a);
        };
        m.prototype.getBytesLoaded = function() {
          return this.as3Object.loaderInfo.bytesLoaded;
        };
        m.prototype.getBytesTotal = function() {
          return this.as3Object.loaderInfo.bytesTotal;
        };
        m.prototype.getDepth = function() {
          return this.as3Object._depth;
        };
        m.prototype.getInstanceAtDepth = function(c) {
          for (var d = this.as3Object, b = 0, e = d.numChildren;b < e;b++) {
            var g = d._lookupChildByIndex(b);
            if (g && g._depth === c) {
              return n.display.Bitmap.isType(g) ? this : a.getAVM1Object(g, this.context);
            }
          }
          return null;
        };
        m.prototype.getNextHighestDepth = function() {
          for (var a = this.as3Object, c = 0, b = 0, e = a.numChildren;b < e;b++) {
            var d = a._lookupChildByIndex(b);
            d._depth > c && (c = d._depth);
          }
          return c + 1;
        };
        m.prototype.getRect = function(a) {
          throw "Not implemented: getRect";
        };
        m.prototype.getSWFVersion = function() {
          return this.as3Object.loaderInfo.swfVersion;
        };
        m.prototype.getTextSnapshot = function() {
          throw "Not implemented: getTextSnapshot";
        };
        m.prototype.getURL = function(a, c, b) {
          a = new n.net.URLRequest(a);
          b && (a.method = b);
          d.AVM2.AS.FlashNetScript_navigateToURL(a, c);
        };
        m.prototype.globalToLocal = function(a) {
          var c = this.as3Object.globalToLocal(new n.geom.Point(a.asGetPublicProperty("x"), a.asGetPublicProperty("y")));
          a.asSetPublicProperty("x", c.x);
          a.asSetPublicProperty("y", c.y);
        };
        m.prototype.gotoAndPlay = function(a) {
          return this.as3Object.gotoAndPlay(a);
        };
        m.prototype.gotoAndStop = function(a) {
          return this.as3Object.gotoAndStop(a);
        };
        Object.defineProperty(m.prototype, "_height", {get:function() {
          return this.as3Object.height;
        }, set:function(a) {
          isNaN(a) || (this.as3Object.height = a);
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(m.prototype, "_highquality", {get:function() {
          return 1;
        }, set:function(a) {
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(m.prototype, "hitArea", {get:function() {
          throw "Not implemented: get$hitArea";
        }, set:function(a) {
          throw "Not implemented: set$hitArea";
        }, enumerable:!0, configurable:!0});
        m.prototype.hitTest = function(a, c, b) {
          return a instanceof m ? this.as3Object.hitTestObject(a.as3Object) : this.as3Object.hitTestPoint(a, c, b);
        };
        m.prototype.lineGradientStyle = function(a, c, b, e, d, g, l, k) {
          this.graphics.lineGradientStyle(a, c, b, e, d, g, l, k);
        };
        m.prototype.lineStyle = function(a, c, b, e, d, g, l, k) {
          this.graphics.lineStyle(a, c, b, e, d, g, l, k);
        };
        m.prototype.lineTo = function(a, c) {
          this.graphics.lineTo(a, c);
        };
        m.prototype.loadMovie = function(a, c) {
          function b(a) {
            e.removeEventListener(n.events.Event.COMPLETE, b);
            a = this.as3Object.parent;
            var c = a.getChildIndex(this.as3Object);
            a.removeChild(this.as3Object);
            a.addChildAt(e.content, c);
          }
          var e = new n.display.Loader, d = new n.net.URLRequest(a);
          c && (d.method = c);
          e.load(d);
          e.addEventListener(n.events.Event.COMPLETE, b);
        };
        m.prototype.loadVariables = function(a, c) {
          this.context.globals._loadVariables(this, a, c);
        };
        m.prototype.localToGlobal = function(a) {
          var c = this.as3Object.localToGlobal(new n.geom.Point(a.asGetPublicProperty("x"), a.asGetPublicProperty("y")));
          a.asSetPublicProperty("x", c.x);
          a.asSetPublicProperty("y", c.y);
        };
        Object.defineProperty(m.prototype, "_lockroot", {get:function() {
          throw "Not implemented: get$_lockroot";
        }, set:function(a) {
          throw "Not implemented: set$_lockroot";
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(m.prototype, "menu", {get:function() {
          return this.as3Object.contextMenu;
        }, set:function(a) {
          this.as3Object.contextMenu = a;
        }, enumerable:!0, configurable:!0});
        m.prototype.moveTo = function(a, c) {
          this.graphics.moveTo(a, c);
        };
        Object.defineProperty(m.prototype, "_name", {get:function() {
          return this.as3Object.name;
        }, set:function(a) {
          this.as3Object.name = a;
        }, enumerable:!0, configurable:!0});
        m.prototype.nextFrame = function() {
          this.as3Object.nextFrame();
        };
        m.prototype.nextScene = function() {
          this.as3Object.nextScene();
        };
        Object.defineProperty(m.prototype, "opaqueBackground", {get:function() {
          return this.as3Object.opaqueBackground;
        }, set:function(a) {
          this.as3Object.opaqueBackground = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(m.prototype, "_parent", {get:function() {
          return a.getAVM1Object(this.as3Object.parent, this.context) || void 0;
        }, set:function(a) {
          throw "Not implemented: set$_parent";
        }, enumerable:!0, configurable:!0});
        m.prototype.play = function() {
          this.as3Object.play();
        };
        m.prototype.prevFrame = function() {
          this.as3Object.prevFrame();
        };
        m.prototype.prevScene = function() {
          this.as3Object.prevScene();
        };
        Object.defineProperty(m.prototype, "_quality", {get:function() {
          return "HIGH";
        }, set:function(a) {
        }, enumerable:!0, configurable:!0});
        m.prototype.removeMovieClip = function() {
          this._parent.as3Object.removeChild(this.as3Object);
        };
        Object.defineProperty(m.prototype, "_rotation", {get:function() {
          return this.as3Object.rotation;
        }, set:function(a) {
          this.as3Object.rotation = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(m.prototype, "scale9Grid", {get:function() {
          throw "Not implemented: get$scale9Grid";
        }, set:function(a) {
          throw "Not implemented: set$scale9Grid";
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(m.prototype, "scrollRect", {get:function() {
          throw "Not implemented: get$scrollRect";
        }, set:function(a) {
          throw "Not implemented: set$scrollRect";
        }, enumerable:!0, configurable:!0});
        m.prototype.setMask = function(c) {
          var d = this.as3Object;
          if (c = a.AVM1Utils.resolveMovieClip(c)) {
            d.mask = c.as3Object;
          }
        };
        Object.defineProperty(m.prototype, "_soundbuftime", {get:function() {
          throw "Not implemented: get$_soundbuftime";
        }, set:function(a) {
          throw "Not implemented: set$_soundbuftime";
        }, enumerable:!0, configurable:!0});
        m.prototype.startDrag = function(a, c, b, e, d) {
          this.as3Object.startDrag(a, 3 > arguments.length ? null : new n.geom.Rectangle(c, b, e - c, d - b));
        };
        m.prototype.stop = function() {
          return this.as3Object.stop();
        };
        m.prototype.stopDrag = function() {
          return this.as3Object.stopDrag();
        };
        m.prototype.swapDepths = function(c) {
          var d = this.as3Object;
          c = "number" === typeof c ? a.AVM1Utils.resolveLevel(Number(c)).as3Object : a.AVM1Utils.resolveTarget(c).as3Object;
          d.parent === c.parent && d.parent.swapChildren(d, c);
        };
        Object.defineProperty(m.prototype, "tabChildren", {get:function() {
          return this.as3Object.tabChildren;
        }, set:function(a) {
          this.as3Object.tabChildren = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(m.prototype, "tabEnabled", {get:function() {
          return this.as3Object.tabEnabled;
        }, set:function(a) {
          this.as3Object.tabEnabled = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(m.prototype, "tabIndex", {get:function() {
          return this.as3Object.tabIndex;
        }, set:function(a) {
          this.as3Object.tabIndex = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(m.prototype, "_target", {get:function() {
          var a = this.as3Object;
          if (a === a.root) {
            return "/";
          }
          var c = "";
          do {
            c = "/" + a.name + c, a = a.parent;
          } while (a !== a.root);
          return c;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(m.prototype, "_totalframes", {get:function() {
          return this.as3Object.totalFrames;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(m.prototype, "trackAsMenu", {get:function() {
          throw "Not implemented: get$trackAsMenu";
        }, set:function(a) {
          throw "Not implemented: set$trackAsMenu";
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(m.prototype, "transform", {get:function() {
          throw "Not implemented: get$transform";
        }, set:function(a) {
          throw "Not implemented: set$transform";
        }, enumerable:!0, configurable:!0});
        m.prototype.toString = function() {
          return this.as3Object.toString();
        };
        m.prototype.unloadMovie = function() {
          var a = this.as3Object, c = a.loaderInfo.loader;
          c.parent && c.parent.removeChild(c);
          a.stop();
        };
        Object.defineProperty(m.prototype, "_url", {get:function() {
          return this.as3Object.loaderInfo.url;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(m.prototype, "useHandCursor", {get:function() {
          return this.as3Object.useHandCursor;
        }, set:function(a) {
          this.as3Object.useHandCursor = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(m.prototype, "_visible", {get:function() {
          return this.as3Object.visible;
        }, set:function(a) {
          this.as3Object.visible = 0 !== +a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(m.prototype, "_width", {get:function() {
          return this.as3Object.width;
        }, set:function(a) {
          isNaN(a) || (this.as3Object.width = a);
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(m.prototype, "_x", {get:function() {
          return this.as3Object.x;
        }, set:function(a) {
          isNaN(a) || (this.as3Object.x = a);
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(m.prototype, "_xmouse", {get:function() {
          return this.as3Object.mouseX;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(m.prototype, "_xscale", {get:function() {
          return 100 * this.as3Object.scaleX;
        }, set:function(a) {
          isNaN(a) || (this.as3Object.scaleX = a / 100);
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(m.prototype, "_y", {get:function() {
          return this.as3Object.y;
        }, set:function(a) {
          isNaN(a) || (this.as3Object.y = a);
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(m.prototype, "_ymouse", {get:function() {
          return this.as3Object.mouseY;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(m.prototype, "_yscale", {get:function() {
          return 100 * this.as3Object.scaleY;
        }, set:function(a) {
          isNaN(a) || (this.as3Object.scaleY = a / 100);
        }, enumerable:!0, configurable:!0});
        m.prototype._resolveLevelNProperty = function(a) {
          if ("_root" === a || "_level0" === a) {
            return k.AVM1Context.instance.resolveLevel(0);
          }
          if (0 === a.indexOf("_level")) {
            a = a.substring(6);
            var c = a | 0;
            if (0 < c && a == c) {
              return k.AVM1Context.instance.resolveLevel(c);
            }
          }
          return null;
        };
        m.prototype.asGetProperty = function(a, c, b) {
          if (l.call(this, a, c, b)) {
            return u.call(this, a, c, b);
          }
          if ("string" === typeof c && "_" === c[0]) {
            var e = this._resolveLevelNProperty(c);
            if (e) {
              return e;
            }
          }
          a = v(a, c, b);
          if (w.isPublicQualifiedName(a) && this.isAVM1Instance) {
            return this.__lookupChild(w.getNameFromPublicQualifiedName(a));
          }
        };
        m.prototype.asHasProperty = function(a, c, b) {
          if (l.call(this, a, c, b) || "string" === typeof c && "_" === c[0] && this._resolveLevelNProperty(c)) {
            return !0;
          }
          a = v(a, c, b);
          return w.isPublicQualifiedName(a) && this.isAVM1Instance ? !!this.__lookupChild(w.getNameFromPublicQualifiedName(a)) : !1;
        };
        m.prototype.asGetEnumerableKeys = function() {
          var a = c.call(this);
          if (!this.isAVM1Instance) {
            return a;
          }
          for (var d = this.as3Object, b = 0, e = d._children.length;b < e;b++) {
            var g = d._children[b].name;
            l.call(this, void 0, g, 0) || a.push(w.getPublicQualifiedName(g));
          }
          return a;
        };
        m.prototype.addFrameActionBlocks = function(a, c) {
          var b = c.initActionBlocks, e = c.actionBlocks;
          b && this._addInitActionBlocks(a, b);
          if (e) {
            for (b = 0;b < e.length;b++) {
              this.addFrameScript(a, e[b]);
            }
          }
        };
        m.prototype.addFrameScript = function(a, c) {
          var b = this._frameScripts;
          b || (this._boundExecuteFrameScripts = this._executeFrameScripts.bind(this), b = this._frameScripts = []);
          var e = b[a + 1];
          e || (e = b[a + 1] = [], this.as3Object.addFrameScript(a, this._boundExecuteFrameScripts));
          b = this.context.actionsDataFactory.createActionsData(c, "f" + a + "i" + e.length);
          e.push(b);
        };
        m.prototype._addInitActionBlocks = function(a, c) {
          function b(g) {
            if (e.currentFrame === a + 1) {
              e.removeEventListener("enterFrame", b);
              g = d.context;
              for (var l = 0;l < c.length;l++) {
                var k = g.actionsDataFactory.createActionsData(c[l].actionsData, "f" + a + "i" + l);
                g.executeActions(k, d);
              }
            }
          }
          var e = this.as3Object, d = this;
          e.addEventListener("enterFrame", b);
        };
        m.prototype._executeFrameScripts = function() {
          for (var a = this.context, c = this._frameScripts[this.as3Object.currentFrame], b = 0;b < c.length;b++) {
            a.executeActions(c[b], this);
          }
        };
        m.prototype._initEventsHandlers = function() {
          this.bindEvents([new a.AVM1EventHandler("onData", "data"), new a.AVM1EventHandler("onDragOut", "dragOut"), new a.AVM1EventHandler("onDragOver", "dragOver"), new a.AVM1EventHandler("onEnterFrame", "enterFrame"), new a.AVM1EventHandler("onKeyDown", "keyDown"), new a.AVM1EventHandler("onKeyUp", "keyUp"), new a.AVM1EventHandler("onKillFocus", "focusOut", function(a) {
            return [a.relatedObject];
          }), new a.AVM1EventHandler("onLoad", "load"), new a.AVM1EventHandler("onMouseDown", "mouseDown"), new a.AVM1EventHandler("onMouseUp", "mouseUp"), new g("onPress", "mouseDown"), new g("onRelease", "mouseUp"), new g("onReleaseOutside", "releaseOutside"), new g("onRollOut", "mouseOut"), new g("onRollOver", "mouseOver"), new a.AVM1EventHandler("onSetFocus", "focusIn", function(a) {
            return [a.relatedObject];
          }), new a.AVM1EventHandler("onUnload", "unload")]);
        };
        return m;
      }(a.AVM1SymbolBase);
      a.AVM1MovieClip = q;
    })(k.Lib || (k.Lib = {}));
  })(d.AVM1 || (d.AVM1 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var k = d.Debug.somewhatImplemented, w;
      (function(a) {
        a[a.IdleToOverUp = 1] = "IdleToOverUp";
        a[a.OverUpToIdle = 2] = "OverUpToIdle";
        a[a.OverUpToOverDown = 4] = "OverUpToOverDown";
        a[a.OverDownToOverUp = 8] = "OverDownToOverUp";
        a[a.OverDownToOutDown = 16] = "OverDownToOutDown";
        a[a.OutDownToOverDown = 32] = "OutDownToOverDown";
        a[a.OutDownToIdle = 64] = "OutDownToIdle";
        a[a.IdleToOverDown = 128] = "IdleToOverDown";
        a[a.OverDownToIdle = 256] = "OverDownToIdle";
      })(w || (w = {}));
      var v = [-1, 37, 39, 36, 35, 45, 46, -1, 8, -1, -1, -1, -1, 13, 38, 40, 33, 34, 9, 27];
      w = function(d) {
        function l() {
          d.apply(this, arguments);
        }
        __extends(l, d);
        l.createAVM1Class = function() {
          return a.wrapAVM1Class(l, [], "_alpha blendMode cacheAsBitmap enabled filters _focusrect getDepth _height _highquality menu _name _parent _quality _rotation scale9Grid _soundbuftime tabEnabled tabIndex _target trackAsMenu _url useHandCursor _visible _width _x _xmouse _xscale _y _ymouse _yscale".split(" "));
        };
        l.prototype.initAVM1SymbolInstance = function(a, g) {
          d.prototype.initAVM1SymbolInstance.call(this, a, g);
          var l = this._as3Object;
          if (l._symbol && l._symbol.data.buttonActions) {
            l.buttonMode = !0;
            l.addEventListener("addedToStage", this._addListeners.bind(this));
            l.addEventListener("removedFromStage", this._removeListeners.bind(this));
            for (var t = this._requiredListeners = Object.create(null), m = this._actions = l._symbol.data.buttonActions, h = 0;h < m.length;h++) {
              var f = m[h];
              f.actionsBlock || (f.actionsBlock = a.actionsDataFactory.createActionsData(f.actionsData, "s" + l._symbol.id + "e" + h));
              if (f.keyCode) {
                t.keyDown = this._keyDownHandler.bind(this);
              } else {
                var b;
                switch(f.stateTransitionFlags) {
                  case 64:
                    b = "releaseOutside";
                    break;
                  case 1:
                    b = "rollOver";
                    break;
                  case 2:
                    b = "rollOut";
                    break;
                  case 4:
                    b = "mouseDown";
                    break;
                  case 8:
                    b = "mouseUp";
                    break;
                  case 16:
                  ;
                  case 32:
                    k("AVM1 drag over/out button actions");
                    break;
                  case 128:
                  ;
                  case 256:
                    k("AVM1 drag trackAsMenu over/out button actions");
                    break;
                  default:
                    console.warn("Unknown AVM1 button action type: " + f.stateTransitionFlags);
                    continue;
                }
                t[b] = this._mouseEventHandler.bind(this, f.stateTransitionFlags);
              }
            }
          }
          this._initEventsHandlers();
        };
        Object.defineProperty(l.prototype, "_alpha", {get:function() {
          return this._as3Object.alpha;
        }, set:function(a) {
          this._as3Object.alpha = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(l.prototype, "blendMode", {get:function() {
          return this._as3Object.blendMode;
        }, set:function(a) {
          this._as3Object.blendMode = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(l.prototype, "cacheAsBitmap", {get:function() {
          return this._as3Object.cacheAsBitmap;
        }, set:function(a) {
          this._as3Object.cacheAsBitmap = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(l.prototype, "enabled", {get:function() {
          return this._as3Object.enabled;
        }, set:function(a) {
          this._as3Object.enabled = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(l.prototype, "filters", {get:function() {
          throw "Not implemented: get$filters";
        }, set:function(a) {
          throw "Not implemented: set$filters";
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(l.prototype, "_focusrect", {get:function() {
          throw "Not implemented: get$_focusrect";
        }, set:function(a) {
          throw "Not implemented: set$_focusrect";
        }, enumerable:!0, configurable:!0});
        l.prototype.getDepth = function() {
          return this._as3Object._clipDepth;
        };
        Object.defineProperty(l.prototype, "_height", {get:function() {
          return this._as3Object.height;
        }, set:function(a) {
          isNaN(a) || (this._as3Object.height = a);
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(l.prototype, "_highquality", {get:function() {
          return 1;
        }, set:function(a) {
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(l.prototype, "menu", {get:function() {
          return this._as3Object.contextMenu;
        }, set:function(a) {
          this._as3Object.contextMenu = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(l.prototype, "_name", {get:function() {
          return this._as3Object.contextMenu;
        }, set:function(a) {
          this._as3Object.contextMenu = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(l.prototype, "_parent", {get:function() {
          return a.getAVM1Object(this._as3Object.parent, this.context);
        }, set:function(a) {
          throw "Not implemented: set$_parent";
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(l.prototype, "_quality", {get:function() {
          return "HIGH";
        }, set:function(a) {
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(l.prototype, "_rotation", {get:function() {
          return this._as3Object.rotation;
        }, set:function(a) {
          this._as3Object.rotation = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(l.prototype, "scale9Grid", {get:function() {
          throw "Not implemented: get$scale9Grid";
        }, set:function(a) {
          throw "Not implemented: set$scale9Grid";
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(l.prototype, "_soundbuftime", {get:function() {
          throw "Not implemented: get$_soundbuftime";
        }, set:function(a) {
          throw "Not implemented: set$_soundbuftime";
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(l.prototype, "tabEnabled", {get:function() {
          return this._as3Object.tabEnabled;
        }, set:function(a) {
          this._as3Object.tabEnabled = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(l.prototype, "tabIndex", {get:function() {
          return this._as3Object.tabIndex;
        }, set:function(a) {
          this._as3Object.tabIndex = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(l.prototype, "_target", {get:function() {
          return a.AVM1Utils.getTarget(this);
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(l.prototype, "trackAsMenu", {get:function() {
          throw "Not implemented: get$trackAsMenu";
        }, set:function(a) {
          throw "Not implemented: set$trackAsMenu";
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(l.prototype, "_url", {get:function() {
          return this._as3Object.loaderInfo.url;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(l.prototype, "useHandCursor", {get:function() {
          return this._as3Object.useHandCursor;
        }, set:function(a) {
          this._as3Object.useHandCursor = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(l.prototype, "_visible", {get:function() {
          return this._as3Object.visible;
        }, set:function(a) {
          this._as3Object.visible = 0 !== +a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(l.prototype, "_width", {get:function() {
          return this._as3Object.width;
        }, set:function(a) {
          isNaN(a) || (this._as3Object.width = a);
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(l.prototype, "_x", {get:function() {
          return this._as3Object.x;
        }, set:function(a) {
          isNaN(a) || (this._as3Object.x = a);
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(l.prototype, "_xmouse", {get:function() {
          return this._as3Object.mouseX;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(l.prototype, "_xscale", {get:function() {
          return this._as3Object.scaleX;
        }, set:function(a) {
          isNaN(a) || (this._as3Object.scaleX = a);
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(l.prototype, "_y", {get:function() {
          return this._as3Object.y;
        }, set:function(a) {
          isNaN(a) || (this._as3Object.y = a);
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(l.prototype, "_ymouse", {get:function() {
          return this._as3Object.mouseY;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(l.prototype, "_yscale", {get:function() {
          return this._as3Object.scaleY;
        }, set:function(a) {
          isNaN(a) || (this._as3Object.scaleY = a);
        }, enumerable:!0, configurable:!0});
        l.prototype._addListeners = function() {
          for (var a in this._requiredListeners) {
            ("keyDown" === a ? this._as3Object.stage : this._as3Object).addEventListener(a, this._requiredListeners[a]);
          }
        };
        l.prototype._removeListeners = function() {
          for (var a in this._requiredListeners) {
            ("keyDown" === a ? this._as3Object.stage : this._as3Object).removeEventListener(a, this._requiredListeners[a]);
          }
        };
        l.prototype._keyDownHandler = function(a) {
          for (var d = this._actions, l = 0;l < d.length;l++) {
            var k = d[l];
            k.keyCode && (32 > k.keyCode && v[k.keyCode] === a.asGetPublicProperty("keyCode") || k.keyCode === a.asGetPublicProperty("charCode")) && this._runAction(k);
          }
        };
        l.prototype._mouseEventHandler = function(a) {
          for (var d = this._actions, l = 0;l < d.length;l++) {
            var k = d[l];
            k.stateTransitionFlags === a && this._runAction(k);
          }
        };
        l.prototype._runAction = function(c) {
          this._as3Object.loaderInfo._avm1Context.executeActions(c.actionsBlock, a.getAVM1Object(this._as3Object._parent, this.context));
        };
        l.prototype._initEventsHandlers = function() {
          this.bindEvents([new a.AVM1EventHandler("onDragOut", "dragOut"), new a.AVM1EventHandler("onDragOver", "dragOver"), new a.AVM1EventHandler("onKeyDown", "keyDown"), new a.AVM1EventHandler("onKeyUp", "keyUp"), new a.AVM1EventHandler("onKillFocus", "focusOut", function(a) {
            return [a.relatedObject];
          }), new a.AVM1EventHandler("onLoad", "load"), new a.AVM1EventHandler("onMouseDown", "mouseDown"), new a.AVM1EventHandler("onMouseUp", "mouseUp"), new a.AVM1EventHandler("onPress", "mouseDown"), new a.AVM1EventHandler("onRelease", "mouseUp"), new a.AVM1EventHandler("onReleaseOutside", "releaseOutside"), new a.AVM1EventHandler("onRollOut", "mouseOut"), new a.AVM1EventHandler("onRollOver", "mouseOver"), new a.AVM1EventHandler("onSetFocus", "focusIn", function(a) {
            return [a.relatedObject];
          })]);
        };
        return l;
      }(a.AVM1SymbolBase);
      a.AVM1Button = w;
    })(k.Lib || (k.Lib = {}));
  })(d.AVM1 || (d.AVM1 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      var d = function(d) {
        function k() {
          d.apply(this, arguments);
        }
        __extends(k, d);
        k.createAVM1Class = function() {
          return a.wrapAVM1Class(k, [], "_alpha antiAliasType autoSize background backgroundColor border borderColor bottomScroll condenseWhite embedFonts getNewTextFormat getTextFormat _height _highquality hscroll html htmlText length maxChars maxhscroll maxscroll multiline _name _parent password _quality _rotation scroll selectable setNewTextFormat setTextFormat _soundbuftime tabEnabled tabIndex _target text textColor textHeight textWidth type _url _visible _width wordWrap _x _xmouse _xscale _y _ymouse _yscale".split(" "));
        };
        k.prototype.initAVM1SymbolInstance = function(a, k) {
          d.prototype.initAVM1SymbolInstance.call(this, a, k);
          this._variable = "";
          this._exitFrameHandler = null;
          k._symbol && (this.variable = k._symbol.variableName || "");
          this._initEventsHandlers();
        };
        Object.defineProperty(k.prototype, "_alpha", {get:function() {
          return this._as3Object.alpha;
        }, set:function(a) {
          this._as3Object.alpha = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "antiAliasType", {get:function() {
          return this._as3Object.antiAliasType;
        }, set:function(a) {
          this._as3Object.antiAliasType = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "autoSize", {get:function() {
          return this._as3Object.autoSize;
        }, set:function(a) {
          !0 === a ? a = "left" : !1 === a && (a = "none");
          this._as3Object.autoSize = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "background", {get:function() {
          return this._as3Object.background;
        }, set:function(a) {
          this._as3Object.background = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "backgroundColor", {get:function() {
          return this._as3Object.backgroundColor;
        }, set:function(a) {
          this._as3Object.backgroundColor = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "border", {get:function() {
          return this._as3Object.border;
        }, set:function(a) {
          this._as3Object.border = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "borderColor", {get:function() {
          return this._as3Object.borderColor;
        }, set:function(a) {
          this._as3Object.borderColor = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "bottomScroll", {get:function() {
          return this._as3Object.bottomScrollV;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "condenseWhite", {get:function() {
          return this._as3Object.condenseWhite;
        }, set:function(a) {
          this._as3Object.condenseWhite = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "embedFonts", {get:function() {
          return this._as3Object.embedFonts;
        }, set:function(a) {
          this._as3Object.embedFonts = a;
        }, enumerable:!0, configurable:!0});
        k.prototype.getNewTextFormat = function() {
          return this._as3Object.defaultTextFormat;
        };
        k.prototype.getTextFormat = function() {
          return this._as3Object.getTextFormat;
        };
        Object.defineProperty(k.prototype, "_height", {get:function() {
          return this._as3Object.height;
        }, set:function(a) {
          isNaN(a) || (this._as3Object.height = a);
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "_highquality", {get:function() {
          return 1;
        }, set:function(a) {
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "hscroll", {get:function() {
          return this._as3Object.scrollH;
        }, set:function(a) {
          this._as3Object.scrollH = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "html", {get:function() {
          throw "Not implemented: get$_html";
        }, set:function(a) {
          throw "Not implemented: set$_html";
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "htmlText", {get:function() {
          return this._as3Object.htmlText;
        }, set:function(a) {
          this._as3Object.htmlText = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "length", {get:function() {
          return this._as3Object.length;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "maxChars", {get:function() {
          return this._as3Object.maxChars;
        }, set:function(a) {
          this._as3Object.maxChars = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "maxhscroll", {get:function() {
          return this._as3Object.maxScrollH;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "maxscroll", {get:function() {
          return this._as3Object.maxScrollV;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "multiline", {get:function() {
          return this._as3Object.multiline;
        }, set:function(a) {
          this._as3Object.multiline = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "_name", {get:function() {
          return this.as3Object._name;
        }, set:function(a) {
          this.as3Object._name = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "_parent", {get:function() {
          return this._as3Object.parent;
        }, set:function(a) {
          throw "Not implemented: set$_parent";
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "password", {get:function() {
          return this._as3Object.displayAsPassword;
        }, set:function(a) {
          this._as3Object.displayAsPassword = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "_quality", {get:function() {
          return "HIGH";
        }, set:function(a) {
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "_rotation", {get:function() {
          return this._as3Object.rotation;
        }, set:function(a) {
          this._as3Object.rotation = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "scroll", {get:function() {
          return this._as3Object.scrollV;
        }, set:function(a) {
          this._as3Object.scrollV = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "selectable", {get:function() {
          return this._as3Object.selectable;
        }, set:function(a) {
          this._as3Object.selectable = a;
        }, enumerable:!0, configurable:!0});
        k.prototype.setNewTextFormat = function(a) {
          this._as3Object.defaultTextFormat = a;
        };
        k.prototype.setTextFormat = function() {
          this._as3Object.setTextFormat.apply(this._as3Object, arguments);
        };
        Object.defineProperty(k.prototype, "_soundbuftime", {get:function() {
          throw "Not implemented: get$_soundbuftime";
        }, set:function(a) {
          throw "Not implemented: set$_soundbuftime";
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "tabEnabled", {get:function() {
          return this._as3Object.tabEnabled;
        }, set:function(a) {
          this._as3Object.tabEnabled = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "tabIndex", {get:function() {
          return this._as3Object.tabIndex;
        }, set:function(a) {
          this._as3Object.tabIndex = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "_target", {get:function() {
          return a.AVM1Utils.getTarget(this);
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "text", {get:function() {
          return this._as3Object.text;
        }, set:function(a) {
          this._as3Object.text = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "textColor", {get:function() {
          return this._as3Object.textColor;
        }, set:function(a) {
          this._as3Object.textColor = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "textHeight", {get:function() {
          return this._as3Object.textHeight;
        }, set:function(a) {
          throw "Not supported: set$textHeight";
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "textWidth", {get:function() {
          return this._as3Object.textWidth;
        }, set:function(a) {
          throw "Not supported: set$textWidth";
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "type", {get:function() {
          return this._as3Object.type;
        }, set:function(a) {
          this._as3Object.type = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "_url", {get:function() {
          return this._as3Object.loaderInfo.url;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "variable", {get:function() {
          return this._variable;
        }, set:function(a) {
          if (a !== this._variable) {
            var d = this.as3Object;
            this._exitFrameHandler && !a && (d.removeEventListener("exitFrame", this._exitFrameHandler), this._exitFrameHandler = null);
            this._variable = a;
            !this._exitFrameHandler && a && (this._exitFrameHandler = this._onAS3ObjectExitFrame.bind(this), d.addEventListener("exitFrame", this._exitFrameHandler));
          }
        }, enumerable:!0, configurable:!0});
        k.prototype._onAS3ObjectExitFrame = function() {
          this._syncTextFieldValue(this.as3Object, this._variable);
        };
        k.prototype._syncTextFieldValue = function(d, k) {
          var c;
          c = 0 <= k.indexOf(".") || 0 <= k.indexOf(":");
          var g = this.context.utils;
          if (c) {
            var n = k.split(/[.:\/]/g);
            k = n.pop();
            if ("_root" == n[0] || "" === n[0]) {
              if (null === d.root) {
                return;
              }
              c = a.getAVM1Object(d.root, this.context);
              n.shift();
              "" === n[0] && n.shift();
            } else {
              c = a.getAVM1Object(d._parent, this.context);
            }
            for (;0 < n.length;) {
              var t = n.shift();
              c = g.getProperty(c, t);
              if (!c) {
                return;
              }
            }
          } else {
            c = a.getAVM1Object(d._parent, this.context);
          }
          g.hasProperty(c, k) || g.setProperty(c, k, d.text);
          d.text = "" + g.getProperty(c, k);
        };
        Object.defineProperty(k.prototype, "_visible", {get:function() {
          return this._as3Object.visible;
        }, set:function(a) {
          this._as3Object.visible = 0 !== +a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "_width", {get:function() {
          return this._as3Object.width;
        }, set:function(a) {
          isNaN(a) || (this._as3Object.width = a);
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "wordWrap", {get:function() {
          return this._as3Object.wordWrap;
        }, set:function(a) {
          this._as3Object.wordWrap = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "_x", {get:function() {
          return this._as3Object.x;
        }, set:function(a) {
          isNaN(a) || (this._as3Object.x = a);
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "_xmouse", {get:function() {
          return this._as3Object.mouseX;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "_xscale", {get:function() {
          return this._as3Object.scaleX;
        }, set:function(a) {
          isNaN(a) || (this._as3Object.scaleX = a);
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "_y", {get:function() {
          return this._as3Object.y;
        }, set:function(a) {
          isNaN(a) || (this._as3Object.y = a);
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "_ymouse", {get:function() {
          return this._as3Object.mouseY;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(k.prototype, "_yscale", {get:function() {
          return this._as3Object.scaleY;
        }, set:function(a) {
          isNaN(a) || (this._as3Object.scaleY = a);
        }, enumerable:!0, configurable:!0});
        k.prototype._initEventsHandlers = function() {
          this.bindEvents([new a.AVM1EventHandler("onDragOut", "dragOut"), new a.AVM1EventHandler("onDragOver", "dragOver"), new a.AVM1EventHandler("onKeyDown", "keyDown"), new a.AVM1EventHandler("onKeyUp", "keyUp"), new a.AVM1EventHandler("onKillFocus", "focusOut", function(a) {
            return [a.relatedObject];
          }), new a.AVM1EventHandler("onLoad", "load"), new a.AVM1EventHandler("onMouseDown", "mouseDown"), new a.AVM1EventHandler("onMouseUp", "mouseUp"), new a.AVM1EventHandler("onPress", "mouseDown"), new a.AVM1EventHandler("onRelease", "mouseUp"), new a.AVM1EventHandler("onReleaseOutside", "releaseOutside"), new a.AVM1EventHandler("onRollOut", "mouseOut"), new a.AVM1EventHandler("onRollOver", "mouseOver"), new a.AVM1EventHandler("onSetFocus", "focusIn", function(a) {
            return [a.relatedObject];
          })]);
        };
        return k;
      }(a.AVM1SymbolBase);
      a.AVM1TextField = d;
    })(d.Lib || (d.Lib = {}));
  })(d.AVM1 || (d.AVM1 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var k = d.AVM2.AS.flash, w = function() {
        function d(k) {
          this._target = a.AVM1Utils.resolveTarget(k);
        }
        d.createAVM1Class = function() {
          return a.wrapAVM1Class(d, [], ["getRGB", "getTransform", "setRGB", "setTransform"]);
        };
        d.prototype.getRGB = function() {
          return this.getTransform().asGetPublicProperty("color");
        };
        d.prototype.getTransform = function() {
          return this._target.as3Object.transform.colorTransform;
        };
        d.prototype.setRGB = function(a) {
          var d = new k.geom.ColorTransform;
          d.asSetPublicProperty("color", a);
          this.setTransform(d);
        };
        d.prototype.setTransform = function(a) {
          this._target.as3Object.transform.colorTransform = a;
        };
        return d;
      }();
      a.AVM1Color = w;
    })(k.Lib || (k.Lib = {}));
  })(d.AVM1 || (d.AVM1 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var k = d.AVM2.AS.flash, w = function() {
        function d(k) {
          this._target = a.AVM1Utils.resolveTarget(k);
        }
        d.createAVM1Class = function() {
          return a.wrapAVM1Class(d, [], ["matrix", "concatenatedMatrix", "colorTransform", "pixelBounds"]);
        };
        Object.defineProperty(d.prototype, "matrix", {get:function() {
          return this._target.as3Object.transform.matrix;
        }, set:function(a) {
          if (a instanceof k.geom.Matrix) {
            this._target.as3Object.transform.matrix = a;
          } else {
            if (null != a) {
              var d = this.matrix;
              a.asHasProperty(void 0, "a", 0) && (d.a = a.asGetPublicProperty("a"));
              a.asHasProperty(void 0, "b", 0) && (d.b = a.asGetPublicProperty("b"));
              a.asHasProperty(void 0, "c", 0) && (d.c = a.asGetPublicProperty("c"));
              a.asHasProperty(void 0, "d", 0) && (d.d = a.asGetPublicProperty("d"));
              a.asHasProperty(void 0, "tx", 0) && (d.tx = a.asGetPublicProperty("tx"));
              a.asHasProperty(void 0, "ty", 0) && (d.ty = a.asGetPublicProperty("ty"));
              this._target.as3Object.transform.matrix = d;
            }
          }
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(d.prototype, "concatenatedMatrix", {get:function() {
          return this._target.as3Object.transform.concatenatedMatrix;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(d.prototype, "colorTransform", {get:function() {
          return this._target.as3Object.transform.colorTransform;
        }, set:function(a) {
          this._target.as3Object.transform.colorTransform = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(d.prototype, "pixelBounds", {get:function() {
          return this._target.as3Object.pixelBounds;
        }, enumerable:!0, configurable:!0});
        return d;
      }();
      a.AVM1Transform = w;
    })(k.Lib || (k.Lib = {}));
  })(d.AVM1 || (d.AVM1 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var k = d.Debug.notImplemented, w = Object.prototype.asGetProperty, v = Object.prototype.asSetProperty, u = Object.prototype.asCallProperty, l = Object.prototype.asHasProperty, c = Object.prototype.asHasOwnProperty, g = Object.prototype.asHasTraitProperty, q = Object.prototype.asDeleteProperty, t = function(d) {
        function h() {
        }
        __extends(h, d);
        h.prototype.setTarget = function(a) {
          this._target = a;
        };
        h.prototype._isInternalProperty = function(a, b, e) {
          return !this._target || a || "__proto__" === b || "__constructor__" === b ? !0 : !1;
        };
        h.prototype.asGetProperty = function(a, b, e) {
          return this._isInternalProperty(a, b, e) ? w.call(this, a, b, e) : this._target.asGetPublicProperty(b);
        };
        h.prototype.asGetNumericProperty = function(a) {
          return this._target.asGetNumericProperty(a);
        };
        h.prototype.asSetNumericProperty = function(a, b) {
          return this._target.asSetNumericProperty(a, b);
        };
        h.prototype.asSetProperty = function(a, b, e, c) {
          if (this._isInternalProperty(a, b, e)) {
            v.call(this, a, b, e, c);
          } else {
            return this._target.asSetPublicProperty(b, c);
          }
        };
        h.prototype.asCallProperty = function(a, b, e, c, d) {
          return this._isInternalProperty(a, b, e) ? u.call(this, a, b, e, !1, d) : this._target.asCallPublicProperty(b, d);
        };
        h.prototype.asHasProperty = function(a, b, e) {
          return this._isInternalProperty(a, b, e) ? l.call(this, a, b, e) : this._target.asHasProperty(void 0, b, 0);
        };
        h.prototype.asHasOwnProperty = function(a, b, e) {
          return this._isInternalProperty(a, b, e) ? c.call(this, a, b, e) : this._target.asHasOwnProperty(void 0, b, 0);
        };
        h.prototype.asDeleteProperty = function(a, b, e) {
          if (g.call(this, a, b, e)) {
            return q.call(this, a, b, e);
          }
          k("AVM1Proxy asDeleteProperty");
          return !1;
        };
        h.prototype.asNextName = function(a) {
          k("AVM1Proxy asNextName");
        };
        h.prototype.asNextValue = function(a) {
          k("AVM1Proxy asNextValue");
        };
        h.prototype.asNextNameIndex = function(a) {
          k("AVM1Proxy asNextNameIndex");
        };
        h.prototype.proxyNativeMethod = function(a) {
          this._target.asSetPublicProperty(a, this._target[a].bind(this._target));
        };
        h.wrap = function(c, b) {
          function e() {
            var e = Object.create(c.prototype);
            a.AVM1TextFormat.apply(e, arguments);
            this.setTarget(e);
            b && b.methods && b.methods.forEach(this.proxyNativeMethod, this);
          }
          e.prototype = h.prototype;
          return e;
        };
        return h;
      }(d.AVM2.AS.ASObject);
      a.AVM1Proxy = t;
    })(k.Lib || (k.Lib = {}));
  })(d.AVM1 || (d.AVM1 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var k = d.AVM2.AS.flash, w = d.AVM2.Runtime.asCoerceString, v = function(d) {
        function l(a, d, l, t, m, h, f, b, e, r, p, u, v) {
          k.text.TextFormat.apply(this, arguments);
        }
        __extends(l, d);
        l.createAVM1Class = function() {
          return a.AVM1Proxy.wrap(l, {methods:["getTextExtent"]});
        };
        l.prototype.getTextExtent = function(a, d) {
          a = w(a);
          d = +d;
          var q = l._measureTextField;
          q || (q = new k.text.TextField, q.multiline = !0, l._measureTextField = q);
          !isNaN(d) && 0 < d ? (q.width = d + 4, q.wordWrap = !0) : q.wordWrap = !1;
          q.defaultTextFormat = this;
          q.text = a;
          var t = {}, m = q.textWidth, h = q.textHeight;
          t.asSetPublicProperty("width", m);
          t.asSetPublicProperty("height", h);
          t.asSetPublicProperty("textFieldWidth", m + 4);
          t.asSetPublicProperty("textFieldHeight", h + 4);
          q = q.getLineMetrics();
          t.asSetPublicProperty("ascent", q.asGetPublicProperty("ascent"));
          t.asSetPublicProperty("descent", q.asGetPublicProperty("descent"));
          return t;
        };
        return l;
      }(k.text.TextFormat);
      a.AVM1TextFormat = v;
    })(k.Lib || (k.Lib = {}));
  })(d.AVM1 || (d.AVM1 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var n = d.AVM2.AS.flash, w = function(d) {
        function u() {
          d.apply(this, arguments);
        }
        __extends(u, d);
        u.createAVM1Class = function() {
          var d = a.AVM1Proxy.wrap(u, null);
          d.asSetPublicProperty("loadBitmap", u.loadBitmap);
          return d;
        };
        u.loadBitmap = function(a) {
          a = asCoerceString(a);
          return (a = k.AVM1Context.instance.getAsset(a)) && a.symbolProps instanceof n.display.BitmapSymbol ? (a = u.initializeFrom(a), a.class.instanceConstructorNoInitialize.call(a), a) : null;
        };
        return u;
      }(n.display.BitmapData);
      a.AVM1BitmapData = w;
    })(k.Lib || (k.Lib = {}));
  })(d.AVM1 || (d.AVM1 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var k = d.AVM2.AS.flash, w = function() {
        function d() {
        }
        d.createAVM1Class = function() {
          return a.wrapAVM1Class(d, ["available", "addCallback", "call"], []);
        };
        Object.defineProperty(d, "available", {get:function() {
          return k.external.ExternalInterface.asGetPublicProperty("available");
        }, enumerable:!0, configurable:!0});
        d.addCallback = function(a, d, c) {
          try {
            return k.external.ExternalInterface.asCallPublicProperty("addCallback", [a, function() {
              return c.apply(d, arguments);
            }]), !0;
          } catch (g) {
          }
          return !1;
        };
        d.call = function(a) {
          var d = Array.prototype.slice.call(arguments, 0);
          return k.external.ExternalInterface.asCallPublicProperty("call", d);
        };
        return d;
      }();
      a.AVM1ExternalInterface = w;
    })(k.Lib || (k.Lib = {}));
  })(d.AVM1 || (d.AVM1 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var k = d.AVM2.AS.flash, w = function(d) {
        function u(k) {
          d.call(this);
          this._target = a.AVM1Utils.resolveTarget(k);
          this._linkageID = this._channel = this._sound = null;
        }
        __extends(u, d);
        u.createAVM1Class = function() {
          return a.wrapAVM1Class(u, [], "attachSound duration getBytesLoaded getBytesTotal getPan setPan getTransform setTransform getVolume setVolume start stop".split(" "));
        };
        u.prototype.attachSound = function(a) {
          var c = this.context.getAsset(a);
          c && (c = Object.create(c.symbolProps), c = k.media.Sound.initializeFrom(c), k.media.Sound.instanceConstructorNoInitialize.call(c), this._linkageID = a, this._sound = c);
        };
        u.prototype.loadSound = function(a, c) {
        };
        u.prototype.getBytesLoaded = function() {
          return 0;
        };
        u.prototype.getBytesTotal = function() {
          return 0;
        };
        u.prototype.getPan = function() {
          var a = this._channel && this._channel.soundTransform;
          return a ? 100 * a.asGetPublicProperty("pan") : 0;
        };
        u.prototype.setPan = function(a) {
          var c = this._channel && this._channel.soundTransform;
          c && (c.asSetPublicProperty("pan", a / 100), this._channel.soundTransform = c);
        };
        u.prototype.getTransform = function() {
          return null;
        };
        u.prototype.setTransform = function(a) {
        };
        u.prototype.getVolume = function() {
          var a = this._channel && this._channel.soundTransform;
          return a ? 100 * a.asGetPublicProperty("volume") : 0;
        };
        u.prototype.setVolume = function(a) {
          var c = this._channel && this._channel.soundTransform;
          c && (c.asSetPublicProperty("volume", a / 100), this._channel.soundTransform = c);
        };
        u.prototype.start = function(a, c) {
          this._sound && (a = isNaN(a) || 0 > a ? 0 : +a, c = isNaN(c) || 1 > c ? 1 : Math.floor(c), this._stopSoundChannel(), this._channel = this._sound.play(a, c - 1));
        };
        u.prototype._stopSoundChannel = function() {
          this._channel && (this._channel.stop(), this._channel = null);
        };
        u.prototype.stop = function(a) {
          a && a !== this._linkageID || this._stopSoundChannel();
        };
        return u;
      }(a.AVM1NativeObject);
      a.AVM1Sound = w;
    })(k.Lib || (k.Lib = {}));
  })(d.AVM1 || (d.AVM1 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var k = d.AVM2.AS.flash, w = function() {
        function d() {
        }
        d.createAVM1Class = function() {
          return a.wrapAVM1Class(d, ["capabilities", "security"], []);
        };
        Object.defineProperty(d, "capabilities", {get:function() {
          return k.system.Capabilities;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(d, "security", {get:function() {
          return k.system.Security;
        }, enumerable:!0, configurable:!0});
        return d;
      }();
      a.AVM1System = w;
    })(k.Lib || (k.Lib = {}));
  })(d.AVM1 || (d.AVM1 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var k = d.AVM2.AS.flash, w = function() {
        function d() {
          this._loader = new k.display.Loader;
        }
        d.createAVM1Class = function() {
          return a.wrapAVM1Class(d, [], ["loadClip", "unloadClip", "getProgress"]);
        };
        d.prototype.initAVM1ObjectInstance = function(a) {
        };
        d.prototype.loadClip = function(d, l) {
          this._target = "number" === typeof l ? a.AVM1Utils.resolveLevel(l) : a.AVM1Utils.resolveTarget(l);
          this._target.as3Object.addChild(this._loader);
          this._loader.contentLoaderInfo.addEventListener(k.events.Event.OPEN, this.openHandler.bind(this));
          this._loader.contentLoaderInfo.addEventListener(k.events.ProgressEvent.PROGRESS, this.progressHandler.bind(this));
          this._loader.contentLoaderInfo.addEventListener(k.events.IOErrorEvent.IO_ERROR, this.ioErrorHandler.bind(this));
          this._loader.contentLoaderInfo.addEventListener(k.events.Event.COMPLETE, this.completeHandler.bind(this));
          this._loader.contentLoaderInfo.addEventListener(k.events.Event.INIT, this.initHandler.bind(this));
          this._loader.load(new k.net.URLRequest(d));
          return !0;
        };
        d.prototype.unloadClip = function(d) {
          ("number" === typeof d ? a.AVM1Utils.resolveLevel(d) : a.AVM1Utils.resolveTarget(d)).as3Object.removeChild(this._loader);
          return !0;
        };
        d.prototype.getProgress = function(a) {
          return this._loader.contentLoaderInfo.bytesLoaded;
        };
        d.prototype._broadcastMessage = function(d, k) {
          void 0 === k && (k = null);
          a.avm1BroadcastEvent(this._target.context, this, d, k);
        };
        d.prototype.openHandler = function(a) {
          this._broadcastMessage("onLoadStart", [this._target]);
        };
        d.prototype.progressHandler = function(a) {
          this._broadcastMessage("onLoadProgress", [this._target, a.bytesLoaded, a.bytesTotal]);
        };
        d.prototype.ioErrorHandler = function(a) {
          this._broadcastMessage("onLoadError", [this._target, a.errorID, 501]);
        };
        d.prototype.completeHandler = function(a) {
          this._broadcastMessage("onLoadComplete", [this._target]);
        };
        d.prototype.initHandler = function(a) {
          var d = function() {
            this._target.as3Object.removeEventListener(k.events.Event.EXIT_FRAME, d);
            this._broadcastMessage("onLoadInit", [this._target]);
          }.bind(this);
          this._target.as3Object.addEventListener(k.events.Event.EXIT_FRAME, d);
        };
        return d;
      }();
      a.AVM1MovieClipLoader = w;
    })(k.Lib || (k.Lib = {}));
  })(d.AVM1 || (d.AVM1 = {}));
})(Shumway || (Shumway = {}));
console.timeEnd("Load AVM1 Dependencies");
(function(d) {
  (function(k) {
    function a(a, b, e) {
      return c && e ? "string" === typeof b ? (a = d.ColorUtilities.cssStyleToRGBA(b), d.ColorUtilities.rgbaToCSSStyle(e.transformRGBA(a))) : b instanceof CanvasGradient && b._template ? b._template.createCanvasGradient(a, e) : b : b;
    }
    var n = d.NumberUtilities.clamp;
    (function(a) {
      a[a.None = 0] = "None";
      a[a.Brief = 1] = "Brief";
      a[a.Verbose = 2] = "Verbose";
    })(k.TraceLevel || (k.TraceLevel = {}));
    var w = d.Metrics.Counter.instance;
    k.frameCounter = new d.Metrics.Counter(!0);
    k.traceLevel = 2;
    k.writer = null;
    k.frameCount = function(a) {
      w.count(a);
      k.frameCounter.count(a);
    };
    k.timelineBuffer = new d.Tools.Profiler.TimelineBuffer("GFX");
    k.enterTimeline = function(a, b) {
    };
    k.leaveTimeline = function(a, b) {
    };
    var v = null, u = null, l = null, c = !0;
    c && "undefined" !== typeof CanvasRenderingContext2D && (v = CanvasGradient.prototype.addColorStop, u = CanvasRenderingContext2D.prototype.createLinearGradient, l = CanvasRenderingContext2D.prototype.createRadialGradient, CanvasRenderingContext2D.prototype.createLinearGradient = function(a, b, e, c) {
      return (new q(a, b, e, c)).createCanvasGradient(this, null);
    }, CanvasRenderingContext2D.prototype.createRadialGradient = function(a, b, e, c, d, f) {
      return (new t(a, b, e, c, d, f)).createCanvasGradient(this, null);
    }, CanvasGradient.prototype.addColorStop = function(a, b) {
      v.call(this, a, b);
      this._template.addColorStop(a, b);
    });
    var g = function() {
      return function(a, b) {
        this.offset = a;
        this.color = b;
      };
    }(), q = function() {
      function b(a, e, c, d) {
        this.x0 = a;
        this.y0 = e;
        this.x1 = c;
        this.y1 = d;
        this.colorStops = [];
      }
      b.prototype.addColorStop = function(a, b) {
        this.colorStops.push(new g(a, b));
      };
      b.prototype.createCanvasGradient = function(b, e) {
        for (var c = u.call(b, this.x0, this.y0, this.x1, this.y1), d = this.colorStops, f = 0;f < d.length;f++) {
          var g = d[f], h = g.offset, g = g.color, g = e ? a(b, g, e) : g;
          v.call(c, h, g);
        }
        c._template = this;
        c._transform = this._transform;
        return c;
      };
      return b;
    }(), t = function() {
      function b(a, e, c, d, f, g) {
        this.x0 = a;
        this.y0 = e;
        this.r0 = c;
        this.x1 = d;
        this.y1 = f;
        this.r1 = g;
        this.colorStops = [];
      }
      b.prototype.addColorStop = function(a, b) {
        this.colorStops.push(new g(a, b));
      };
      b.prototype.createCanvasGradient = function(b, e) {
        for (var c = l.call(b, this.x0, this.y0, this.r0, this.x1, this.y1, this.r1), d = this.colorStops, f = 0;f < d.length;f++) {
          var g = d[f], h = g.offset, g = g.color, g = e ? a(b, g, e) : g;
          v.call(c, h, g);
        }
        c._template = this;
        c._transform = this._transform;
        return c;
      };
      return b;
    }(), m;
    (function(a) {
      a[a.ClosePath = 1] = "ClosePath";
      a[a.MoveTo = 2] = "MoveTo";
      a[a.LineTo = 3] = "LineTo";
      a[a.QuadraticCurveTo = 4] = "QuadraticCurveTo";
      a[a.BezierCurveTo = 5] = "BezierCurveTo";
      a[a.ArcTo = 6] = "ArcTo";
      a[a.Rect = 7] = "Rect";
      a[a.Arc = 8] = "Arc";
      a[a.Save = 9] = "Save";
      a[a.Restore = 10] = "Restore";
      a[a.Transform = 11] = "Transform";
    })(m || (m = {}));
    var h = function() {
      function a(b) {
        this._commands = new Uint8Array(a._arrayBufferPool.acquire(8), 0, 8);
        this._commandPosition = 0;
        this._data = new Float64Array(a._arrayBufferPool.acquire(8 * Float64Array.BYTES_PER_ELEMENT), 0, 8);
        this._dataPosition = 0;
        b instanceof a && this.addPath(b);
      }
      a._apply = function(a, b) {
        var e = a._commands, c = a._data, d = 0, f = 0;
        b.beginPath();
        for (var g = a._commandPosition;d < g;) {
          switch(e[d++]) {
            case 1:
              b.closePath();
              break;
            case 2:
              b.moveTo(c[f++], c[f++]);
              break;
            case 3:
              b.lineTo(c[f++], c[f++]);
              break;
            case 4:
              b.quadraticCurveTo(c[f++], c[f++], c[f++], c[f++]);
              break;
            case 5:
              b.bezierCurveTo(c[f++], c[f++], c[f++], c[f++], c[f++], c[f++]);
              break;
            case 6:
              b.arcTo(c[f++], c[f++], c[f++], c[f++], c[f++]);
              break;
            case 7:
              b.rect(c[f++], c[f++], c[f++], c[f++]);
              break;
            case 8:
              b.arc(c[f++], c[f++], c[f++], c[f++], c[f++], !!c[f++]);
              break;
            case 9:
              b.save();
              break;
            case 10:
              b.restore();
              break;
            case 11:
              b.transform(c[f++], c[f++], c[f++], c[f++], c[f++], c[f++]);
          }
        }
      };
      a.prototype._ensureCommandCapacity = function(b) {
        this._commands = a._arrayBufferPool.ensureUint8ArrayLength(this._commands, b);
      };
      a.prototype._ensureDataCapacity = function(b) {
        this._data = a._arrayBufferPool.ensureFloat64ArrayLength(this._data, b);
      };
      a.prototype._writeCommand = function(a) {
        this._commandPosition >= this._commands.length && this._ensureCommandCapacity(this._commandPosition + 1);
        this._commands[this._commandPosition++] = a;
      };
      a.prototype._writeData = function(a, b, c, e, d, f) {
        var g = arguments.length;
        this._dataPosition + g >= this._data.length && this._ensureDataCapacity(this._dataPosition + g);
        var h = this._data, k = this._dataPosition;
        h[k] = a;
        h[k + 1] = b;
        2 < g && (h[k + 2] = c, h[k + 3] = e, 4 < g && (h[k + 4] = d, 6 === g && (h[k + 5] = f)));
        this._dataPosition += g;
      };
      a.prototype.closePath = function() {
        this._writeCommand(1);
      };
      a.prototype.moveTo = function(a, b) {
        this._writeCommand(2);
        this._writeData(a, b);
      };
      a.prototype.lineTo = function(a, b) {
        this._writeCommand(3);
        this._writeData(a, b);
      };
      a.prototype.quadraticCurveTo = function(a, b, c, e) {
        this._writeCommand(4);
        this._writeData(a, b, c, e);
      };
      a.prototype.bezierCurveTo = function(a, b, c, e, d, f) {
        this._writeCommand(5);
        this._writeData(a, b, c, e, d, f);
      };
      a.prototype.arcTo = function(a, b, c, e, d) {
        this._writeCommand(6);
        this._writeData(a, b, c, e, d);
      };
      a.prototype.rect = function(a, b, c, e) {
        this._writeCommand(7);
        this._writeData(a, b, c, e);
      };
      a.prototype.arc = function(a, b, c, e, d, f) {
        this._writeCommand(8);
        this._writeData(a, b, c, e, d, +f);
      };
      a.prototype.addPath = function(a, b) {
        b && (this._writeCommand(9), this._writeCommand(11), this._writeData(b.a, b.b, b.c, b.d, b.e, b.f));
        var c = this._commandPosition + a._commandPosition;
        c >= this._commands.length && this._ensureCommandCapacity(c);
        for (var e = this._commands, d = a._commands, f = this._commandPosition, g = 0;f < c;f++) {
          e[f] = d[g++];
        }
        this._commandPosition = c;
        c = this._dataPosition + a._dataPosition;
        c >= this._data.length && this._ensureDataCapacity(c);
        e = this._data;
        d = a._data;
        f = this._dataPosition;
        for (g = 0;f < c;f++) {
          e[f] = d[g++];
        }
        this._dataPosition = c;
        b && this._writeCommand(10);
      };
      a._arrayBufferPool = new d.ArrayBufferPool;
      return a;
    }();
    k.Path = h;
    if ("undefined" !== typeof CanvasRenderingContext2D && ("undefined" === typeof Path2D || !Path2D.prototype.addPath)) {
      var f = CanvasRenderingContext2D.prototype.fill;
      CanvasRenderingContext2D.prototype.fill = function(a, b) {
        arguments.length && (a instanceof h ? h._apply(a, this) : b = a);
        b ? f.call(this, b) : f.call(this);
      };
      var b = CanvasRenderingContext2D.prototype.stroke;
      CanvasRenderingContext2D.prototype.stroke = function(a, c) {
        arguments.length && (a instanceof h ? h._apply(a, this) : c = a);
        c ? b.call(this, c) : b.call(this);
      };
      var e = CanvasRenderingContext2D.prototype.clip;
      CanvasRenderingContext2D.prototype.clip = function(a, b) {
        arguments.length && (a instanceof h ? h._apply(a, this) : b = a);
        b ? e.call(this, b) : e.call(this);
      };
      window.Path2D = h;
    }
    if ("undefined" !== typeof CanvasPattern && Path2D.prototype.addPath) {
      m = function(a) {
        this._transform = a;
        this._template && (this._template._transform = a);
      };
      CanvasPattern.prototype.setTransform || (CanvasPattern.prototype.setTransform = m);
      CanvasGradient.prototype.setTransform || (CanvasGradient.prototype.setTransform = m);
      var r = CanvasRenderingContext2D.prototype.fill, p = CanvasRenderingContext2D.prototype.stroke;
      CanvasRenderingContext2D.prototype.fill = function(a, b) {
        var c = !!this.fillStyle._transform;
        if ((this.fillStyle instanceof CanvasPattern || this.fillStyle instanceof CanvasGradient) && c && a instanceof Path2D) {
          var c = this.fillStyle._transform, e;
          try {
            e = c.inverse();
          } catch (d) {
            e = c = k.Geometry.Matrix.createIdentitySVGMatrix();
          }
          this.transform(c.a, c.b, c.c, c.d, c.e, c.f);
          c = new Path2D;
          c.addPath(a, e);
          r.call(this, c, b);
          this.transform(e.a, e.b, e.c, e.d, e.e, e.f);
        } else {
          0 === arguments.length ? r.call(this) : 1 === arguments.length ? r.call(this, a) : 2 === arguments.length && r.call(this, a, b);
        }
      };
      CanvasRenderingContext2D.prototype.stroke = function(a) {
        var b = !!this.strokeStyle._transform;
        if ((this.strokeStyle instanceof CanvasPattern || this.strokeStyle instanceof CanvasGradient) && b && a instanceof Path2D) {
          var c = this.strokeStyle._transform, b = c.inverse();
          this.transform(c.a, c.b, c.c, c.d, c.e, c.f);
          c = new Path2D;
          c.addPath(a, b);
          var e = this.lineWidth;
          this.lineWidth *= (b.a + b.d) / 2;
          p.call(this, c);
          this.transform(b.a, b.b, b.c, b.d, b.e, b.f);
          this.lineWidth = e;
        } else {
          0 === arguments.length ? p.call(this) : 1 === arguments.length && p.call(this, a);
        }
      };
    }
    "undefined" !== typeof CanvasRenderingContext2D && function() {
      function a() {
        return k.Geometry.Matrix.createSVGMatrixFromArray(this.mozCurrentTransform);
      }
      var b = "currentTransform" in CanvasRenderingContext2D.prototype;
      CanvasRenderingContext2D.prototype.flashStroke = function(a, c) {
        if (b) {
          var e = this.currentTransform, f = new Path2D;
          f.addPath(a, e);
          var g = this.lineWidth;
          this.setTransform(1, 0, 0, 1, 0, 0);
          switch(c) {
            case 1:
              this.lineWidth = n(g * (d.getScaleX(e) + d.getScaleY(e)) / 2, 1, 1024);
              break;
            case 2:
              this.lineWidth = n(g * d.getScaleY(e), 1, 1024);
              break;
            case 3:
              this.lineWidth = n(g * d.getScaleX(e), 1, 1024);
          }
          this.stroke(f);
          this.setTransform(e.a, e.b, e.c, e.d, e.e, e.f);
          this.lineWidth = g;
        } else {
          this.stroke(a);
        }
      };
      if (!b) {
        if ("mozCurrentTransform" in CanvasRenderingContext2D.prototype) {
          Object.defineProperty(CanvasRenderingContext2D.prototype, "currentTransform", {get:a}), b = !0;
        } else {
          var c = CanvasRenderingContext2D.prototype.setTransform;
          CanvasRenderingContext2D.prototype.setTransform = function(a, b, e, d, f, g) {
            var h = this.currentTransform;
            h.a = a;
            h.b = b;
            h.c = e;
            h.d = d;
            h.e = f;
            h.f = g;
            c.call(this, a, b, e, d, f, g);
          };
          Object.defineProperty(CanvasRenderingContext2D.prototype, "currentTransform", {get:function() {
            return this._currentTransform || (this._currentTransform = k.Geometry.Matrix.createIdentitySVGMatrix());
          }});
        }
      }
    }();
    if ("undefined" !== typeof CanvasRenderingContext2D && void 0 === CanvasRenderingContext2D.prototype.globalColorMatrix) {
      var C = CanvasRenderingContext2D.prototype.fill, I = CanvasRenderingContext2D.prototype.stroke, B = CanvasRenderingContext2D.prototype.fillText, D = CanvasRenderingContext2D.prototype.strokeText;
      Object.defineProperty(CanvasRenderingContext2D.prototype, "globalColorMatrix", {get:function() {
        return this._globalColorMatrix ? this._globalColorMatrix.clone() : null;
      }, set:function(a) {
        a ? this._globalColorMatrix ? this._globalColorMatrix.set(a) : this._globalColorMatrix = a.clone() : this._globalColorMatrix = null;
      }, enumerable:!0, configurable:!0});
      CanvasRenderingContext2D.prototype.fill = function(b, c) {
        var e = null;
        this._globalColorMatrix && (e = this.fillStyle, this.fillStyle = a(this, this.fillStyle, this._globalColorMatrix));
        0 === arguments.length ? C.call(this) : 1 === arguments.length ? C.call(this, b) : 2 === arguments.length && C.call(this, b, c);
        e && (this.fillStyle = e);
      };
      CanvasRenderingContext2D.prototype.stroke = function(b, c) {
        var e = null;
        this._globalColorMatrix && (e = this.strokeStyle, this.strokeStyle = a(this, this.strokeStyle, this._globalColorMatrix));
        0 === arguments.length ? I.call(this) : 1 === arguments.length && I.call(this, b);
        e && (this.strokeStyle = e);
      };
      CanvasRenderingContext2D.prototype.fillText = function(b, c, e, f) {
        var g = null;
        this._globalColorMatrix && (g = this.fillStyle, this.fillStyle = a(this, this.fillStyle, this._globalColorMatrix));
        3 === arguments.length ? B.call(this, b, c, e) : 4 === arguments.length ? B.call(this, b, c, e, f) : d.Debug.unexpected();
        g && (this.fillStyle = g);
      };
      CanvasRenderingContext2D.prototype.strokeText = function(b, c, e, f) {
        var g = null;
        this._globalColorMatrix && (g = this.strokeStyle, this.strokeStyle = a(this, this.strokeStyle, this._globalColorMatrix));
        3 === arguments.length ? D.call(this, b, c, e) : 4 === arguments.length ? D.call(this, b, c, e, f) : d.Debug.unexpected();
        g && (this.strokeStyle = g);
      };
    }
  })(d.GFX || (d.GFX = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    d.ScreenShot = function() {
      return function(a, d, k) {
        this.dataURL = a;
        this.w = d;
        this.h = k;
      };
    }();
  })(d.GFX || (d.GFX = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  var k = function() {
    function a() {
      this._count = 0;
      this._head = this._tail = null;
    }
    Object.defineProperty(a.prototype, "count", {get:function() {
      return this._count;
    }, enumerable:!0, configurable:!0});
    Object.defineProperty(a.prototype, "head", {get:function() {
      return this._head;
    }, enumerable:!0, configurable:!0});
    a.prototype._unshift = function(a) {
      0 === this._count ? this._head = this._tail = a : (a.next = this._head, this._head = a.next.previous = a);
      this._count++;
    };
    a.prototype._remove = function(a) {
      a === this._head && a === this._tail ? this._head = this._tail = null : a === this._head ? (this._head = a.next, this._head.previous = null) : a == this._tail ? (this._tail = a.previous, this._tail.next = null) : (a.previous.next = a.next, a.next.previous = a.previous);
      a.previous = a.next = null;
      this._count--;
    };
    a.prototype.use = function(a) {
      this._head !== a && ((a.next || a.previous || this._tail === a) && this._remove(a), this._unshift(a));
    };
    a.prototype.pop = function() {
      if (!this._tail) {
        return null;
      }
      var a = this._tail;
      this._remove(a);
      return a;
    };
    a.prototype.visit = function(a, d) {
      void 0 === d && (d = !0);
      for (var k = d ? this._head : this._tail;k && a(k);) {
        k = d ? k.next : k.previous;
      }
    };
    return a;
  }();
  d.LRUList = k;
  d.getScaleX = function(a) {
    return a.a;
  };
  d.getScaleY = function(a) {
    return a.d;
  };
})(Shumway || (Shumway = {}));
var Shumway$$inline_747 = Shumway || (Shumway = {}), GFX$$inline_748 = Shumway$$inline_747.GFX || (Shumway$$inline_747.GFX = {}), Option$$inline_749 = Shumway$$inline_747.Options.Option, OptionSet$$inline_750 = Shumway$$inline_747.Options.OptionSet, shumwayOptions$$inline_751 = Shumway$$inline_747.Settings.shumwayOptions, rendererOptions$$inline_752 = shumwayOptions$$inline_751.register(new OptionSet$$inline_750("Renderer Options"));
GFX$$inline_748.imageUpdateOption = rendererOptions$$inline_752.register(new Option$$inline_749("", "imageUpdate", "boolean", !0, "Enable image updating."));
GFX$$inline_748.imageConvertOption = rendererOptions$$inline_752.register(new Option$$inline_749("", "imageConvert", "boolean", !0, "Enable image conversion."));
GFX$$inline_748.stageOptions = shumwayOptions$$inline_751.register(new OptionSet$$inline_750("Stage Renderer Options"));
GFX$$inline_748.forcePaint = GFX$$inline_748.stageOptions.register(new Option$$inline_749("", "forcePaint", "boolean", !1, "Force repainting."));
GFX$$inline_748.ignoreViewport = GFX$$inline_748.stageOptions.register(new Option$$inline_749("", "ignoreViewport", "boolean", !1, "Cull elements outside of the viewport."));
GFX$$inline_748.viewportLoupeDiameter = GFX$$inline_748.stageOptions.register(new Option$$inline_749("", "viewportLoupeDiameter", "number", 256, "Size of the viewport loupe.", {range:{min:1, max:1024, step:1}}));
GFX$$inline_748.disableClipping = GFX$$inline_748.stageOptions.register(new Option$$inline_749("", "disableClipping", "boolean", !1, "Disable clipping."));
GFX$$inline_748.debugClipping = GFX$$inline_748.stageOptions.register(new Option$$inline_749("", "debugClipping", "boolean", !1, "Disable clipping."));
GFX$$inline_748.hud = GFX$$inline_748.stageOptions.register(new Option$$inline_749("", "hud", "boolean", !1, "Enable HUD."));
var webGLOptions$$inline_753 = GFX$$inline_748.stageOptions.register(new OptionSet$$inline_750("WebGL Options"));
GFX$$inline_748.perspectiveCamera = webGLOptions$$inline_753.register(new Option$$inline_749("", "pc", "boolean", !1, "Use perspective camera."));
GFX$$inline_748.perspectiveCameraFOV = webGLOptions$$inline_753.register(new Option$$inline_749("", "pcFOV", "number", 60, "Perspective Camera FOV."));
GFX$$inline_748.perspectiveCameraDistance = webGLOptions$$inline_753.register(new Option$$inline_749("", "pcDistance", "number", 2, "Perspective Camera Distance."));
GFX$$inline_748.perspectiveCameraAngle = webGLOptions$$inline_753.register(new Option$$inline_749("", "pcAngle", "number", 0, "Perspective Camera Angle."));
GFX$$inline_748.perspectiveCameraAngleRotate = webGLOptions$$inline_753.register(new Option$$inline_749("", "pcRotate", "boolean", !1, "Rotate Use perspective camera."));
GFX$$inline_748.perspectiveCameraSpacing = webGLOptions$$inline_753.register(new Option$$inline_749("", "pcSpacing", "number", .01, "Element Spacing."));
GFX$$inline_748.perspectiveCameraSpacingInflate = webGLOptions$$inline_753.register(new Option$$inline_749("", "pcInflate", "boolean", !1, "Rotate Use perspective camera."));
GFX$$inline_748.drawTiles = webGLOptions$$inline_753.register(new Option$$inline_749("", "drawTiles", "boolean", !1, "Draw WebGL Tiles"));
GFX$$inline_748.drawSurfaces = webGLOptions$$inline_753.register(new Option$$inline_749("", "drawSurfaces", "boolean", !1, "Draw WebGL Surfaces."));
GFX$$inline_748.drawSurface = webGLOptions$$inline_753.register(new Option$$inline_749("", "drawSurface", "number", -1, "Draw WebGL Surface #"));
GFX$$inline_748.drawElements = webGLOptions$$inline_753.register(new Option$$inline_749("", "drawElements", "boolean", !0, "Actually call gl.drawElements. This is useful to test if the GPU is the bottleneck."));
GFX$$inline_748.disableSurfaceUploads = webGLOptions$$inline_753.register(new Option$$inline_749("", "disableSurfaceUploads", "boolean", !1, "Disable surface uploads."));
GFX$$inline_748.premultipliedAlpha = webGLOptions$$inline_753.register(new Option$$inline_749("", "premultipliedAlpha", "boolean", !1, "Set the premultipliedAlpha flag on getContext()."));
GFX$$inline_748.unpackPremultiplyAlpha = webGLOptions$$inline_753.register(new Option$$inline_749("", "unpackPremultiplyAlpha", "boolean", !0, "Use UNPACK_PREMULTIPLY_ALPHA_WEBGL in pixelStorei."));
var factorChoices$$inline_754 = {ZERO:0, ONE:1, SRC_COLOR:768, ONE_MINUS_SRC_COLOR:769, DST_COLOR:774, ONE_MINUS_DST_COLOR:775, SRC_ALPHA:770, ONE_MINUS_SRC_ALPHA:771, DST_ALPHA:772, ONE_MINUS_DST_ALPHA:773, SRC_ALPHA_SATURATE:776, CONSTANT_COLOR:32769, ONE_MINUS_CONSTANT_COLOR:32770, CONSTANT_ALPHA:32771, ONE_MINUS_CONSTANT_ALPHA:32772};
GFX$$inline_748.sourceBlendFactor = webGLOptions$$inline_753.register(new Option$$inline_749("", "sourceBlendFactor", "number", factorChoices$$inline_754.ONE, "", {choices:factorChoices$$inline_754}));
GFX$$inline_748.destinationBlendFactor = webGLOptions$$inline_753.register(new Option$$inline_749("", "destinationBlendFactor", "number", factorChoices$$inline_754.ONE_MINUS_SRC_ALPHA, "", {choices:factorChoices$$inline_754}));
var canvas2DOptions$$inline_755 = GFX$$inline_748.stageOptions.register(new OptionSet$$inline_750("Canvas2D Options"));
GFX$$inline_748.clipDirtyRegions = canvas2DOptions$$inline_755.register(new Option$$inline_749("", "clipDirtyRegions", "boolean", !1, "Clip dirty regions."));
GFX$$inline_748.clipCanvas = canvas2DOptions$$inline_755.register(new Option$$inline_749("", "clipCanvas", "boolean", !1, "Clip Regions."));
GFX$$inline_748.cull = canvas2DOptions$$inline_755.register(new Option$$inline_749("", "cull", "boolean", !1, "Enable culling."));
GFX$$inline_748.snapToDevicePixels = canvas2DOptions$$inline_755.register(new Option$$inline_749("", "snapToDevicePixels", "boolean", !1, ""));
GFX$$inline_748.imageSmoothing = canvas2DOptions$$inline_755.register(new Option$$inline_749("", "imageSmoothing", "boolean", !1, ""));
GFX$$inline_748.masking = canvas2DOptions$$inline_755.register(new Option$$inline_749("", "masking", "boolean", !0, "Composite Mask."));
GFX$$inline_748.blending = canvas2DOptions$$inline_755.register(new Option$$inline_749("", "blending", "boolean", !0, ""));
GFX$$inline_748.debugLayers = canvas2DOptions$$inline_755.register(new Option$$inline_749("", "debugLayers", "boolean", !1, ""));
GFX$$inline_748.filters = canvas2DOptions$$inline_755.register(new Option$$inline_749("", "filters", "boolean", !1, ""));
GFX$$inline_748.cacheShapes = canvas2DOptions$$inline_755.register(new Option$$inline_749("", "cacheShapes", "boolean", !0, ""));
GFX$$inline_748.cacheShapesMaxSize = canvas2DOptions$$inline_755.register(new Option$$inline_749("", "cacheShapesMaxSize", "number", 256, "", {range:{min:1, max:1024, step:1}}));
GFX$$inline_748.cacheShapesThreshold = canvas2DOptions$$inline_755.register(new Option$$inline_749("", "cacheShapesThreshold", "number", 256, "", {range:{min:1, max:1024, step:1}}));
(function(d) {
  (function(k) {
    (function(a) {
      function n(a, c, d, f) {
        var g = 1 - f;
        return a * g * g + 2 * c * g * f + d * f * f;
      }
      function w(a, c, d, f, g) {
        var h = g * g, k = 1 - g, l = k * k;
        return a * k * l + 3 * c * g * l + 3 * d * k * h + f * g * h;
      }
      var v = d.NumberUtilities.clamp, u = d.NumberUtilities.pow2, l = d.NumberUtilities.epsilonEquals;
      a.radianToDegrees = function(a) {
        return 180 * a / Math.PI;
      };
      a.degreesToRadian = function(a) {
        return a * Math.PI / 180;
      };
      a.quadraticBezier = n;
      a.quadraticBezierExtreme = function(a, c, d) {
        var f = (a - c) / (a - 2 * c + d);
        return 0 > f ? a : 1 < f ? d : n(a, c, d, f);
      };
      a.cubicBezier = w;
      a.cubicBezierExtremes = function(a, c, d, f) {
        var g = c - a, h;
        h = 2 * (d - c);
        var k = f - d;
        g + k === h && (k *= 1.0001);
        var l = 2 * g - h, m = h - 2 * g, m = Math.sqrt(m * m - 4 * g * (g - h + k));
        h = 2 * (g - h + k);
        g = (l + m) / h;
        l = (l - m) / h;
        m = [];
        0 <= g && 1 >= g && m.push(w(a, c, d, f, g));
        0 <= l && 1 >= l && m.push(w(a, c, d, f, l));
        return m;
      };
      var c = function() {
        function a(b, c) {
          this.x = b;
          this.y = c;
        }
        a.prototype.setElements = function(a, b) {
          this.x = a;
          this.y = b;
          return this;
        };
        a.prototype.set = function(a) {
          this.x = a.x;
          this.y = a.y;
          return this;
        };
        a.prototype.dot = function(a) {
          return this.x * a.x + this.y * a.y;
        };
        a.prototype.squaredLength = function() {
          return this.dot(this);
        };
        a.prototype.distanceTo = function(a) {
          return Math.sqrt(this.dot(a));
        };
        a.prototype.sub = function(a) {
          this.x -= a.x;
          this.y -= a.y;
          return this;
        };
        a.prototype.mul = function(a) {
          this.x *= a;
          this.y *= a;
          return this;
        };
        a.prototype.clone = function() {
          return new a(this.x, this.y);
        };
        a.prototype.toString = function(a) {
          void 0 === a && (a = 2);
          return "{x: " + this.x.toFixed(a) + ", y: " + this.y.toFixed(a) + "}";
        };
        a.prototype.inTriangle = function(a, b, c) {
          var d = a.y * c.x - a.x * c.y + (c.y - a.y) * this.x + (a.x - c.x) * this.y, f = a.x * b.y - a.y * b.x + (a.y - b.y) * this.x + (b.x - a.x) * this.y;
          if (0 > d != 0 > f) {
            return !1;
          }
          a = -b.y * c.x + a.y * (c.x - b.x) + a.x * (b.y - c.y) + b.x * c.y;
          0 > a && (d = -d, f = -f, a = -a);
          return 0 < d && 0 < f && d + f < a;
        };
        a.createEmpty = function() {
          return new a(0, 0);
        };
        a.createEmptyPoints = function(c) {
          for (var d = [], f = 0;f < c;f++) {
            d.push(new a(0, 0));
          }
          return d;
        };
        return a;
      }();
      a.Point = c;
      var g = function() {
        function a(b, c, d) {
          this.x = b;
          this.y = c;
          this.z = d;
        }
        a.prototype.setElements = function(a, b, c) {
          this.x = a;
          this.y = b;
          this.z = c;
          return this;
        };
        a.prototype.set = function(a) {
          this.x = a.x;
          this.y = a.y;
          this.z = a.z;
          return this;
        };
        a.prototype.dot = function(a) {
          return this.x * a.x + this.y * a.y + this.z * a.z;
        };
        a.prototype.cross = function(a) {
          var b = this.z * a.x - this.x * a.z, c = this.x * a.y - this.y * a.x;
          this.x = this.y * a.z - this.z * a.y;
          this.y = b;
          this.z = c;
          return this;
        };
        a.prototype.squaredLength = function() {
          return this.dot(this);
        };
        a.prototype.sub = function(a) {
          this.x -= a.x;
          this.y -= a.y;
          this.z -= a.z;
          return this;
        };
        a.prototype.mul = function(a) {
          this.x *= a;
          this.y *= a;
          this.z *= a;
          return this;
        };
        a.prototype.normalize = function() {
          var a = Math.sqrt(this.squaredLength());
          1E-5 < a ? this.mul(1 / a) : this.setElements(0, 0, 0);
          return this;
        };
        a.prototype.clone = function() {
          return new a(this.x, this.y, this.z);
        };
        a.prototype.toString = function(a) {
          void 0 === a && (a = 2);
          return "{x: " + this.x.toFixed(a) + ", y: " + this.y.toFixed(a) + ", z: " + this.z.toFixed(a) + "}";
        };
        a.createEmpty = function() {
          return new a(0, 0, 0);
        };
        a.createEmptyPoints = function(c) {
          for (var d = [], f = 0;f < c;f++) {
            d.push(new a(0, 0, 0));
          }
          return d;
        };
        return a;
      }();
      a.Point3D = g;
      var q = function() {
        function a(c, d, f, g) {
          this.setElements(c, d, f, g);
          a.allocationCount++;
        }
        a.prototype.setElements = function(a, b, c, d) {
          this.x = a;
          this.y = b;
          this.w = c;
          this.h = d;
        };
        a.prototype.set = function(a) {
          this.x = a.x;
          this.y = a.y;
          this.w = a.w;
          this.h = a.h;
        };
        a.prototype.contains = function(a) {
          var b = a.x + a.w, c = a.y + a.h, d = this.x + this.w, f = this.y + this.h;
          return a.x >= this.x && a.x < d && a.y >= this.y && a.y < f && b > this.x && b <= d && c > this.y && c <= f;
        };
        a.prototype.containsPoint = function(a) {
          return a.x >= this.x && a.x < this.x + this.w && a.y >= this.y && a.y < this.y + this.h;
        };
        a.prototype.isContained = function(a) {
          for (var b = 0;b < a.length;b++) {
            if (a[b].contains(this)) {
              return !0;
            }
          }
          return !1;
        };
        a.prototype.isSmallerThan = function(a) {
          return this.w < a.w && this.h < a.h;
        };
        a.prototype.isLargerThan = function(a) {
          return this.w > a.w && this.h > a.h;
        };
        a.prototype.union = function(a) {
          if (this.isEmpty()) {
            this.set(a);
          } else {
            if (!a.isEmpty()) {
              var b = this.x, c = this.y;
              this.x > a.x && (b = a.x);
              this.y > a.y && (c = a.y);
              var d = this.x + this.w;
              d < a.x + a.w && (d = a.x + a.w);
              var f = this.y + this.h;
              f < a.y + a.h && (f = a.y + a.h);
              this.x = b;
              this.y = c;
              this.w = d - b;
              this.h = f - c;
            }
          }
        };
        a.prototype.isEmpty = function() {
          return 0 >= this.w || 0 >= this.h;
        };
        a.prototype.setEmpty = function() {
          this.h = this.w = this.y = this.x = 0;
        };
        a.prototype.intersect = function(c) {
          var d = a.createEmpty();
          if (this.isEmpty() || c.isEmpty()) {
            return d.setEmpty(), d;
          }
          d.x = Math.max(this.x, c.x);
          d.y = Math.max(this.y, c.y);
          d.w = Math.min(this.x + this.w, c.x + c.w) - d.x;
          d.h = Math.min(this.y + this.h, c.y + c.h) - d.y;
          d.isEmpty() && d.setEmpty();
          this.set(d);
        };
        a.prototype.intersects = function(a) {
          if (this.isEmpty() || a.isEmpty()) {
            return !1;
          }
          var b = Math.max(this.x, a.x), c = Math.max(this.y, a.y), b = Math.min(this.x + this.w, a.x + a.w) - b;
          a = Math.min(this.y + this.h, a.y + a.h) - c;
          return !(0 >= b || 0 >= a);
        };
        a.prototype.intersectsTransformedAABB = function(c, d) {
          var f = a._temporary;
          f.set(c);
          d.transformRectangleAABB(f);
          return this.intersects(f);
        };
        a.prototype.intersectsTranslated = function(a, b, c) {
          if (this.isEmpty() || a.isEmpty()) {
            return !1;
          }
          var d = Math.max(this.x, a.x + b), f = Math.max(this.y, a.y + c);
          b = Math.min(this.x + this.w, a.x + b + a.w) - d;
          a = Math.min(this.y + this.h, a.y + c + a.h) - f;
          return !(0 >= b || 0 >= a);
        };
        a.prototype.area = function() {
          return this.w * this.h;
        };
        a.prototype.clone = function() {
          var c = a.allocate();
          c.set(this);
          return c;
        };
        a.allocate = function() {
          var c = a._dirtyStack;
          return c.length ? c.pop() : new a(12345, 67890, 12345, 67890);
        };
        a.prototype.free = function() {
          a._dirtyStack.push(this);
        };
        a.prototype.snap = function() {
          var a = Math.ceil(this.x + this.w), b = Math.ceil(this.y + this.h);
          this.x = Math.floor(this.x);
          this.y = Math.floor(this.y);
          this.w = a - this.x;
          this.h = b - this.y;
          return this;
        };
        a.prototype.scale = function(a, b) {
          this.x *= a;
          this.y *= b;
          this.w *= a;
          this.h *= b;
          return this;
        };
        a.prototype.offset = function(a, b) {
          this.x += a;
          this.y += b;
          return this;
        };
        a.prototype.resize = function(a, b) {
          this.w += a;
          this.h += b;
          return this;
        };
        a.prototype.expand = function(a, b) {
          this.offset(-a, -b).resize(2 * a, 2 * b);
          return this;
        };
        a.prototype.getCenter = function() {
          return new c(this.x + this.w / 2, this.y + this.h / 2);
        };
        a.prototype.getAbsoluteBounds = function() {
          return new a(0, 0, this.w, this.h);
        };
        a.prototype.toString = function(a) {
          void 0 === a && (a = 2);
          return "{" + this.x.toFixed(a) + ", " + this.y.toFixed(a) + ", " + this.w.toFixed(a) + ", " + this.h.toFixed(a) + "}";
        };
        a.createEmpty = function() {
          var c = a.allocate();
          c.setEmpty();
          return c;
        };
        a.createSquare = function() {
          return new a(-512, -512, 1024, 1024);
        };
        a.createMaxI16 = function() {
          return new a(-32768, -32768, 65535, 65535);
        };
        a.prototype.setMaxI16 = function() {
          this.setElements(-32768, -32768, 65535, 65535);
        };
        a.prototype.getCorners = function(a) {
          a[0].x = this.x;
          a[0].y = this.y;
          a[1].x = this.x + this.w;
          a[1].y = this.y;
          a[2].x = this.x + this.w;
          a[2].y = this.y + this.h;
          a[3].x = this.x;
          a[3].y = this.y + this.h;
        };
        a.allocationCount = 0;
        a._temporary = new a(0, 0, 0, 0);
        a._dirtyStack = [];
        return a;
      }();
      a.Rectangle = q;
      var t = function() {
        function a(b) {
          this.corners = b.map(function(a) {
            return a.clone();
          });
          this.axes = [b[1].clone().sub(b[0]), b[3].clone().sub(b[0])];
          this.origins = [];
          for (var c = 0;2 > c;c++) {
            this.axes[c].mul(1 / this.axes[c].squaredLength()), this.origins.push(b[0].dot(this.axes[c]));
          }
        }
        a.prototype.getBounds = function() {
          return a.getBounds(this.corners);
        };
        a.getBounds = function(a) {
          for (var b = new c(Number.MAX_VALUE, Number.MAX_VALUE), d = new c(Number.MIN_VALUE, Number.MIN_VALUE), f = 0;4 > f;f++) {
            var g = a[f].x, h = a[f].y;
            b.x = Math.min(b.x, g);
            b.y = Math.min(b.y, h);
            d.x = Math.max(d.x, g);
            d.y = Math.max(d.y, h);
          }
          return new q(b.x, b.y, d.x - b.x, d.y - b.y);
        };
        a.prototype.intersects = function(a) {
          return this.intersectsOneWay(a) && a.intersectsOneWay(this);
        };
        a.prototype.intersectsOneWay = function(a) {
          for (var b = 0;2 > b;b++) {
            for (var c = 0;4 > c;c++) {
              var d = a.corners[c].dot(this.axes[b]), f, g;
              0 === c ? g = f = d : d < f ? f = d : d > g && (g = d);
            }
            if (f > 1 + this.origins[b] || g < this.origins[b]) {
              return !1;
            }
          }
          return !0;
        };
        return a;
      }();
      a.OBB = t;
      (function(a) {
        a[a.Unknown = 0] = "Unknown";
        a[a.Identity = 1] = "Identity";
        a[a.Translation = 2] = "Translation";
      })(a.MatrixType || (a.MatrixType = {}));
      var m = function() {
        function a(c, d, f, g, h, k) {
          this._data = new Float64Array(6);
          this._type = 0;
          this.setElements(c, d, f, g, h, k);
          a.allocationCount++;
        }
        Object.defineProperty(a.prototype, "a", {get:function() {
          return this._data[0];
        }, set:function(a) {
          this._data[0] = a;
          this._type = 0;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "b", {get:function() {
          return this._data[1];
        }, set:function(a) {
          this._data[1] = a;
          this._type = 0;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "c", {get:function() {
          return this._data[2];
        }, set:function(a) {
          this._data[2] = a;
          this._type = 0;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "d", {get:function() {
          return this._data[3];
        }, set:function(a) {
          this._data[3] = a;
          this._type = 0;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "tx", {get:function() {
          return this._data[4];
        }, set:function(a) {
          this._data[4] = a;
          1 === this._type && (this._type = 2);
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(a.prototype, "ty", {get:function() {
          return this._data[5];
        }, set:function(a) {
          this._data[5] = a;
          1 === this._type && (this._type = 2);
        }, enumerable:!0, configurable:!0});
        a._createSVGMatrix = function() {
          a._svg || (a._svg = document.createElementNS("http://www.w3.org/2000/svg", "svg"));
          return a._svg.createSVGMatrix();
        };
        a.prototype.setElements = function(a, b, c, d, f, g) {
          var h = this._data;
          h[0] = a;
          h[1] = b;
          h[2] = c;
          h[3] = d;
          h[4] = f;
          h[5] = g;
          this._type = 0;
        };
        a.prototype.set = function(a) {
          var b = this._data, c = a._data;
          b[0] = c[0];
          b[1] = c[1];
          b[2] = c[2];
          b[3] = c[3];
          b[4] = c[4];
          b[5] = c[5];
          this._type = a._type;
        };
        a.prototype.emptyArea = function(a) {
          a = this._data;
          return 0 === a[0] || 0 === a[3] ? !0 : !1;
        };
        a.prototype.infiniteArea = function(a) {
          a = this._data;
          return Infinity === Math.abs(a[0]) || Infinity === Math.abs(a[3]) ? !0 : !1;
        };
        a.prototype.isEqual = function(a) {
          if (1 === this._type && 1 === a._type) {
            return !0;
          }
          var b = this._data;
          a = a._data;
          return b[0] === a[0] && b[1] === a[1] && b[2] === a[2] && b[3] === a[3] && b[4] === a[4] && b[5] === a[5];
        };
        a.prototype.clone = function() {
          var c = a.allocate();
          c.set(this);
          return c;
        };
        a.allocate = function() {
          var c = a._dirtyStack;
          return c.length ? c.pop() : new a(12345, 12345, 12345, 12345, 12345, 12345);
        };
        a.prototype.free = function() {
          a._dirtyStack.push(this);
        };
        a.prototype.transform = function(a, b, c, d, f, g) {
          var h = this._data, k = h[0], l = h[1], m = h[2], n = h[3], q = h[4], t = h[5];
          h[0] = k * a + m * b;
          h[1] = l * a + n * b;
          h[2] = k * c + m * d;
          h[3] = l * c + n * d;
          h[4] = k * f + m * g + q;
          h[5] = l * f + n * g + t;
          this._type = 0;
          return this;
        };
        a.prototype.transformRectangle = function(a, b) {
          var c = this._data, d = c[0], f = c[1], g = c[2], h = c[3], k = c[4], c = c[5], l = a.x, m = a.y, n = a.w, q = a.h;
          b[0].x = d * l + g * m + k;
          b[0].y = f * l + h * m + c;
          b[1].x = d * (l + n) + g * m + k;
          b[1].y = f * (l + n) + h * m + c;
          b[2].x = d * (l + n) + g * (m + q) + k;
          b[2].y = f * (l + n) + h * (m + q) + c;
          b[3].x = d * l + g * (m + q) + k;
          b[3].y = f * l + h * (m + q) + c;
        };
        a.prototype.isTranslationOnly = function() {
          if (2 === this._type) {
            return !0;
          }
          var a = this._data;
          return 1 === a[0] && 0 === a[1] && 0 === a[2] && 1 === a[3] || l(a[0], 1) && l(a[1], 0) && l(a[2], 0) && l(a[3], 1) ? (this._type = 2, !0) : !1;
        };
        a.prototype.transformRectangleAABB = function(a) {
          var b = this._data;
          if (1 !== this._type) {
            if (2 === this._type) {
              a.x += b[4], a.y += b[5];
            } else {
              var c = b[0], d = b[1], f = b[2], g = b[3], h = b[4], k = b[5], l = a.x, m = a.y, n = a.w, q = a.h, b = c * l + f * m + h, t = d * l + g * m + k, u = c * (l + n) + f * m + h, v = d * (l + n) + g * m + k, w = c * (l + n) + f * (m + q) + h, n = d * (l + n) + g * (m + q) + k, c = c * l + f * (m + q) + h, d = d * l + g * (m + q) + k, g = 0;
              b > u && (g = b, b = u, u = g);
              w > c && (g = w, w = c, c = g);
              a.x = b < w ? b : w;
              a.w = (u > c ? u : c) - a.x;
              t > v && (g = t, t = v, v = g);
              n > d && (g = n, n = d, d = g);
              a.y = t < n ? t : n;
              a.h = (v > d ? v : d) - a.y;
            }
          }
        };
        a.prototype.scale = function(a, b) {
          var c = this._data;
          c[0] *= a;
          c[1] *= b;
          c[2] *= a;
          c[3] *= b;
          c[4] *= a;
          c[5] *= b;
          this._type = 0;
          return this;
        };
        a.prototype.scaleClone = function(a, b) {
          return 1 === a && 1 === b ? this : this.clone().scale(a, b);
        };
        a.prototype.rotate = function(a) {
          var b = this._data, c = b[0], d = b[1], f = b[2], g = b[3], h = b[4], k = b[5], l = Math.cos(a);
          a = Math.sin(a);
          b[0] = l * c - a * d;
          b[1] = a * c + l * d;
          b[2] = l * f - a * g;
          b[3] = a * f + l * g;
          b[4] = l * h - a * k;
          b[5] = a * h + l * k;
          this._type = 0;
          return this;
        };
        a.prototype.concat = function(a) {
          if (1 === a._type) {
            return this;
          }
          var b = this._data;
          a = a._data;
          var c = b[0] * a[0], d = 0, f = 0, g = b[3] * a[3], h = b[4] * a[0] + a[4], k = b[5] * a[3] + a[5];
          if (0 !== b[1] || 0 !== b[2] || 0 !== a[1] || 0 !== a[2]) {
            c += b[1] * a[2], g += b[2] * a[1], d += b[0] * a[1] + b[1] * a[3], f += b[2] * a[0] + b[3] * a[2], h += b[5] * a[2], k += b[4] * a[1];
          }
          b[0] = c;
          b[1] = d;
          b[2] = f;
          b[3] = g;
          b[4] = h;
          b[5] = k;
          this._type = 0;
          return this;
        };
        a.prototype.concatClone = function(a) {
          return this.clone().concat(a);
        };
        a.prototype.preMultiply = function(a) {
          var b = this._data, c = a._data;
          if (2 === a._type && this._type & 3) {
            b[4] += c[4], b[5] += c[5], this._type = 2;
          } else {
            if (1 !== a._type) {
              a = c[0] * b[0];
              var d = 0, f = 0, g = c[3] * b[3], h = c[4] * b[0] + b[4], k = c[5] * b[3] + b[5];
              if (0 !== c[1] || 0 !== c[2] || 0 !== b[1] || 0 !== b[2]) {
                a += c[1] * b[2], g += c[2] * b[1], d += c[0] * b[1] + c[1] * b[3], f += c[2] * b[0] + c[3] * b[2], h += c[5] * b[2], k += c[4] * b[1];
              }
              b[0] = a;
              b[1] = d;
              b[2] = f;
              b[3] = g;
              b[4] = h;
              b[5] = k;
              this._type = 0;
            }
          }
        };
        a.prototype.translate = function(a, b) {
          var c = this._data;
          c[4] += a;
          c[5] += b;
          1 === this._type && (this._type = 2);
          return this;
        };
        a.prototype.setIdentity = function() {
          var a = this._data;
          a[0] = 1;
          a[1] = 0;
          a[2] = 0;
          a[3] = 1;
          a[4] = 0;
          a[5] = 0;
          this._type = 1;
        };
        a.prototype.isIdentity = function() {
          if (1 === this._type) {
            return !0;
          }
          var a = this._data;
          return 1 === a[0] && 0 === a[1] && 0 === a[2] && 1 === a[3] && 0 === a[4] && 0 === a[5];
        };
        a.prototype.transformPoint = function(a) {
          if (1 !== this._type) {
            var b = this._data, c = a.x, d = a.y;
            a.x = b[0] * c + b[2] * d + b[4];
            a.y = b[1] * c + b[3] * d + b[5];
          }
        };
        a.prototype.transformPoints = function(a) {
          if (1 !== this._type) {
            for (var b = 0;b < a.length;b++) {
              this.transformPoint(a[b]);
            }
          }
        };
        a.prototype.deltaTransformPoint = function(a) {
          if (1 !== this._type) {
            var b = this._data, c = a.x, d = a.y;
            a.x = b[0] * c + b[2] * d;
            a.y = b[1] * c + b[3] * d;
          }
        };
        a.prototype.inverse = function(a) {
          var b = this._data, c = a._data;
          if (1 === this._type) {
            a.setIdentity();
          } else {
            if (2 === this._type) {
              c[0] = 1, c[1] = 0, c[2] = 0, c[3] = 1, c[4] = -b[4], c[5] = -b[5], a._type = 2;
            } else {
              var d = b[1], f = b[2], g = b[4], h = b[5];
              if (0 === d && 0 === f) {
                var k = c[0] = 1 / b[0], b = c[3] = 1 / b[3];
                c[1] = 0;
                c[2] = 0;
                c[4] = -k * g;
                c[5] = -b * h;
              } else {
                var k = b[0], b = b[3], l = k * b - d * f;
                if (0 === l) {
                  a.setIdentity();
                  return;
                }
                l = 1 / l;
                c[0] = b * l;
                d = c[1] = -d * l;
                f = c[2] = -f * l;
                b = c[3] = k * l;
                c[4] = -(c[0] * g + f * h);
                c[5] = -(d * g + b * h);
              }
              a._type = 0;
            }
          }
        };
        a.prototype.getTranslateX = function() {
          return this._data[4];
        };
        a.prototype.getTranslateY = function() {
          return this._data[4];
        };
        a.prototype.getScaleX = function() {
          var a = this._data;
          if (1 === a[0] && 0 === a[1]) {
            return 1;
          }
          var b = Math.sqrt(a[0] * a[0] + a[1] * a[1]);
          return 0 < a[0] ? b : -b;
        };
        a.prototype.getScaleY = function() {
          var a = this._data;
          if (0 === a[2] && 1 === a[3]) {
            return 1;
          }
          var b = Math.sqrt(a[2] * a[2] + a[3] * a[3]);
          return 0 < a[3] ? b : -b;
        };
        a.prototype.getScale = function() {
          return (this.getScaleX() + this.getScaleY()) / 2;
        };
        a.prototype.getAbsoluteScaleX = function() {
          return Math.abs(this.getScaleX());
        };
        a.prototype.getAbsoluteScaleY = function() {
          return Math.abs(this.getScaleY());
        };
        a.prototype.getRotation = function() {
          var a = this._data;
          return 180 * Math.atan(a[1] / a[0]) / Math.PI;
        };
        a.prototype.isScaleOrRotation = function() {
          var a = this._data;
          return .01 > Math.abs(a[0] * a[2] + a[1] * a[3]);
        };
        a.prototype.toString = function(a) {
          void 0 === a && (a = 2);
          var b = this._data;
          return "{" + b[0].toFixed(a) + ", " + b[1].toFixed(a) + ", " + b[2].toFixed(a) + ", " + b[3].toFixed(a) + ", " + b[4].toFixed(a) + ", " + b[5].toFixed(a) + "}";
        };
        a.prototype.toWebGLMatrix = function() {
          var a = this._data;
          return new Float32Array([a[0], a[1], 0, a[2], a[3], 0, a[4], a[5], 1]);
        };
        a.prototype.toCSSTransform = function() {
          var a = this._data;
          return "matrix(" + a[0] + ", " + a[1] + ", " + a[2] + ", " + a[3] + ", " + a[4] + ", " + a[5] + ")";
        };
        a.createIdentity = function() {
          var c = a.allocate();
          c.setIdentity();
          return c;
        };
        a.prototype.toSVGMatrix = function() {
          var c = this._data, d = a._createSVGMatrix();
          d.a = c[0];
          d.b = c[1];
          d.c = c[2];
          d.d = c[3];
          d.e = c[4];
          d.f = c[5];
          return d;
        };
        a.prototype.snap = function() {
          var a = this._data;
          return this.isTranslationOnly() ? (a[0] = 1, a[1] = 0, a[2] = 0, a[3] = 1, a[4] = Math.round(a[4]), a[5] = Math.round(a[5]), this._type = 2, !0) : !1;
        };
        a.createIdentitySVGMatrix = function() {
          return a._createSVGMatrix();
        };
        a.createSVGMatrixFromArray = function(c) {
          var d = a._createSVGMatrix();
          d.a = c[0];
          d.b = c[1];
          d.c = c[2];
          d.d = c[3];
          d.e = c[4];
          d.f = c[5];
          return d;
        };
        a.allocationCount = 0;
        a._dirtyStack = [];
        a.multiply = function(a, b) {
          var c = b._data;
          a.transform(c[0], c[1], c[2], c[3], c[4], c[5]);
        };
        return a;
      }();
      a.Matrix = m;
      m = function() {
        function a(b) {
          this._m = new Float32Array(b);
        }
        a.prototype.asWebGLMatrix = function() {
          return this._m;
        };
        a.createCameraLookAt = function(c, d, f) {
          d = c.clone().sub(d).normalize();
          f = f.clone().cross(d).normalize();
          var g = d.clone().cross(f);
          return new a([f.x, f.y, f.z, 0, g.x, g.y, g.z, 0, d.x, d.y, d.z, 0, c.x, c.y, c.z, 1]);
        };
        a.createLookAt = function(c, d, f) {
          d = c.clone().sub(d).normalize();
          f = f.clone().cross(d).normalize();
          var g = d.clone().cross(f);
          return new a([f.x, g.x, d.x, 0, g.x, g.y, d.y, 0, d.x, g.z, d.z, 0, -f.dot(c), -g.dot(c), -d.dot(c), 1]);
        };
        a.prototype.mul = function(a) {
          a = [a.x, a.y, a.z, 0];
          for (var b = this._m, c = [], d = 0;4 > d;d++) {
            c[d] = 0;
            for (var f = 4 * d, h = 0;4 > h;h++) {
              c[d] += b[f + h] * a[h];
            }
          }
          return new g(c[0], c[1], c[2]);
        };
        a.create2DProjection = function(c, d, f) {
          return new a([2 / c, 0, 0, 0, 0, -2 / d, 0, 0, 0, 0, 2 / f, 0, -1, 1, 0, 1]);
        };
        a.createPerspective = function(c, d, f, g) {
          c = Math.tan(.5 * Math.PI - .5 * c);
          var h = 1 / (f - g);
          return new a([c / d, 0, 0, 0, 0, c, 0, 0, 0, 0, (f + g) * h, -1, 0, 0, f * g * h * 2, 0]);
        };
        a.createIdentity = function() {
          return a.createTranslation();
        };
        a.createTranslation = function() {
          return new a([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
        };
        a.createXRotation = function(c) {
          var d = Math.cos(c);
          c = Math.sin(c);
          return new a([1, 0, 0, 0, 0, d, c, 0, 0, -c, d, 0, 0, 0, 0, 1]);
        };
        a.createYRotation = function(c) {
          var d = Math.cos(c);
          c = Math.sin(c);
          return new a([d, 0, -c, 0, 0, 1, 0, 0, c, 0, d, 0, 0, 0, 0, 1]);
        };
        a.createZRotation = function(c) {
          var d = Math.cos(c);
          c = Math.sin(c);
          return new a([d, c, 0, 0, -c, d, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
        };
        a.createScale = function(c, d, f) {
          return new a([c, 0, 0, 0, 0, d, 0, 0, 0, 0, f, 0, 0, 0, 0, 1]);
        };
        a.createMultiply = function(c, d) {
          var f = c._m, g = d._m, h = f[0], k = f[1], l = f[2], m = f[3], n = f[4], q = f[5], t = f[6], u = f[7], v = f[8], w = f[9], A = f[10], z = f[11], G = f[12], L = f[13], F = f[14], f = f[15], S = g[0], U = g[1], N = g[2], R = g[3], T = g[4], X = g[5], da = g[6], x = g[7], Y = g[8], V = g[9], ba = g[10], Z = g[11], O = g[12], aa = g[13], ea = g[14], g = g[15];
          return new a([h * S + k * T + l * Y + m * O, h * U + k * X + l * V + m * aa, h * N + k * da + l * ba + m * ea, h * R + k * x + l * Z + m * g, n * S + q * T + t * Y + u * O, n * U + q * X + t * V + u * aa, n * N + q * da + t * ba + u * ea, n * R + q * x + t * Z + u * g, v * S + w * T + A * Y + z * O, v * U + w * X + A * V + z * aa, v * N + w * da + A * ba + z * ea, v * R + w * x + A * Z + z * g, G * S + L * T + F * Y + f * O, G * U + L * X + F * V + f * aa, G * N + L * da + F * ba + f * 
          ea, G * R + L * x + F * Z + f * g]);
        };
        a.createInverse = function(c) {
          var d = c._m;
          c = d[0];
          var f = d[1], g = d[2], h = d[3], k = d[4], l = d[5], m = d[6], n = d[7], q = d[8], t = d[9], u = d[10], v = d[11], w = d[12], A = d[13], z = d[14], d = d[15], G = u * d, L = z * v, F = m * d, S = z * n, U = m * v, N = u * n, R = g * d, T = z * h, X = g * v, da = u * h, x = g * n, Y = m * h, V = q * A, ba = w * t, Z = k * A, O = w * l, aa = k * t, ea = q * l, ia = c * A, ja = w * f, ga = c * t, ca = q * f, fa = c * l, Q = k * f, ma = G * l + S * t + U * A - (L * l + F * t + N * A), W = 
          L * f + R * t + da * A - (G * f + T * t + X * A), A = F * f + T * l + x * A - (S * f + R * l + Y * A), f = N * f + X * l + Y * t - (U * f + da * l + x * t), l = 1 / (c * ma + k * W + q * A + w * f);
          return new a([l * ma, l * W, l * A, l * f, l * (L * k + F * q + N * w - (G * k + S * q + U * w)), l * (G * c + T * q + X * w - (L * c + R * q + da * w)), l * (S * c + R * k + Y * w - (F * c + T * k + x * w)), l * (U * c + da * k + x * q - (N * c + X * k + Y * q)), l * (V * n + O * v + aa * d - (ba * n + Z * v + ea * d)), l * (ba * h + ia * v + ca * d - (V * h + ja * v + ga * d)), l * (Z * h + ja * n + fa * d - (O * h + ia * n + Q * d)), l * (ea * h + ga * n + Q * v - (aa * h + ca * n + 
          fa * v)), l * (Z * u + ea * z + ba * m - (aa * z + V * m + O * u)), l * (ga * z + V * g + ja * u - (ia * u + ca * z + ba * g)), l * (ia * m + Q * z + O * g - (fa * z + Z * g + ja * m)), l * (fa * u + aa * g + ca * m - (ga * m + Q * u + ea * g))]);
        };
        return a;
      }();
      a.Matrix3D = m;
      m = function() {
        function a(c, d, f) {
          void 0 === f && (f = 7);
          var g = this.size = 1 << f;
          this.sizeInBits = f;
          this.w = c;
          this.h = d;
          this.c = Math.ceil(c / g);
          this.r = Math.ceil(d / g);
          this.grid = [];
          for (c = 0;c < this.r;c++) {
            for (this.grid.push([]), d = 0;d < this.c;d++) {
              this.grid[c][d] = new a.Cell(new q(d * g, c * g, g, g));
            }
          }
        }
        a.prototype.clear = function() {
          for (var a = 0;a < this.r;a++) {
            for (var b = 0;b < this.c;b++) {
              this.grid[a][b].clear();
            }
          }
        };
        a.prototype.getBounds = function() {
          return new q(0, 0, this.w, this.h);
        };
        a.prototype.addDirtyRectangle = function(a) {
          var b = a.x >> this.sizeInBits, c = a.y >> this.sizeInBits;
          if (!(b >= this.c || c >= this.r)) {
            0 > b && (b = 0);
            0 > c && (c = 0);
            var d = this.grid[c][b];
            a = a.clone();
            a.snap();
            if (d.region.contains(a)) {
              d.bounds.isEmpty() ? d.bounds.set(a) : d.bounds.contains(a) || d.bounds.union(a);
            } else {
              for (var f = Math.min(this.c, Math.ceil((a.x + a.w) / this.size)) - b, g = Math.min(this.r, Math.ceil((a.y + a.h) / this.size)) - c, h = 0;h < f;h++) {
                for (var k = 0;k < g;k++) {
                  d = this.grid[c + k][b + h], d = d.region.clone(), d.intersect(a), d.isEmpty() || this.addDirtyRectangle(d);
                }
              }
            }
          }
        };
        a.prototype.gatherRegions = function(a) {
          for (var b = 0;b < this.r;b++) {
            for (var c = 0;c < this.c;c++) {
              this.grid[b][c].bounds.isEmpty() || a.push(this.grid[b][c].bounds);
            }
          }
        };
        a.prototype.gatherOptimizedRegions = function(a) {
          this.gatherRegions(a);
        };
        a.prototype.getDirtyRatio = function() {
          var a = this.w * this.h;
          if (0 === a) {
            return 0;
          }
          for (var b = 0, c = 0;c < this.r;c++) {
            for (var d = 0;d < this.c;d++) {
              b += this.grid[c][d].region.area();
            }
          }
          return b / a;
        };
        a.prototype.render = function(a, b) {
          function c(b) {
            a.rect(b.x, b.y, b.w, b.h);
          }
          if (b && b.drawGrid) {
            a.strokeStyle = "white";
            for (var d = 0;d < this.r;d++) {
              for (var f = 0;f < this.c;f++) {
                var g = this.grid[d][f];
                a.beginPath();
                c(g.region);
                a.closePath();
                a.stroke();
              }
            }
          }
          a.strokeStyle = "#E0F8D8";
          for (d = 0;d < this.r;d++) {
            for (f = 0;f < this.c;f++) {
              g = this.grid[d][f], a.beginPath(), c(g.bounds), a.closePath(), a.stroke();
            }
          }
        };
        a.tmpRectangle = q.createEmpty();
        return a;
      }();
      a.DirtyRegion = m;
      (function(a) {
        var c = function() {
          function a(b) {
            this.region = b;
            this.bounds = q.createEmpty();
          }
          a.prototype.clear = function() {
            this.bounds.setEmpty();
          };
          return a;
        }();
        a.Cell = c;
      })(m = a.DirtyRegion || (a.DirtyRegion = {}));
      var h = function() {
        function a(b, c, d, f, g, h) {
          this.index = b;
          this.x = c;
          this.y = d;
          this.scale = h;
          this.bounds = new q(c * f, d * g, f, g);
        }
        a.prototype.getOBB = function() {
          if (this._obb) {
            return this._obb;
          }
          this.bounds.getCorners(a.corners);
          return this._obb = new t(a.corners);
        };
        a.corners = c.createEmptyPoints(4);
        return a;
      }();
      a.Tile = h;
      var f = function() {
        function a(b, c, d, f, g) {
          this.tileW = d;
          this.tileH = f;
          this.scale = g;
          this.w = b;
          this.h = c;
          this.rows = Math.ceil(c / f);
          this.columns = Math.ceil(b / d);
          this.tiles = [];
          for (c = b = 0;c < this.rows;c++) {
            for (var k = 0;k < this.columns;k++) {
              this.tiles.push(new h(b++, k, c, d, f, g));
            }
          }
        }
        a.prototype.getTiles = function(a, b) {
          if (b.emptyArea(a)) {
            return [];
          }
          if (b.infiniteArea(a)) {
            return this.tiles;
          }
          var c = this.columns * this.rows;
          return 40 > c && b.isScaleOrRotation() ? this.getFewTiles(a, b, 10 < c) : this.getManyTiles(a, b);
        };
        a.prototype.getFewTiles = function(c, d, f) {
          void 0 === f && (f = !0);
          if (d.isTranslationOnly() && 1 === this.tiles.length) {
            return this.tiles[0].bounds.intersectsTranslated(c, d.tx, d.ty) ? [this.tiles[0]] : [];
          }
          d.transformRectangle(c, a._points);
          var g;
          c = new q(0, 0, this.w, this.h);
          f && (g = new t(a._points));
          c.intersect(t.getBounds(a._points));
          if (c.isEmpty()) {
            return [];
          }
          var h = c.x / this.tileW | 0;
          d = c.y / this.tileH | 0;
          var k = Math.ceil((c.x + c.w) / this.tileW) | 0, l = Math.ceil((c.y + c.h) / this.tileH) | 0, h = v(h, 0, this.columns), k = v(k, 0, this.columns);
          d = v(d, 0, this.rows);
          for (var l = v(l, 0, this.rows), m = [];h < k;h++) {
            for (var n = d;n < l;n++) {
              var u = this.tiles[n * this.columns + h];
              u.bounds.intersects(c) && (f ? u.getOBB().intersects(g) : 1) && m.push(u);
            }
          }
          return m;
        };
        a.prototype.getManyTiles = function(c, d) {
          function f(a, b, c) {
            return (a - b.x) * (c.y - b.y) / (c.x - b.x) + b.y;
          }
          function g(a, b, c, e, d) {
            if (!(0 > c || c >= b.columns)) {
              for (e = v(e, 0, b.rows), d = v(d + 1, 0, b.rows);e < d;e++) {
                a.push(b.tiles[e * b.columns + c]);
              }
            }
          }
          var h = a._points;
          d.transformRectangle(c, h);
          for (var k = h[0].x < h[1].x ? 0 : 1, l = h[2].x < h[3].x ? 2 : 3, l = h[k].x < h[l].x ? k : l, k = [], m = 0;5 > m;m++, l++) {
            k.push(h[l % 4]);
          }
          (k[1].x - k[0].x) * (k[3].y - k[0].y) < (k[1].y - k[0].y) * (k[3].x - k[0].x) && (h = k[1], k[1] = k[3], k[3] = h);
          var h = [], n, q, l = Math.floor(k[0].x / this.tileW), m = (l + 1) * this.tileW;
          if (k[2].x < m) {
            n = Math.min(k[0].y, k[1].y, k[2].y, k[3].y);
            q = Math.max(k[0].y, k[1].y, k[2].y, k[3].y);
            var t = Math.floor(n / this.tileH), u = Math.floor(q / this.tileH);
            g(h, this, l, t, u);
            return h;
          }
          var w = 0, H = 4, A = !1;
          if (k[0].x === k[1].x || k[0].x === k[3].x) {
            k[0].x === k[1].x ? (A = !0, w++) : H--, n = f(m, k[w], k[w + 1]), q = f(m, k[H], k[H - 1]), t = Math.floor(k[w].y / this.tileH), u = Math.floor(k[H].y / this.tileH), g(h, this, l, t, u), l++;
          }
          do {
            var z, G, L, F;
            k[w + 1].x < m ? (z = k[w + 1].y, L = !0) : (z = f(m, k[w], k[w + 1]), L = !1);
            k[H - 1].x < m ? (G = k[H - 1].y, F = !0) : (G = f(m, k[H], k[H - 1]), F = !1);
            t = Math.floor((k[w].y < k[w + 1].y ? n : z) / this.tileH);
            u = Math.floor((k[H].y > k[H - 1].y ? q : G) / this.tileH);
            g(h, this, l, t, u);
            if (L && A) {
              break;
            }
            L ? (A = !0, w++, n = f(m, k[w], k[w + 1])) : n = z;
            F ? (H--, q = f(m, k[H], k[H - 1])) : q = G;
            l++;
            m = (l + 1) * this.tileW;
          } while (w < H);
          return h;
        };
        a._points = c.createEmptyPoints(4);
        return a;
      }();
      a.TileCache = f;
      m = function() {
        function a(b, c, d) {
          this._cacheLevels = [];
          this._source = b;
          this._tileSize = c;
          this._minUntiledSize = d;
        }
        a.prototype._getTilesAtScale = function(a, b, c) {
          var d = Math.max(b.getAbsoluteScaleX(), b.getAbsoluteScaleY()), g = 0;
          1 !== d && (g = v(Math.round(Math.log(1 / d) / Math.LN2), -5, 3));
          d = u(g);
          if (this._source.hasFlags(1048576)) {
            for (;;) {
              d = u(g);
              if (c.contains(this._source.getBounds().getAbsoluteBounds().clone().scale(d, d))) {
                break;
              }
              g--;
            }
          }
          this._source.hasFlags(2097152) || (g = v(g, -5, 0));
          d = u(g);
          c = 5 + g;
          g = this._cacheLevels[c];
          if (!g) {
            var g = this._source.getBounds().getAbsoluteBounds().clone().scale(d, d), h, k;
            this._source.hasFlags(1048576) || !this._source.hasFlags(4194304) || Math.max(g.w, g.h) <= this._minUntiledSize ? (h = g.w, k = g.h) : h = k = this._tileSize;
            g = this._cacheLevels[c] = new f(g.w, g.h, h, k, d);
          }
          return g.getTiles(a, b.scaleClone(d, d));
        };
        a.prototype.fetchTiles = function(a, b, c, d) {
          var f = new q(0, 0, c.canvas.width, c.canvas.height);
          a = this._getTilesAtScale(a, b, f);
          var g;
          b = this._source;
          for (var h = 0;h < a.length;h++) {
            var k = a[h];
            k.cachedSurfaceRegion && k.cachedSurfaceRegion.surface && !b.hasFlags(1048592) || (g || (g = []), g.push(k));
          }
          g && this._cacheTiles(c, g, d, f);
          b.removeFlags(16);
          return a;
        };
        a.prototype._getTileBounds = function(a) {
          for (var b = q.createEmpty(), c = 0;c < a.length;c++) {
            b.union(a[c].bounds);
          }
          return b;
        };
        a.prototype._cacheTiles = function(a, b, c, d, f) {
          void 0 === f && (f = 4);
          var g = this._getTileBounds(b);
          a.save();
          a.setTransform(1, 0, 0, 1, 0, 0);
          a.clearRect(0, 0, d.w, d.h);
          a.translate(-g.x, -g.y);
          a.scale(b[0].scale, b[0].scale);
          var h = this._source.getBounds();
          a.translate(-h.x, -h.y);
          2 <= k.traceLevel && k.writer && k.writer.writeLn("Rendering Tiles: " + g);
          this._source.render(a, 0);
          a.restore();
          for (var h = null, l = 0;l < b.length;l++) {
            var m = b[l], n = m.bounds.clone();
            n.x -= g.x;
            n.y -= g.y;
            d.contains(n) || (h || (h = []), h.push(m));
            m.cachedSurfaceRegion = c(m.cachedSurfaceRegion, a, n);
          }
          h && (2 <= h.length ? (b = h.slice(0, h.length / 2 | 0), g = h.slice(b.length), this._cacheTiles(a, b, c, d, f - 1), this._cacheTiles(a, g, c, d, f - 1)) : this._cacheTiles(a, h, c, d, f - 1));
        };
        return a;
      }();
      a.RenderableTileCache = m;
    })(k.Geometry || (k.Geometry = {}));
  })(d.GFX || (d.GFX = {}));
})(Shumway || (Shumway = {}));
__extends = this.__extends || function(d, k) {
  function a() {
    this.constructor = d;
  }
  for (var n in k) {
    k.hasOwnProperty(n) && (d[n] = k[n]);
  }
  a.prototype = k.prototype;
  d.prototype = new a;
};
(function(d) {
  (function(k) {
    var a = d.IntegerUtilities.roundToMultipleOfPowerOfTwo, n = k.Geometry.Rectangle;
    (function(d) {
      var v = function(a) {
        function c() {
          a.apply(this, arguments);
        }
        __extends(c, a);
        return c;
      }(k.Geometry.Rectangle);
      d.Region = v;
      var u = function() {
        function a(c, d) {
          this._root = new l(0, 0, c | 0, d | 0, !1);
        }
        a.prototype.allocate = function(a, c) {
          a = Math.ceil(a);
          c = Math.ceil(c);
          var b = this._root.insert(a, c);
          b && (b.allocator = this, b.allocated = !0);
          return b;
        };
        a.prototype.free = function(a) {
          a.clear();
          a.allocated = !1;
        };
        a.RANDOM_ORIENTATION = !0;
        a.MAX_DEPTH = 256;
        return a;
      }();
      d.CompactAllocator = u;
      var l = function(a) {
        function c(d, b, e, g, h) {
          a.call(this, d, b, e, g);
          this._children = null;
          this._horizontal = h;
          this.allocated = !1;
        }
        __extends(c, a);
        c.prototype.clear = function() {
          this._children = null;
          this.allocated = !1;
        };
        c.prototype.insert = function(a, b) {
          return this._insert(a, b, 0);
        };
        c.prototype._insert = function(a, b, e) {
          if (!(e > u.MAX_DEPTH || this.allocated || this.w < a || this.h < b)) {
            if (this._children) {
              var d;
              if ((d = this._children[0]._insert(a, b, e + 1)) || (d = this._children[1]._insert(a, b, e + 1))) {
                return d;
              }
            } else {
              return d = !this._horizontal, u.RANDOM_ORIENTATION && (d = .5 <= Math.random()), this._children = this._horizontal ? [new c(this.x, this.y, this.w, b, !1), new c(this.x, this.y + b, this.w, this.h - b, d)] : [new c(this.x, this.y, a, this.h, !0), new c(this.x + a, this.y, this.w - a, this.h, d)], d = this._children[0], d.w === a && d.h === b ? (d.allocated = !0, d) : this._insert(a, b, e + 1);
            }
          }
        };
        return c;
      }(d.Region), c = function() {
        function a(c, d, b, e) {
          this._columns = c / b | 0;
          this._rows = d / e | 0;
          this._sizeW = b;
          this._sizeH = e;
          this._freeList = [];
          this._index = 0;
          this._total = this._columns * this._rows;
        }
        a.prototype.allocate = function(a, c) {
          a = Math.ceil(a);
          c = Math.ceil(c);
          var b = this._sizeW, e = this._sizeH;
          if (a > b || c > e) {
            return null;
          }
          var d = this._freeList, k = this._index;
          return 0 < d.length ? (b = d.pop(), b.w = a, b.h = c, b.allocated = !0, b) : k < this._total ? (d = k / this._columns | 0, b = new g((k - d * this._columns) * b, d * e, a, c), b.index = k, b.allocator = this, b.allocated = !0, this._index++, b) : null;
        };
        a.prototype.free = function(a) {
          a.allocated = !1;
          this._freeList.push(a);
        };
        return a;
      }();
      d.GridAllocator = c;
      var g = function(a) {
        function c(d, b, e, g) {
          a.call(this, d, b, e, g);
          this.index = -1;
        }
        __extends(c, a);
        return c;
      }(d.Region);
      d.GridCell = g;
      var q = function() {
        return function(a, c, d) {
          this.size = a;
          this.region = c;
          this.allocator = d;
        };
      }(), t = function(a) {
        function c(d, b, e, g, h) {
          a.call(this, d, b, e, g);
          this.region = h;
        }
        __extends(c, a);
        return c;
      }(d.Region);
      d.BucketCell = t;
      v = function() {
        function d(a, c) {
          this._buckets = [];
          this._w = a | 0;
          this._h = c | 0;
          this._filled = 0;
        }
        d.prototype.allocate = function(d, f) {
          d = Math.ceil(d);
          f = Math.ceil(f);
          var b = Math.max(d, f);
          if (d > this._w || f > this._h) {
            return null;
          }
          var e = null, g, k = this._buckets;
          do {
            for (var l = 0;l < k.length && !(k[l].size >= b && (g = k[l], e = g.allocator.allocate(d, f)));l++) {
            }
            if (!e) {
              var m = this._h - this._filled;
              if (m < f) {
                return null;
              }
              var l = a(b, 8), u = 2 * l;
              u > m && (u = m);
              if (u < l) {
                return null;
              }
              m = new n(0, this._filled, this._w, u);
              this._buckets.push(new q(l, m, new c(m.w, m.h, l, l)));
              this._filled += u;
            }
          } while (!e);
          return new t(g.region.x + e.x, g.region.y + e.y, e.w, e.h, e);
        };
        d.prototype.free = function(a) {
          a.region.allocator.free(a.region);
        };
        return d;
      }();
      d.BucketAllocator = v;
    })(k.RegionAllocator || (k.RegionAllocator = {}));
    (function(a) {
      var d = function() {
        function a(d) {
          this._createSurface = d;
          this._surfaces = [];
        }
        Object.defineProperty(a.prototype, "surfaces", {get:function() {
          return this._surfaces;
        }, enumerable:!0, configurable:!0});
        a.prototype._createNewSurface = function(a, c) {
          var d = this._createSurface(a, c);
          this._surfaces.push(d);
          return d;
        };
        a.prototype.addSurface = function(a) {
          this._surfaces.push(a);
        };
        a.prototype.allocate = function(a, c, d) {
          for (var k = 0;k < this._surfaces.length;k++) {
            var n = this._surfaces[k];
            if (n !== d && (n = n.allocate(a, c))) {
              return n;
            }
          }
          return this._createNewSurface(a, c).allocate(a, c);
        };
        a.prototype.free = function(a) {
        };
        return a;
      }();
      a.SimpleAllocator = d;
    })(k.SurfaceRegionAllocator || (k.SurfaceRegionAllocator = {}));
  })(d.GFX || (d.GFX = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    var a = k.Geometry.Rectangle, n = k.Geometry.Matrix, w = k.Geometry.DirtyRegion;
    (function(a) {
      a[a.Normal = 1] = "Normal";
      a[a.Layer = 2] = "Layer";
      a[a.Multiply = 3] = "Multiply";
      a[a.Screen = 4] = "Screen";
      a[a.Lighten = 5] = "Lighten";
      a[a.Darken = 6] = "Darken";
      a[a.Difference = 7] = "Difference";
      a[a.Add = 8] = "Add";
      a[a.Subtract = 9] = "Subtract";
      a[a.Invert = 10] = "Invert";
      a[a.Alpha = 11] = "Alpha";
      a[a.Erase = 12] = "Erase";
      a[a.Overlay = 13] = "Overlay";
      a[a.HardLight = 14] = "HardLight";
    })(k.BlendMode || (k.BlendMode = {}));
    var v = k.BlendMode;
    (function(a) {
      a[a.None = 0] = "None";
      a[a.BoundsAutoCompute = 2] = "BoundsAutoCompute";
      a[a.IsMask = 4] = "IsMask";
      a[a.Dirty = 16] = "Dirty";
      a[a.InvalidBounds = 256] = "InvalidBounds";
      a[a.InvalidConcatenatedMatrix = 512] = "InvalidConcatenatedMatrix";
      a[a.InvalidInvertedConcatenatedMatrix = 1024] = "InvalidInvertedConcatenatedMatrix";
      a[a.InvalidConcatenatedColorMatrix = 2048] = "InvalidConcatenatedColorMatrix";
      a[a.UpOnAddedOrRemoved = a.InvalidBounds | a.Dirty] = "UpOnAddedOrRemoved";
      a[a.UpOnMoved = a.InvalidBounds | a.Dirty] = "UpOnMoved";
      a[a.DownOnAddedOrRemoved = a.InvalidConcatenatedMatrix | a.InvalidInvertedConcatenatedMatrix | a.InvalidConcatenatedColorMatrix] = "DownOnAddedOrRemoved";
      a[a.DownOnMoved = a.InvalidConcatenatedMatrix | a.InvalidInvertedConcatenatedMatrix | a.InvalidConcatenatedColorMatrix] = "DownOnMoved";
      a[a.UpOnColorMatrixChanged = a.Dirty] = "UpOnColorMatrixChanged";
      a[a.DownOnColorMatrixChanged = a.InvalidConcatenatedColorMatrix] = "DownOnColorMatrixChanged";
      a[a.Visible = 65536] = "Visible";
      a[a.UpOnInvalidate = a.InvalidBounds | a.Dirty] = "UpOnInvalidate";
      a[a.Default = a.BoundsAutoCompute | a.InvalidBounds | a.InvalidConcatenatedMatrix | a.InvalidInvertedConcatenatedMatrix | a.Visible] = "Default";
      a[a.CacheAsBitmap = 131072] = "CacheAsBitmap";
      a[a.PixelSnapping = 262144] = "PixelSnapping";
      a[a.ImageSmoothing = 524288] = "ImageSmoothing";
      a[a.Dynamic = 1048576] = "Dynamic";
      a[a.Scalable = 2097152] = "Scalable";
      a[a.Tileable = 4194304] = "Tileable";
      a[a.Transparent = 32768] = "Transparent";
    })(k.NodeFlags || (k.NodeFlags = {}));
    var u = k.NodeFlags;
    (function(a) {
      a[a.Node = 1] = "Node";
      a[a.Shape = 3] = "Shape";
      a[a.Group = 5] = "Group";
      a[a.Stage = 13] = "Stage";
      a[a.Renderable = 33] = "Renderable";
    })(k.NodeType || (k.NodeType = {}));
    var l = k.NodeType;
    (function(a) {
      a[a.None = 0] = "None";
      a[a.OnStageBoundsChanged = 1] = "OnStageBoundsChanged";
      a[a.RemovedFromStage = 2] = "RemovedFromStage";
    })(k.NodeEventType || (k.NodeEventType = {}));
    var c = function() {
      function a() {
      }
      a.prototype.visitNode = function(a, b) {
      };
      a.prototype.visitShape = function(a, b) {
        this.visitNode(a, b);
      };
      a.prototype.visitGroup = function(a, b) {
        this.visitNode(a, b);
        for (var c = a.getChildren(), e = 0;e < c.length;e++) {
          c[e].visit(this, b);
        }
      };
      a.prototype.visitStage = function(a, b) {
        this.visitGroup(a, b);
      };
      a.prototype.visitRenderable = function(a, b) {
        this.visitNode(a, b);
      };
      return a;
    }();
    k.NodeVisitor = c;
    var g = function() {
      return function() {
      };
    }();
    k.State = g;
    var q = function(a) {
      function b() {
        a.call(this);
        this.matrix = n.createIdentity();
        this.depth = 0;
      }
      __extends(b, a);
      b.prototype.transform = function(a) {
        var b = this.clone();
        b.matrix.preMultiply(a.getMatrix());
        return b;
      };
      b.allocate = function() {
        var a = b._dirtyStack, c = null;
        a.length && (c = a.pop());
        return c;
      };
      b.prototype.clone = function() {
        var a = b.allocate();
        a || (a = new b);
        a.set(this);
        return a;
      };
      b.prototype.set = function(a) {
        this.matrix.set(a.matrix);
      };
      b.prototype.free = function() {
        b._dirtyStack.push(this);
      };
      b._dirtyStack = [];
      return b;
    }(g);
    k.PreRenderState = q;
    var t = function(a) {
      function b() {
        a.apply(this, arguments);
        this.isDirty = !0;
      }
      __extends(b, a);
      b.prototype.start = function(a, b) {
        this._dirtyRegion = b;
        var c = new q;
        c.matrix.setIdentity();
        a.visit(this, c);
        c.free();
      };
      b.prototype.visitGroup = function(a, b) {
        var c = a.getChildren();
        this.visitNode(a, b);
        for (var e = 0;e < c.length;e++) {
          var d = c[e], f = b.transform(d.getTransform());
          d.visit(this, f);
          f.free();
        }
      };
      b.prototype.visitNode = function(a, b) {
        a.hasFlags(16) && (this.isDirty = !0);
        a.toggleFlags();
        a.depth = b.depth++;
      };
      return b;
    }(c);
    k.PreRenderVisitor = t;
    g = function(a) {
      function b(c) {
        a.call(this);
        this.writer = c;
      }
      __extends(b, a);
      b.prototype.visitNode = function(a, b) {
      };
      b.prototype.visitShape = function(a, b) {
        this.writer.writeLn(a.toString());
        this.visitNode(a, b);
      };
      b.prototype.visitGroup = function(a, b) {
        this.visitNode(a, b);
        var c = a.getChildren();
        this.writer.enter(a.toString() + " " + c.length);
        for (var e = 0;e < c.length;e++) {
          c[e].visit(this, b);
        }
        this.writer.outdent();
      };
      b.prototype.visitStage = function(a, b) {
        this.visitGroup(a, b);
      };
      return b;
    }(c);
    k.TracingNodeVisitor = g;
    var m = function() {
      function c() {
        this._clip = -1;
        this._eventListeners = null;
        this._id = c._nextId++;
        this._type = 1;
        this._index = -1;
        this._parent = null;
        this.reset();
      }
      Object.defineProperty(c.prototype, "id", {get:function() {
        return this._id;
      }, enumerable:!0, configurable:!0});
      c.prototype._dispatchEvent = function(a) {
        if (this._eventListeners) {
          for (var b = this._eventListeners, c = 0;c < b.length;c++) {
            var e = b[c];
            e.type === a && e.listener(this, a);
          }
        }
      };
      c.prototype.addEventListener = function(a, b) {
        this._eventListeners || (this._eventListeners = []);
        this._eventListeners.push({type:a, listener:b});
      };
      c.prototype.removeEventListener = function(a, b) {
        for (var c = this._eventListeners, e = 0;e < c.length;e++) {
          var d = c[e];
          if (d.type === a && d.listener === b) {
            c.splice(e, 1);
            break;
          }
        }
      };
      Object.defineProperty(c.prototype, "properties", {get:function() {
        return this._properties || (this._properties = {});
      }, enumerable:!0, configurable:!0});
      c.prototype.reset = function() {
        this._flags = u.Default;
        this._properties = this._transform = this._layer = this._bounds = null;
        this.depth = -1;
      };
      Object.defineProperty(c.prototype, "clip", {get:function() {
        return this._clip;
      }, set:function(a) {
        this._clip = a;
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(c.prototype, "parent", {get:function() {
        return this._parent;
      }, enumerable:!0, configurable:!0});
      c.prototype.getTransformedBounds = function(a) {
        var b = this.getBounds(!0);
        if (a !== this && !b.isEmpty()) {
          var c = this.getTransform().getConcatenatedMatrix();
          a ? (a = a.getTransform().getInvertedConcatenatedMatrix(), a.preMultiply(c), a.transformRectangleAABB(b), a.free()) : c.transformRectangleAABB(b);
        }
        return b;
      };
      c.prototype._markCurrentBoundsAsDirtyRegion = function() {
      };
      c.prototype.getStage = function(a) {
        void 0 === a && (a = !0);
        for (var b = this._parent;b;) {
          if (b.isType(13)) {
            var c = b;
            if (a) {
              if (c.dirtyRegion) {
                return c;
              }
            } else {
              return c;
            }
          }
          b = b._parent;
        }
        return null;
      };
      c.prototype.getChildren = function(a) {
        throw void 0;
      };
      c.prototype.getBounds = function(a) {
        throw void 0;
      };
      c.prototype.setBounds = function(b) {
        (this._bounds || (this._bounds = a.createEmpty())).set(b);
        this.removeFlags(256);
      };
      c.prototype.clone = function() {
        throw void 0;
      };
      c.prototype.setFlags = function(a) {
        this._flags |= a;
      };
      c.prototype.hasFlags = function(a) {
        return (this._flags & a) === a;
      };
      c.prototype.hasAnyFlags = function(a) {
        return !!(this._flags & a);
      };
      c.prototype.removeFlags = function(a) {
        this._flags &= ~a;
      };
      c.prototype.toggleFlags = function() {
        this._flags &= -17;
      };
      c.prototype._propagateFlagsUp = function(a) {
        if (0 !== a && !this.hasFlags(a)) {
          this.hasFlags(2) || (a &= -257);
          this.setFlags(a);
          var b = this._parent;
          b && b._propagateFlagsUp(a);
        }
      };
      c.prototype._propagateFlagsDown = function(a) {
        throw void 0;
      };
      c.prototype.isAncestor = function(a) {
        for (;a;) {
          if (a === this) {
            return !0;
          }
          a = a._parent;
        }
        return !1;
      };
      c._getAncestors = function(a, b) {
        var d = c._path;
        for (d.length = 0;a && a !== b;) {
          d.push(a), a = a._parent;
        }
        return d;
      };
      c.prototype._findClosestAncestor = function() {
        for (var a = this;a;) {
          if (!1 === a.hasFlags(512)) {
            return a;
          }
          a = a._parent;
        }
        return null;
      };
      c.prototype.isType = function(a) {
        return this._type === a;
      };
      c.prototype.isTypeOf = function(a) {
        return (this._type & a) === a;
      };
      c.prototype.isLeaf = function() {
        return this.isType(33) || this.isType(3);
      };
      c.prototype.isLinear = function() {
        if (this.isLeaf()) {
          return !0;
        }
        if (this.isType(5)) {
          var a = this._children;
          if (1 === a.length && a[0].isLinear()) {
            return !0;
          }
        }
        return !1;
      };
      c.prototype.getTransformMatrix = function() {
        var a;
        void 0 === a && (a = !1);
        return this.getTransform().getMatrix(a);
      };
      c.prototype.getTransform = function() {
        null === this._transform && (this._transform = new f(this));
        return this._transform;
      };
      c.prototype.getLayer = function() {
        null === this._layer && (this._layer = new b(this));
        return this._layer;
      };
      c.prototype.visit = function(a, b) {
        switch(this._type) {
          case 1:
            a.visitNode(this, b);
            break;
          case 5:
            a.visitGroup(this, b);
            break;
          case 13:
            a.visitStage(this, b);
            break;
          case 3:
            a.visitShape(this, b);
            break;
          case 33:
            a.visitRenderable(this, b);
            break;
          default:
            d.Debug.unexpectedCase();
        }
      };
      c.prototype.invalidate = function() {
        this._propagateFlagsUp(u.UpOnInvalidate);
      };
      c.prototype.toString = function(a) {
        void 0 === a && (a = !1);
        var b = l[this._type] + " " + this._id;
        a && (b += " " + this._bounds.toString());
        return b;
      };
      c._path = [];
      c._nextId = 0;
      return c;
    }();
    k.Node = m;
    var h = function(b) {
      function c() {
        b.call(this);
        this._type = 5;
        this._children = [];
      }
      __extends(c, b);
      c.prototype.getChildren = function(a) {
        void 0 === a && (a = !1);
        return a ? this._children.slice(0) : this._children;
      };
      c.prototype.childAt = function(a) {
        return this._children[a];
      };
      Object.defineProperty(c.prototype, "child", {get:function() {
        return this._children[0];
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(c.prototype, "groupChild", {get:function() {
        return this._children[0];
      }, enumerable:!0, configurable:!0});
      c.prototype.addChild = function(a) {
        a._parent && a._parent.removeChildAt(a._index);
        a._parent = this;
        a._index = this._children.length;
        this._children.push(a);
        this._propagateFlagsUp(u.UpOnAddedOrRemoved);
        a._propagateFlagsDown(u.DownOnAddedOrRemoved);
      };
      c.prototype.removeChildAt = function(a) {
        var b = this._children[a];
        this._children.splice(a, 1);
        b._index = -1;
        b._parent = null;
        this._propagateFlagsUp(u.UpOnAddedOrRemoved);
        b._propagateFlagsDown(u.DownOnAddedOrRemoved);
      };
      c.prototype.clearChildren = function() {
        for (var a = 0;a < this._children.length;a++) {
          var b = this._children[a];
          b && (b._index = -1, b._parent = null, b._propagateFlagsDown(u.DownOnAddedOrRemoved));
        }
        this._children.length = 0;
        this._propagateFlagsUp(u.UpOnAddedOrRemoved);
      };
      c.prototype._propagateFlagsDown = function(a) {
        if (!this.hasFlags(a)) {
          this.setFlags(a);
          for (var b = this._children, c = 0;c < b.length;c++) {
            b[c]._propagateFlagsDown(a);
          }
        }
      };
      c.prototype.getBounds = function(b) {
        void 0 === b && (b = !1);
        var c = this._bounds || (this._bounds = a.createEmpty());
        if (this.hasFlags(256)) {
          c.setEmpty();
          for (var e = this._children, d = a.allocate(), f = 0;f < e.length;f++) {
            var g = e[f];
            d.set(g.getBounds());
            g.getTransformMatrix().transformRectangleAABB(d);
            c.union(d);
          }
          d.free();
          this.removeFlags(256);
        }
        return b ? c.clone() : c;
      };
      return c;
    }(m);
    k.Group = h;
    var f = function() {
      function a(b) {
        this._node = b;
        this._matrix = n.createIdentity();
        this._colorMatrix = k.ColorMatrix.createIdentity();
        this._concatenatedMatrix = n.createIdentity();
        this._invertedConcatenatedMatrix = n.createIdentity();
        this._concatenatedColorMatrix = k.ColorMatrix.createIdentity();
      }
      a.prototype.setMatrix = function(a) {
        this._matrix.isEqual(a) || (this._matrix.set(a), this._node._propagateFlagsUp(u.UpOnMoved), this._node._propagateFlagsDown(u.DownOnMoved));
      };
      a.prototype.setColorMatrix = function(a) {
        this._colorMatrix.set(a);
        this._node._propagateFlagsUp(u.UpOnColorMatrixChanged);
        this._node._propagateFlagsDown(u.DownOnColorMatrixChanged);
      };
      a.prototype.getMatrix = function(a) {
        void 0 === a && (a = !1);
        return a ? this._matrix.clone() : this._matrix;
      };
      a.prototype.hasColorMatrix = function() {
        return null !== this._colorMatrix;
      };
      a.prototype.getColorMatrix = function(a) {
        void 0 === a && (a = !1);
        null === this._colorMatrix && (this._colorMatrix = k.ColorMatrix.createIdentity());
        return a ? this._colorMatrix.clone() : this._colorMatrix;
      };
      a.prototype.getConcatenatedMatrix = function() {
        var a;
        void 0 === a && (a = !1);
        if (this._node.hasFlags(512)) {
          for (var b = this._node._findClosestAncestor(), c = m._getAncestors(this._node, b), e = b ? b.getTransform()._concatenatedMatrix.clone() : n.createIdentity(), d = c.length - 1;0 <= d;d--) {
            var b = c[d], f = b.getTransform();
            e.preMultiply(f._matrix);
            f._concatenatedMatrix.set(e);
            b.removeFlags(512);
          }
        }
        return a ? this._concatenatedMatrix.clone() : this._concatenatedMatrix;
      };
      a.prototype.getInvertedConcatenatedMatrix = function() {
        var a = !0;
        void 0 === a && (a = !1);
        this._node.hasFlags(1024) && (this.getConcatenatedMatrix().inverse(this._invertedConcatenatedMatrix), this._node.removeFlags(1024));
        return a ? this._invertedConcatenatedMatrix.clone() : this._invertedConcatenatedMatrix;
      };
      a.prototype.toString = function() {
        return this._matrix.toString();
      };
      return a;
    }();
    k.Transform = f;
    var b = function() {
      function a(b) {
        this._node = b;
        this._mask = null;
        this._blendMode = 1;
      }
      Object.defineProperty(a.prototype, "filters", {get:function() {
        return this._filters;
      }, set:function(a) {
        this._filters = a;
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(a.prototype, "blendMode", {get:function() {
        return this._blendMode;
      }, set:function(a) {
        this._blendMode = a;
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(a.prototype, "mask", {get:function() {
        return this._mask;
      }, set:function(a) {
        this._mask && this._mask !== a && this._mask.removeFlags(4);
        (this._mask = a) && this._mask.setFlags(4);
      }, enumerable:!0, configurable:!0});
      a.prototype.toString = function() {
        return v[this._blendMode];
      };
      return a;
    }();
    k.Layer = b;
    g = function(b) {
      function c(a) {
        b.call(this);
        this._source = a;
        this._type = 3;
        this.ratio = 0;
      }
      __extends(c, b);
      c.prototype.getBounds = function(b) {
        void 0 === b && (b = !1);
        var c = this._bounds || (this._bounds = a.createEmpty());
        this.hasFlags(256) && (c.set(this._source.getBounds()), this.removeFlags(256));
        return b ? c.clone() : c;
      };
      Object.defineProperty(c.prototype, "source", {get:function() {
        return this._source;
      }, enumerable:!0, configurable:!0});
      c.prototype._propagateFlagsDown = function(a) {
        this.setFlags(a);
      };
      c.prototype.getChildren = function(a) {
        return [this._source];
      };
      return c;
    }(m);
    k.Shape = g;
    k.RendererOptions = function() {
      return function() {
        this.debug = !1;
        this.paintRenderable = !0;
        this.paintViewport = this.paintFlashing = this.paintDirtyRegion = this.paintBounds = !1;
        this.clear = !0;
      };
    }();
    (function(a) {
      a[a.Canvas2D = 0] = "Canvas2D";
      a[a.WebGL = 1] = "WebGL";
      a[a.Both = 2] = "Both";
      a[a.DOM = 3] = "DOM";
      a[a.SVG = 4] = "SVG";
    })(k.Backend || (k.Backend = {}));
    c = function(b) {
      function c(d, f, g) {
        b.call(this);
        this._container = d;
        this._stage = f;
        this._options = g;
        this._viewport = a.createSquare();
        this._devicePixelRatio = 1;
      }
      __extends(c, b);
      Object.defineProperty(c.prototype, "viewport", {set:function(a) {
        this._viewport.set(a);
      }, enumerable:!0, configurable:!0});
      c.prototype.render = function() {
        throw void 0;
      };
      c.prototype.resize = function() {
        throw void 0;
      };
      c.prototype.screenShot = function(a, b) {
        throw void 0;
      };
      return c;
    }(c);
    k.Renderer = c;
    c = function(b) {
      function c(d, f, g) {
        void 0 === g && (g = !1);
        b.call(this);
        this._preVisitor = new t;
        this._flags &= -3;
        this._type = 13;
        this._scaleMode = c.DEFAULT_SCALE;
        this._align = c.DEFAULT_ALIGN;
        this._content = new h;
        this._content._flags &= -3;
        this.addChild(this._content);
        this.setFlags(16);
        this.setBounds(new a(0, 0, d, f));
        g ? (this._dirtyRegion = new w(d, f), this._dirtyRegion.addDirtyRectangle(new a(0, 0, d, f))) : this._dirtyRegion = null;
        this._updateContentMatrix();
      }
      __extends(c, b);
      Object.defineProperty(c.prototype, "dirtyRegion", {get:function() {
        return this._dirtyRegion;
      }, enumerable:!0, configurable:!0});
      c.prototype.setBounds = function(a) {
        b.prototype.setBounds.call(this, a);
        this._updateContentMatrix();
        this._dispatchEvent(1);
        this._dirtyRegion && (this._dirtyRegion = new w(a.w, a.h), this._dirtyRegion.addDirtyRectangle(a));
      };
      Object.defineProperty(c.prototype, "content", {get:function() {
        return this._content;
      }, enumerable:!0, configurable:!0});
      c.prototype.readyToRender = function() {
        this._preVisitor.isDirty = !1;
        this._preVisitor.start(this, this._dirtyRegion);
        return this._preVisitor.isDirty ? !0 : !1;
      };
      Object.defineProperty(c.prototype, "align", {get:function() {
        return this._align;
      }, set:function(a) {
        this._align = a;
        this._updateContentMatrix();
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(c.prototype, "scaleMode", {get:function() {
        return this._scaleMode;
      }, set:function(a) {
        this._scaleMode = a;
        this._updateContentMatrix();
      }, enumerable:!0, configurable:!0});
      c.prototype._updateContentMatrix = function() {
        if (this._scaleMode === c.DEFAULT_SCALE && this._align === c.DEFAULT_ALIGN) {
          this._content.getTransform().setMatrix(new n(1, 0, 0, 1, 0, 0));
        } else {
          var a = this.getBounds(), b = this._content.getBounds(), d = a.w / b.w, e = a.h / b.h;
          switch(this._scaleMode) {
            case 2:
              d = e = Math.max(d, e);
              break;
            case 4:
              d = e = 1;
              break;
            case 1:
              break;
            default:
              d = e = Math.min(d, e);
          }
          var f;
          f = this._align & 4 ? 0 : this._align & 8 ? a.w - b.w * d : (a.w - b.w * d) / 2;
          a = this._align & 1 ? 0 : this._align & 2 ? a.h - b.h * e : (a.h - b.h * e) / 2;
          this._content.getTransform().setMatrix(new n(d, 0, 0, e, f, a));
        }
      };
      c.DEFAULT_SCALE = 4;
      c.DEFAULT_ALIGN = 5;
      return c;
    }(h);
    k.Stage = c;
  })(d.GFX || (d.GFX = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    function a(a, c, d) {
      return a + (c - a) * d;
    }
    function n(b, c, d) {
      return a(b >> 24 & 255, c >> 24 & 255, d) << 24 | a(b >> 16 & 255, c >> 16 & 255, d) << 16 | a(b >> 8 & 255, c >> 8 & 255, d) << 8 | a(b & 255, c & 255, d);
    }
    var w = k.Geometry.Point, v = k.Geometry.Rectangle, u = k.Geometry.Matrix, l = d.ArrayUtilities.indexOf, c = function(a) {
      function c() {
        a.call(this);
        this._parents = [];
        this._renderableParents = [];
        this._invalidateEventListeners = null;
        this._flags &= -3;
        this._type = 33;
      }
      __extends(c, a);
      Object.defineProperty(c.prototype, "parents", {get:function() {
        return this._parents;
      }, enumerable:!0, configurable:!0});
      c.prototype.addParent = function(a) {
        l(this._parents, a);
        this._parents.push(a);
      };
      c.prototype.willRender = function() {
        for (var a = this._parents, b = 0;b < a.length;b++) {
          for (var c = a[b];c;) {
            if (c.isType(13)) {
              return !0;
            }
            if (!c.hasFlags(65536)) {
              break;
            }
            c = c._parent;
          }
        }
        return !1;
      };
      c.prototype.addRenderableParent = function(a) {
        l(this._renderableParents, a);
        this._renderableParents.push(a);
      };
      c.prototype.wrap = function() {
        for (var a, b = this._parents, c = 0;c < b.length;c++) {
          if (a = b[c], !a._parent) {
            return a;
          }
        }
        a = new k.Shape(this);
        this.addParent(a);
        return a;
      };
      c.prototype.invalidate = function() {
        this.setFlags(16);
        for (var a = this._parents, b = 0;b < a.length;b++) {
          a[b].invalidate();
        }
        a = this._renderableParents;
        for (b = 0;b < a.length;b++) {
          a[b].invalidate();
        }
        if (a = this._invalidateEventListeners) {
          for (b = 0;b < a.length;b++) {
            a[b](this);
          }
        }
      };
      c.prototype.addInvalidateEventListener = function(a) {
        this._invalidateEventListeners || (this._invalidateEventListeners = []);
        l(this._invalidateEventListeners, a);
        this._invalidateEventListeners.push(a);
      };
      c.prototype.getBounds = function(a) {
        void 0 === a && (a = !1);
        return a ? this._bounds.clone() : this._bounds;
      };
      c.prototype.getChildren = function(a) {
        return null;
      };
      c.prototype._propagateFlagsUp = function(a) {
        if (0 !== a && !this.hasFlags(a)) {
          for (var b = 0;b < this._parents.length;b++) {
            this._parents[b]._propagateFlagsUp(a);
          }
        }
      };
      c.prototype.render = function(a, b, c, d, e) {
      };
      return c;
    }(k.Node);
    k.Renderable = c;
    var g = function(a) {
      function c(d, e) {
        a.call(this);
        this.setBounds(d);
        this.render = e;
      }
      __extends(c, a);
      return c;
    }(c);
    k.CustomRenderable = g;
    (function(a) {
      a[a.Idle = 1] = "Idle";
      a[a.Playing = 2] = "Playing";
      a[a.Paused = 3] = "Paused";
      a[a.Ended = 4] = "Ended";
    })(k.RenderableVideoState || (k.RenderableVideoState = {}));
    g = function(a) {
      function c(d, f) {
        a.call(this);
        this._flags = 1048592;
        this._lastPausedTime = this._lastTimeInvalidated = 0;
        this._pauseHappening = this._seekHappening = !1;
        this._isDOMElement = !0;
        this.setBounds(new v(0, 0, 1, 1));
        this._assetId = d;
        this._eventSerializer = f;
        var g = document.createElement("video"), h = this._handleVideoEvent.bind(this);
        g.preload = "metadata";
        g.addEventListener("play", h);
        g.addEventListener("pause", h);
        g.addEventListener("ended", h);
        g.addEventListener("loadeddata", h);
        g.addEventListener("progress", h);
        g.addEventListener("suspend", h);
        g.addEventListener("loadedmetadata", h);
        g.addEventListener("error", h);
        g.addEventListener("seeking", h);
        g.addEventListener("seeked", h);
        g.addEventListener("canplay", h);
        g.style.position = "absolute";
        this._video = g;
        this._videoEventHandler = h;
        c._renderableVideos.push(this);
        "undefined" !== typeof registerInspectorAsset && registerInspectorAsset(-1, -1, this);
        this._state = 1;
      }
      __extends(c, a);
      Object.defineProperty(c.prototype, "video", {get:function() {
        return this._video;
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(c.prototype, "state", {get:function() {
        return this._state;
      }, enumerable:!0, configurable:!0});
      c.prototype.play = function() {
        this._state = 2;
        this._video.play();
      };
      c.prototype.pause = function() {
        this._state = 3;
        this._video.pause();
      };
      c.prototype._handleVideoEvent = function(a) {
        var b = null, c = this._video;
        switch(a.type) {
          case "play":
            if (!this._pauseHappening) {
              return;
            }
            a = 7;
            break;
          case "pause":
            if (2 === this._state) {
              c.play();
              return;
            }
            a = 6;
            this._pauseHappening = !0;
            break;
          case "ended":
            this._state = 4;
            this._notifyNetStream(3, b);
            a = 4;
            break;
          case "loadeddata":
            this._pauseHappening = !1;
            this._notifyNetStream(2, b);
            this.play();
            return;
          case "canplay":
            if (this._pauseHappening) {
              return;
            }
            a = 5;
            break;
          case "progress":
            a = 10;
            break;
          case "suspend":
            return;
          case "loadedmetadata":
            a = 1;
            b = {videoWidth:c.videoWidth, videoHeight:c.videoHeight, duration:c.duration};
            break;
          case "error":
            a = 11;
            b = {code:c.error.code};
            break;
          case "seeking":
            if (!this._seekHappening) {
              return;
            }
            a = 8;
            break;
          case "seeked":
            if (!this._seekHappening) {
              return;
            }
            a = 9;
            this._seekHappening = !1;
            break;
          default:
            return;
        }
        this._notifyNetStream(a, b);
      };
      c.prototype._notifyNetStream = function(a, b) {
        this._eventSerializer.sendVideoPlaybackEvent(this._assetId, a, b);
      };
      c.prototype.processControlRequest = function(a, b) {
        var c = this._video;
        switch(a) {
          case 1:
            c.src = b.url;
            this.play();
            this._notifyNetStream(0, null);
            break;
          case 9:
            c.paused && c.play();
            break;
          case 2:
            c && (b.paused && !c.paused ? (isNaN(b.time) ? this._lastPausedTime = c.currentTime : (0 !== c.seekable.length && (c.currentTime = b.time), this._lastPausedTime = b.time), this.pause()) : !b.paused && c.paused && (this.play(), isNaN(b.time) || this._lastPausedTime === b.time || 0 === c.seekable.length || (c.currentTime = b.time)));
            break;
          case 3:
            c && 0 !== c.seekable.length && (this._seekHappening = !0, c.currentTime = b.time);
            break;
          case 4:
            return c ? c.currentTime : 0;
          case 5:
            return c ? c.duration : 0;
          case 6:
            c && (c.volume = b.volume);
            break;
          case 7:
            if (!c) {
              return 0;
            }
            var d = -1;
            if (c.buffered) {
              for (var e = 0;e < c.buffered.length;e++) {
                d = Math.max(d, c.buffered.end(e));
              }
            } else {
              d = c.duration;
            }
            return Math.round(500 * d);
          case 8:
            return c ? Math.round(500 * c.duration) : 0;
        }
      };
      c.prototype.checkForUpdate = function() {
        this._lastTimeInvalidated !== this._video.currentTime && (this._isDOMElement || this.invalidate());
        this._lastTimeInvalidated = this._video.currentTime;
      };
      c.checkForVideoUpdates = function() {
        for (var a = c._renderableVideos, b = 0;b < a.length;b++) {
          var d = a[b];
          d.willRender() ? (d._video.parentElement || d.invalidate(), d._video.style.zIndex = d.parents[0].depth + "") : d._video.parentElement && d._dispatchEvent(2);
          a[b].checkForUpdate();
        }
      };
      c.prototype.render = function(a, b, c) {
        k.enterTimeline("RenderableVideo.render");
        (b = this._video) && 0 < b.videoWidth && a.drawImage(b, 0, 0, b.videoWidth, b.videoHeight, 0, 0, this._bounds.w, this._bounds.h);
        k.leaveTimeline("RenderableVideo.render");
      };
      c._renderableVideos = [];
      return c;
    }(c);
    k.RenderableVideo = g;
    g = function(a) {
      function c(d, e) {
        a.call(this);
        this._flags = 1048592;
        this.properties = {};
        this.setBounds(e);
        d instanceof HTMLCanvasElement ? this._initializeSourceCanvas(d) : this._sourceImage = d;
      }
      __extends(c, a);
      c.FromDataBuffer = function(a, b, d) {
        k.enterTimeline("RenderableBitmap.FromDataBuffer");
        var f = document.createElement("canvas");
        f.width = d.w;
        f.height = d.h;
        d = new c(f, d);
        d.updateFromDataBuffer(a, b);
        k.leaveTimeline("RenderableBitmap.FromDataBuffer");
        return d;
      };
      c.FromNode = function(a, b, d, f, g) {
        k.enterTimeline("RenderableBitmap.FromFrame");
        var h = document.createElement("canvas"), l = a.getBounds();
        h.width = l.w;
        h.height = l.h;
        h = new c(h, l);
        h.drawNode(a, b, d, f, g);
        k.leaveTimeline("RenderableBitmap.FromFrame");
        return h;
      };
      c.FromImage = function(a, b, d) {
        return new c(a, new v(0, 0, b, d));
      };
      c.prototype.updateFromDataBuffer = function(a, b) {
        if (k.imageUpdateOption.value) {
          var c = b.buffer;
          k.enterTimeline("RenderableBitmap.updateFromDataBuffer", {length:b.length});
          if (4 !== a && 5 !== a && 6 !== a) {
            var e = this._bounds, f = this._imageData;
            f && f.width === e.w && f.height === e.h || (f = this._imageData = this._context.createImageData(e.w, e.h));
            k.imageConvertOption.value && (k.enterTimeline("ColorUtilities.convertImage"), c = new Int32Array(c), e = new Int32Array(f.data.buffer), d.ColorUtilities.convertImage(a, 3, c, e), k.leaveTimeline("ColorUtilities.convertImage"));
            k.enterTimeline("putImageData");
            this._ensureSourceCanvas();
            this._context.putImageData(f, 0, 0);
            k.leaveTimeline("putImageData");
          }
          this.invalidate();
          k.leaveTimeline("RenderableBitmap.updateFromDataBuffer");
        }
      };
      c.prototype.readImageData = function(a) {
        a.writeRawBytes(this.imageData.data);
      };
      c.prototype.render = function(a, b, c) {
        k.enterTimeline("RenderableBitmap.render");
        this.renderSource ? a.drawImage(this.renderSource, 0, 0) : this._renderFallback(a);
        k.leaveTimeline("RenderableBitmap.render");
      };
      c.prototype.drawNode = function(a, b, c, d, e) {
        k.enterTimeline("RenderableBitmap.drawFrame");
        c = k.Canvas2D;
        d = this.getBounds();
        (new c.Canvas2DRenderer(this._canvas, null)).renderNode(a, e || d, b);
        k.leaveTimeline("RenderableBitmap.drawFrame");
      };
      c.prototype._initializeSourceCanvas = function(a) {
        this._canvas = a;
        this._context = this._canvas.getContext("2d");
      };
      c.prototype._ensureSourceCanvas = function() {
        if (!this._canvas) {
          var a = document.createElement("canvas"), b = this._bounds;
          a.width = b.w;
          a.height = b.h;
          this._initializeSourceCanvas(a);
        }
      };
      Object.defineProperty(c.prototype, "imageData", {get:function() {
        this._canvas || (this._ensureSourceCanvas(), this._context.drawImage(this._sourceImage, 0, 0), this._sourceImage = null);
        return this._context.getImageData(0, 0, this._bounds.w, this._bounds.h);
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(c.prototype, "renderSource", {get:function() {
        return this._canvas || this._sourceImage;
      }, enumerable:!0, configurable:!0});
      c.prototype._renderFallback = function(a) {
      };
      return c;
    }(c);
    k.RenderableBitmap = g;
    (function(a) {
      a[a.Fill = 0] = "Fill";
      a[a.Stroke = 1] = "Stroke";
      a[a.StrokeFill = 2] = "StrokeFill";
    })(k.PathType || (k.PathType = {}));
    var q = function() {
      return function(a, c, d, f) {
        this.type = a;
        this.style = c;
        this.smoothImage = d;
        this.strokeProperties = f;
        this.path = new Path2D;
      };
    }();
    k.StyledPath = q;
    var t = function() {
      return function(a, c, d, f, g) {
        this.thickness = a;
        this.scaleMode = c;
        this.capsStyle = d;
        this.jointsStyle = f;
        this.miterLimit = g;
      };
    }();
    k.StrokeProperties = t;
    var m = function(a) {
      function c(d, e, f, g) {
        a.call(this);
        this._flags = 6291472;
        this.properties = {};
        this.setBounds(g);
        this._id = d;
        this._pathData = e;
        this._textures = f;
        f.length && this.setFlags(1048576);
      }
      __extends(c, a);
      c.prototype.update = function(a, b, c) {
        this.setBounds(c);
        this._pathData = a;
        this._paths = null;
        this._textures = b;
        this.setFlags(1048576);
        this.invalidate();
      };
      c.prototype.render = function(a, b, c, d, e) {
        void 0 === d && (d = null);
        void 0 === e && (e = !1);
        a.fillStyle = a.strokeStyle = "transparent";
        b = this._deserializePaths(this._pathData, a, b);
        k.enterTimeline("RenderableShape.render", this);
        for (c = 0;c < b.length;c++) {
          var f = b[c];
          a.mozImageSmoothingEnabled = a.msImageSmoothingEnabled = a.imageSmoothingEnabled = f.smoothImage;
          if (0 === f.type) {
            d ? d.addPath(f.path, a.currentTransform) : (a.fillStyle = e ? "#000000" : f.style, a.fill(f.path, "evenodd"), a.fillStyle = "transparent");
          } else {
            if (!d && !e) {
              a.strokeStyle = f.style;
              var g = 1;
              f.strokeProperties && (g = f.strokeProperties.scaleMode, a.lineWidth = f.strokeProperties.thickness, a.lineCap = f.strokeProperties.capsStyle, a.lineJoin = f.strokeProperties.jointsStyle, a.miterLimit = f.strokeProperties.miterLimit);
              var h = a.lineWidth;
              (h = 1 === h || 3 === h) && a.translate(.5, .5);
              a.flashStroke(f.path, g);
              h && a.translate(-.5, -.5);
              a.strokeStyle = "transparent";
            }
          }
        }
        k.leaveTimeline("RenderableShape.render");
      };
      c.prototype._deserializePaths = function(a, b, f) {
        k.enterTimeline("RenderableShape.deserializePaths");
        if (this._paths) {
          return this._paths;
        }
        f = this._paths = [];
        var g = null, h = null, l = 0, m = 0, n, q, u = !1, v = 0, w = 0, H = a.commands, A = a.coordinates, z = a.styles, G = z.position = 0;
        a = a.commandsPosition;
        for (var L = 0;L < a;L++) {
          switch(H[L]) {
            case 9:
              u && g && (g.lineTo(v, w), h && h.lineTo(v, w));
              u = !0;
              l = v = A[G++] / 20;
              m = w = A[G++] / 20;
              g && g.moveTo(l, m);
              h && h.moveTo(l, m);
              break;
            case 10:
              l = A[G++] / 20;
              m = A[G++] / 20;
              g && g.lineTo(l, m);
              h && h.lineTo(l, m);
              break;
            case 11:
              n = A[G++] / 20;
              q = A[G++] / 20;
              l = A[G++] / 20;
              m = A[G++] / 20;
              g && g.quadraticCurveTo(n, q, l, m);
              h && h.quadraticCurveTo(n, q, l, m);
              break;
            case 12:
              n = A[G++] / 20;
              q = A[G++] / 20;
              var F = A[G++] / 20, S = A[G++] / 20, l = A[G++] / 20, m = A[G++] / 20;
              g && g.bezierCurveTo(n, q, F, S, l, m);
              h && h.bezierCurveTo(n, q, F, S, l, m);
              break;
            case 1:
              g = this._createPath(0, d.ColorUtilities.rgbaToCSSStyle(z.readUnsignedInt()), !1, null, l, m);
              break;
            case 3:
              n = this._readBitmap(z, b);
              g = this._createPath(0, n.style, n.smoothImage, null, l, m);
              break;
            case 2:
              g = this._createPath(0, this._readGradient(z, b), !1, null, l, m);
              break;
            case 4:
              g = null;
              break;
            case 5:
              h = d.ColorUtilities.rgbaToCSSStyle(z.readUnsignedInt());
              z.position += 1;
              n = z.readByte();
              q = c.LINE_CAPS_STYLES[z.readByte()];
              F = c.LINE_JOINTS_STYLES[z.readByte()];
              n = new t(A[G++] / 20, n, q, F, z.readByte());
              h = this._createPath(1, h, !1, n, l, m);
              break;
            case 6:
              h = this._createPath(2, this._readGradient(z, b), !1, null, l, m);
              break;
            case 7:
              n = this._readBitmap(z, b);
              h = this._createPath(2, n.style, n.smoothImage, null, l, m);
              break;
            case 8:
              h = null;
          }
        }
        u && g && (g.lineTo(v, w), h && h.lineTo(v, w));
        this._pathData = null;
        k.leaveTimeline("RenderableShape.deserializePaths");
        return f;
      };
      c.prototype._createPath = function(a, b, c, d, e, f) {
        a = new q(a, b, c, d);
        this._paths.push(a);
        a.path.moveTo(e, f);
        return a.path;
      };
      c.prototype._readMatrix = function(a) {
        return new u(a.readFloat(), a.readFloat(), a.readFloat(), a.readFloat(), a.readFloat(), a.readFloat());
      };
      c.prototype._readGradient = function(a, b) {
        var c = a.readUnsignedByte(), e = 2 * a.readShort() / 255, f = this._readMatrix(a), c = 16 === c ? b.createLinearGradient(-1, 0, 1, 0) : b.createRadialGradient(e, 0, 0, 0, 0, 1);
        c.setTransform && c.setTransform(f.toSVGMatrix());
        f = a.readUnsignedByte();
        for (e = 0;e < f;e++) {
          var g = a.readUnsignedByte() / 255, h = d.ColorUtilities.rgbaToCSSStyle(a.readUnsignedInt());
          c.addColorStop(g, h);
        }
        a.position += 2;
        return c;
      };
      c.prototype._readBitmap = function(a, b) {
        var c = a.readUnsignedInt(), d = this._readMatrix(a), e = a.readBoolean() ? "repeat" : "no-repeat", f = a.readBoolean();
        (c = this._textures[c]) ? (e = b.createPattern(c.renderSource, e), e.setTransform(d.toSVGMatrix())) : e = null;
        return {style:e, smoothImage:f};
      };
      c.prototype._renderFallback = function(a) {
        this.fillStyle || (this.fillStyle = d.ColorStyle.randomStyle());
        var b = this._bounds;
        a.save();
        a.beginPath();
        a.lineWidth = 2;
        a.fillStyle = this.fillStyle;
        a.fillRect(b.x, b.y, b.w, b.h);
        a.restore();
      };
      c.LINE_CAPS_STYLES = ["round", "butt", "square"];
      c.LINE_JOINTS_STYLES = ["round", "bevel", "miter"];
      return c;
    }(c);
    k.RenderableShape = m;
    g = function(b) {
      function c() {
        b.apply(this, arguments);
        this._flags = 7340048;
        this._morphPaths = Object.create(null);
      }
      __extends(c, b);
      c.prototype._deserializePaths = function(b, c, e) {
        k.enterTimeline("RenderableMorphShape.deserializePaths");
        if (this._morphPaths[e]) {
          return this._morphPaths[e];
        }
        var f = this._morphPaths[e] = [], g = null, h = null, l = 0, q = 0, u, v, w = !1, K = 0, H = 0, A = b.commands, z = b.coordinates, G = b.morphCoordinates, L = b.styles, F = b.morphStyles;
        L.position = 0;
        var S = F.position = 0;
        b = b.commandsPosition;
        for (var U = 0;U < b;U++) {
          switch(A[U]) {
            case 9:
              w && g && (g.lineTo(K, H), h && h.lineTo(K, H));
              w = !0;
              l = K = a(z[S], G[S++], e) / 20;
              q = H = a(z[S], G[S++], e) / 20;
              g && g.moveTo(l, q);
              h && h.moveTo(l, q);
              break;
            case 10:
              l = a(z[S], G[S++], e) / 20;
              q = a(z[S], G[S++], e) / 20;
              g && g.lineTo(l, q);
              h && h.lineTo(l, q);
              break;
            case 11:
              u = a(z[S], G[S++], e) / 20;
              v = a(z[S], G[S++], e) / 20;
              l = a(z[S], G[S++], e) / 20;
              q = a(z[S], G[S++], e) / 20;
              g && g.quadraticCurveTo(u, v, l, q);
              h && h.quadraticCurveTo(u, v, l, q);
              break;
            case 12:
              u = a(z[S], G[S++], e) / 20;
              v = a(z[S], G[S++], e) / 20;
              var N = a(z[S], G[S++], e) / 20, R = a(z[S], G[S++], e) / 20, l = a(z[S], G[S++], e) / 20, q = a(z[S], G[S++], e) / 20;
              g && g.bezierCurveTo(u, v, N, R, l, q);
              h && h.bezierCurveTo(u, v, N, R, l, q);
              break;
            case 1:
              g = this._createMorphPath(0, e, d.ColorUtilities.rgbaToCSSStyle(n(L.readUnsignedInt(), F.readUnsignedInt(), e)), !1, null, l, q);
              break;
            case 3:
              u = this._readMorphBitmap(L, F, e, c);
              g = this._createMorphPath(0, e, u.style, u.smoothImage, null, l, q);
              break;
            case 2:
              u = this._readMorphGradient(L, F, e, c);
              g = this._createMorphPath(0, e, u, !1, null, l, q);
              break;
            case 4:
              g = null;
              break;
            case 5:
              u = a(z[S], G[S++], e) / 20;
              h = d.ColorUtilities.rgbaToCSSStyle(n(L.readUnsignedInt(), F.readUnsignedInt(), e));
              L.position += 1;
              v = L.readByte();
              N = m.LINE_CAPS_STYLES[L.readByte()];
              R = m.LINE_JOINTS_STYLES[L.readByte()];
              u = new t(u, v, N, R, L.readByte());
              h = this._createMorphPath(1, e, h, !1, u, l, q);
              break;
            case 6:
              u = this._readMorphGradient(L, F, e, c);
              h = this._createMorphPath(2, e, u, !1, null, l, q);
              break;
            case 7:
              u = this._readMorphBitmap(L, F, e, c);
              h = this._createMorphPath(2, e, u.style, u.smoothImage, null, l, q);
              break;
            case 8:
              h = null;
          }
        }
        w && g && (g.lineTo(K, H), h && h.lineTo(K, H));
        k.leaveTimeline("RenderableMorphShape.deserializPaths");
        return f;
      };
      c.prototype._createMorphPath = function(a, b, c, d, e, f, g) {
        a = new q(a, c, d, e);
        this._morphPaths[b].push(a);
        a.path.moveTo(f, g);
        return a.path;
      };
      c.prototype._readMorphMatrix = function(b, c, d) {
        return new u(a(b.readFloat(), c.readFloat(), d), a(b.readFloat(), c.readFloat(), d), a(b.readFloat(), c.readFloat(), d), a(b.readFloat(), c.readFloat(), d), a(b.readFloat(), c.readFloat(), d), a(b.readFloat(), c.readFloat(), d));
      };
      c.prototype._readMorphGradient = function(b, c, e, f) {
        var g = b.readUnsignedByte(), h = 2 * b.readShort() / 255, k = this._readMorphMatrix(b, c, e);
        f = 16 === g ? f.createLinearGradient(-1, 0, 1, 0) : f.createRadialGradient(h, 0, 0, 0, 0, 1);
        f.setTransform && f.setTransform(k.toSVGMatrix());
        k = b.readUnsignedByte();
        for (g = 0;g < k;g++) {
          var h = a(b.readUnsignedByte() / 255, c.readUnsignedByte() / 255, e), l = n(b.readUnsignedInt(), c.readUnsignedInt(), e), l = d.ColorUtilities.rgbaToCSSStyle(l);
          f.addColorStop(h, l);
        }
        b.position += 2;
        return f;
      };
      c.prototype._readMorphBitmap = function(a, b, c, d) {
        var e = a.readUnsignedInt();
        b = this._readMorphMatrix(a, b, c);
        c = a.readBoolean() ? "repeat" : "no-repeat";
        a = a.readBoolean();
        d = d.createPattern(this._textures[e]._canvas, c);
        d.setTransform(b.toSVGMatrix());
        return {style:d, smoothImage:a};
      };
      return c;
    }(m);
    k.RenderableMorphShape = g;
    var h = function() {
      function a() {
        this.align = this.leading = this.descent = this.ascent = this.width = this.y = this.x = 0;
        this.runs = [];
      }
      a._getMeasureContext = function() {
        a._measureContext || (a._measureContext = document.createElement("canvas").getContext("2d"));
        return a._measureContext;
      };
      a.prototype.addRun = function(c, d, g, h) {
        if (g) {
          var k = a._getMeasureContext();
          k.font = c;
          k = k.measureText(g).width | 0;
          this.runs.push(new f(c, d, g, k, h));
          this.width += k;
        }
      };
      a.prototype.wrap = function(c) {
        var d = [this], g = this.runs, h = this;
        h.width = 0;
        h.runs = [];
        for (var k = a._getMeasureContext(), l = 0;l < g.length;l++) {
          var m = g[l], n = m.text;
          m.text = "";
          m.width = 0;
          k.font = m.font;
          for (var q = c, t = n.split(/[\s.-]/), u = 0, v = 0;v < t.length;v++) {
            var w = t[v], H = n.substr(u, w.length + 1), A = k.measureText(H).width | 0;
            if (A > q) {
              do {
                if (m.text && (h.runs.push(m), h.width += m.width, m = new f(m.font, m.fillStyle, "", 0, m.underline), q = new a, q.y = h.y + h.descent + h.leading + h.ascent | 0, q.ascent = h.ascent, q.descent = h.descent, q.leading = h.leading, q.align = h.align, d.push(q), h = q), q = c - A, 0 > q) {
                  for (var z = H.length, G = H;1 < z && !(z--, G = H.substr(0, z), A = k.measureText(G).width | 0, A <= c);) {
                  }
                  m.text = G;
                  m.width = A;
                  H = H.substr(z);
                  A = k.measureText(H).width | 0;
                }
              } while (H && 0 > q);
            } else {
              q -= A;
            }
            m.text += H;
            m.width += A;
            u += w.length + 1;
          }
          h.runs.push(m);
          h.width += m.width;
        }
        return d;
      };
      return a;
    }();
    k.TextLine = h;
    var f = function() {
      return function(a, c, d, f, g) {
        void 0 === a && (a = "");
        void 0 === c && (c = "");
        void 0 === d && (d = "");
        void 0 === f && (f = 0);
        void 0 === g && (g = !1);
        this.font = a;
        this.fillStyle = c;
        this.text = d;
        this.width = f;
        this.underline = g;
      };
    }();
    k.TextRun = f;
    g = function(a) {
      function c(d) {
        a.call(this);
        this._flags = 1048592;
        this.properties = {};
        this._textBounds = d.clone();
        this._textRunData = null;
        this._plainText = "";
        this._borderColor = this._backgroundColor = 0;
        this._matrix = u.createIdentity();
        this._coords = null;
        this._scrollV = 1;
        this._scrollH = 0;
        this.textRect = d.clone();
        this.lines = [];
        this.setBounds(d);
      }
      __extends(c, a);
      c.prototype.setBounds = function(c) {
        a.prototype.setBounds.call(this, c);
        this._textBounds.set(c);
        this.textRect.setElements(c.x + 2, c.y + 2, c.w - 2, c.h - 2);
      };
      c.prototype.setContent = function(a, b, c, d) {
        this._textRunData = b;
        this._plainText = a;
        this._matrix.set(c);
        this._coords = d;
        this.lines = [];
      };
      c.prototype.setStyle = function(a, b, c, d) {
        this._backgroundColor = a;
        this._borderColor = b;
        this._scrollV = c;
        this._scrollH = d;
      };
      c.prototype.reflow = function(a, b) {
        var c = this._textRunData;
        if (c) {
          var e = this._bounds, f = e.w - 4, g = this._plainText, l = this.lines, m = new h, n = 0, q = 0, t = 0, u = 0, v = 0, w = -1;
          for (k.enterTimeline("RenderableText.reflow");c.position < c.length;) {
            var z = c.readInt(), G = c.readInt(), L = c.readInt(), F = c.readUTF(), S = c.readInt(), U = c.readInt(), N = c.readInt();
            S > t && (t = S);
            U > u && (u = U);
            N > v && (v = N);
            S = c.readBoolean();
            U = "";
            c.readBoolean() && (U += "italic ");
            S && (U += "bold ");
            L = U + L + "px " + F;
            F = c.readInt();
            F = d.ColorUtilities.rgbToHex(F);
            S = c.readInt();
            -1 === w && (w = S);
            c.readBoolean();
            c.readInt();
            c.readInt();
            c.readInt();
            c.readInt();
            c.readInt();
            for (var S = c.readBoolean(), R = "", U = !1;!U;z++) {
              U = z >= G - 1;
              N = g[z];
              if ("\r" !== N && "\n" !== N && (R += N, z < g.length - 1)) {
                continue;
              }
              m.addRun(L, F, R, S);
              if (m.runs.length) {
                l.length && (n += v);
                n += t;
                m.y = n | 0;
                n += u;
                m.ascent = t;
                m.descent = u;
                m.leading = v;
                m.align = w;
                if (b && m.width > f) {
                  for (m = m.wrap(f), R = 0;R < m.length;R++) {
                    var T = m[R], n = T.y + T.descent + T.leading;
                    l.push(T);
                    T.width > q && (q = T.width);
                  }
                } else {
                  l.push(m), m.width > q && (q = m.width);
                }
                m = new h;
              } else {
                n += t + u + v;
              }
              R = "";
              if (U) {
                v = u = t = 0;
                w = -1;
                break;
              }
              "\r" === N && "\n" === g[z + 1] && z++;
            }
            m.addRun(L, F, R, S);
          }
          c = g[g.length - 1];
          "\r" !== c && "\n" !== c || l.push(m);
          c = this.textRect;
          c.w = q;
          c.h = n;
          if (a) {
            if (!b) {
              f = q;
              q = e.w;
              switch(a) {
                case 1:
                  c.x = q - (f + 4) >> 1;
                  break;
                case 3:
                  c.x = q - (f + 4);
              }
              this._textBounds.setElements(c.x - 2, c.y - 2, c.w + 4, c.h + 4);
              e.w = f + 4;
            }
            e.x = c.x - 2;
            e.h = n + 4;
          } else {
            this._textBounds = e;
          }
          for (z = 0;z < l.length;z++) {
            if (e = l[z], e.width < f) {
              switch(e.align) {
                case 1:
                  e.x = f - e.width | 0;
                  break;
                case 2:
                  e.x = (f - e.width) / 2 | 0;
              }
            }
          }
          this.invalidate();
          k.leaveTimeline("RenderableText.reflow");
        }
      };
      c.roundBoundPoints = function(a) {
        for (var b = 0;b < a.length;b++) {
          var c = a[b];
          c.x = Math.floor(c.x + .1) + .5;
          c.y = Math.floor(c.y + .1) + .5;
        }
      };
      c.prototype.render = function(a) {
        k.enterTimeline("RenderableText.render");
        a.save();
        var b = this._textBounds;
        this._backgroundColor && (a.fillStyle = d.ColorUtilities.rgbaToCSSStyle(this._backgroundColor), a.fillRect(b.x, b.y, b.w, b.h));
        if (this._borderColor) {
          a.strokeStyle = d.ColorUtilities.rgbaToCSSStyle(this._borderColor);
          a.lineCap = "square";
          a.lineWidth = 1;
          var f = c.absoluteBoundPoints, g = a.currentTransform;
          g ? (b = b.clone(), (new u(g.a, g.b, g.c, g.d, g.e, g.f)).transformRectangle(b, f), a.setTransform(1, 0, 0, 1, 0, 0)) : (f[0].x = b.x, f[0].y = b.y, f[1].x = b.x + b.w, f[1].y = b.y, f[2].x = b.x + b.w, f[2].y = b.y + b.h, f[3].x = b.x, f[3].y = b.y + b.h);
          c.roundBoundPoints(f);
          b = new Path2D;
          b.moveTo(f[0].x, f[0].y);
          b.lineTo(f[1].x, f[1].y);
          b.lineTo(f[2].x, f[2].y);
          b.lineTo(f[3].x, f[3].y);
          b.lineTo(f[0].x, f[0].y);
          a.stroke(b);
          g && a.setTransform(g.a, g.b, g.c, g.d, g.e, g.f);
        }
        this._coords ? this._renderChars(a) : this._renderLines(a);
        a.restore();
        k.leaveTimeline("RenderableText.render");
      };
      c.prototype._renderChars = function(a) {
        if (this._matrix) {
          var b = this._matrix;
          a.transform(b.a, b.b, b.c, b.d, b.tx, b.ty);
        }
        for (var b = this.lines, c = this._coords, d = c.position = 0;d < b.length;d++) {
          for (var e = b[d].runs, f = 0;f < e.length;f++) {
            var g = e[f];
            a.font = g.font;
            a.fillStyle = g.fillStyle;
            for (var g = g.text, h = 0;h < g.length;h++) {
              var k = c.readInt() / 20, l = c.readInt() / 20;
              a.fillText(g[h], k, l);
            }
          }
        }
      };
      c.prototype._renderLines = function(a) {
        var b = this._textBounds;
        a.beginPath();
        a.rect(b.x + 2, b.y + 2, b.w - 4, b.h - 4);
        a.clip();
        a.translate(b.x - this._scrollH + 2, b.y + 2);
        for (var c = this.lines, d = this._scrollV, e = 0, f = 0;f < c.length;f++) {
          var g = c[f], h = g.x, k = g.y;
          if (f + 1 < d) {
            e = k + g.descent + g.leading;
          } else {
            k -= e;
            if (f + 1 - d && k > b.h) {
              break;
            }
            for (var l = g.runs, m = 0;m < l.length;m++) {
              var n = l[m];
              a.font = n.font;
              a.fillStyle = n.fillStyle;
              n.underline && a.fillRect(h, k + g.descent / 2 | 0, n.width, 1);
              a.textAlign = "left";
              a.textBaseline = "alphabetic";
              a.fillText(n.text, h, k);
              h += n.width;
            }
          }
        }
      };
      c.absoluteBoundPoints = [new w(0, 0), new w(0, 0), new w(0, 0), new w(0, 0)];
      return c;
    }(c);
    k.RenderableText = g;
    c = function(a) {
      function c(d, e) {
        a.call(this);
        this._flags = 3145728;
        this.properties = {};
        this.setBounds(new v(0, 0, d, e));
      }
      __extends(c, a);
      Object.defineProperty(c.prototype, "text", {get:function() {
        return this._text;
      }, set:function(a) {
        this._text = a;
      }, enumerable:!0, configurable:!0});
      c.prototype.render = function(a, b, c) {
        a.save();
        a.textBaseline = "top";
        a.fillStyle = "white";
        a.fillText(this.text, 0, 0);
        a.restore();
      };
      return c;
    }(c);
    k.Label = c;
  })(d.GFX || (d.GFX = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    var a = d.ColorUtilities.clampByte, n = function() {
      return function() {
      };
    }();
    k.Filter = n;
    var w = function(a) {
      function d(k, c, g) {
        a.call(this);
        this.blurX = k;
        this.blurY = c;
        this.quality = g;
      }
      __extends(d, a);
      return d;
    }(n);
    k.BlurFilter = w;
    w = function(a) {
      function d(k, c, g, n, t, m, h, f, b, e, r) {
        a.call(this);
        this.alpha = k;
        this.angle = c;
        this.blurX = g;
        this.blurY = n;
        this.color = t;
        this.distance = m;
        this.hideObject = h;
        this.inner = f;
        this.knockout = b;
        this.quality = e;
        this.strength = r;
      }
      __extends(d, a);
      return d;
    }(n);
    k.DropshadowFilter = w;
    n = function(a) {
      function d(k, c, g, n, t, m, h, f) {
        a.call(this);
        this.alpha = k;
        this.blurX = c;
        this.blurY = g;
        this.color = n;
        this.inner = t;
        this.knockout = m;
        this.quality = h;
        this.strength = f;
      }
      __extends(d, a);
      return d;
    }(n);
    k.GlowFilter = n;
    (function(a) {
      a[a.Unknown = 0] = "Unknown";
      a[a.Identity = 1] = "Identity";
    })(k.ColorMatrixType || (k.ColorMatrixType = {}));
    n = function() {
      function d(a) {
        this._data = new Float32Array(a);
        this._type = 0;
      }
      d.prototype.clone = function() {
        var a = new d(this._data);
        a._type = this._type;
        return a;
      };
      d.prototype.set = function(a) {
        this._data.set(a._data);
        this._type = a._type;
      };
      d.prototype.toWebGLMatrix = function() {
        return new Float32Array(this._data);
      };
      d.prototype.asWebGLMatrix = function() {
        return this._data.subarray(0, 16);
      };
      d.prototype.asWebGLVector = function() {
        return this._data.subarray(16, 20);
      };
      d.prototype.isIdentity = function() {
        if (this._type & 1) {
          return !0;
        }
        var a = this._data;
        return 1 == a[0] && 0 == a[1] && 0 == a[2] && 0 == a[3] && 0 == a[4] && 1 == a[5] && 0 == a[6] && 0 == a[7] && 0 == a[8] && 0 == a[9] && 1 == a[10] && 0 == a[11] && 0 == a[12] && 0 == a[13] && 0 == a[14] && 1 == a[15] && 0 == a[16] && 0 == a[17] && 0 == a[18] && 0 == a[19];
      };
      d.createIdentity = function() {
        var a = new d([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0]);
        a._type = 1;
        return a;
      };
      d.prototype.setMultipliersAndOffsets = function(a, d, c, g, k, n, m, h) {
        for (var f = this._data, b = 0;b < f.length;b++) {
          f[b] = 0;
        }
        f[0] = a;
        f[5] = d;
        f[10] = c;
        f[15] = g;
        f[16] = k / 255;
        f[17] = n / 255;
        f[18] = m / 255;
        f[19] = h / 255;
        this._type = 0;
      };
      d.prototype.transformRGBA = function(d) {
        var k = d >> 24 & 255, c = d >> 16 & 255, g = d >> 8 & 255, n = d & 255, t = this._data;
        d = a(k * t[0] + c * t[1] + g * t[2] + n * t[3] + 255 * t[16]);
        var m = a(k * t[4] + c * t[5] + g * t[6] + n * t[7] + 255 * t[17]), h = a(k * t[8] + c * t[9] + g * t[10] + n * t[11] + 255 * t[18]), k = a(k * t[12] + c * t[13] + g * t[14] + n * t[15] + 255 * t[19]);
        return d << 24 | m << 16 | h << 8 | k;
      };
      d.prototype.multiply = function(a) {
        if (!(a._type & 1)) {
          var d = this._data, c = a._data;
          a = d[0];
          var g = d[1], k = d[2], n = d[3], m = d[4], h = d[5], f = d[6], b = d[7], e = d[8], r = d[9], p = d[10], v = d[11], w = d[12], B = d[13], D = d[14], M = d[15], E = d[16], J = d[17], P = d[18], y = d[19], K = c[0], H = c[1], A = c[2], z = c[3], G = c[4], L = c[5], F = c[6], S = c[7], U = c[8], N = c[9], R = c[10], T = c[11], X = c[12], da = c[13], x = c[14], Y = c[15], V = c[16], ba = c[17], Z = c[18], c = c[19];
          d[0] = a * K + m * H + e * A + w * z;
          d[1] = g * K + h * H + r * A + B * z;
          d[2] = k * K + f * H + p * A + D * z;
          d[3] = n * K + b * H + v * A + M * z;
          d[4] = a * G + m * L + e * F + w * S;
          d[5] = g * G + h * L + r * F + B * S;
          d[6] = k * G + f * L + p * F + D * S;
          d[7] = n * G + b * L + v * F + M * S;
          d[8] = a * U + m * N + e * R + w * T;
          d[9] = g * U + h * N + r * R + B * T;
          d[10] = k * U + f * N + p * R + D * T;
          d[11] = n * U + b * N + v * R + M * T;
          d[12] = a * X + m * da + e * x + w * Y;
          d[13] = g * X + h * da + r * x + B * Y;
          d[14] = k * X + f * da + p * x + D * Y;
          d[15] = n * X + b * da + v * x + M * Y;
          d[16] = a * V + m * ba + e * Z + w * c + E;
          d[17] = g * V + h * ba + r * Z + B * c + J;
          d[18] = k * V + f * ba + p * Z + D * c + P;
          d[19] = n * V + b * ba + v * Z + M * c + y;
          this._type = 0;
        }
      };
      Object.defineProperty(d.prototype, "alphaMultiplier", {get:function() {
        return this._data[15];
      }, enumerable:!0, configurable:!0});
      d.prototype.hasOnlyAlphaMultiplier = function() {
        var a = this._data;
        return 1 == a[0] && 0 == a[1] && 0 == a[2] && 0 == a[3] && 0 == a[4] && 1 == a[5] && 0 == a[6] && 0 == a[7] && 0 == a[8] && 0 == a[9] && 1 == a[10] && 0 == a[11] && 0 == a[12] && 0 == a[13] && 0 == a[14] && 0 == a[16] && 0 == a[17] && 0 == a[18] && 0 == a[19];
      };
      d.prototype.equals = function(a) {
        if (!a) {
          return !1;
        }
        if (this._type === a._type && 1 === this._type) {
          return !0;
        }
        var d = this._data;
        a = a._data;
        for (var c = 0;20 > c;c++) {
          if (.001 < Math.abs(d[c] - a[c])) {
            return !1;
          }
        }
        return !0;
      };
      d.prototype.toSVGFilterMatrix = function() {
        var a = this._data;
        return [a[0], a[4], a[8], a[12], a[16], a[1], a[5], a[9], a[13], a[17], a[2], a[6], a[10], a[14], a[18], a[3], a[7], a[11], a[15], a[19]].join(" ");
      };
      return d;
    }();
    k.ColorMatrix = n;
  })(d.GFX || (d.GFX = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    k.timelineBuffer = new d.Tools.Profiler.TimelineBuffer("Player");
    k.counter = new d.Metrics.Counter(!1);
    k.writer = null;
    k.enterTimeline = function(a, d) {
      k.writer && k.writer.enter(a);
    };
    k.leaveTimeline = function(a, d) {
      k.writer && k.writer.leave(a);
    };
  })(d.Player || (d.Player = {}));
})(Shumway || (Shumway = {}));
var Shumway$$inline_621 = Shumway || (Shumway = {});
Shumway$$inline_621.playerOptions = Shumway$$inline_621.Settings.shumwayOptions.register(new Shumway$$inline_621.Options.OptionSet("Player Options"));
Shumway$$inline_621.frameEnabledOption = Shumway$$inline_621.playerOptions.register(new Shumway$$inline_621.Options.Option("enableFrames", "Enable Frame Execution", "boolean", !0, "Enable frame execution."));
Shumway$$inline_621.timerEnabledOption = Shumway$$inline_621.playerOptions.register(new Shumway$$inline_621.Options.Option("enableTimers", "Enable Timers", "boolean", !0, "Enable timer events."));
Shumway$$inline_621.pumpEnabledOption = Shumway$$inline_621.playerOptions.register(new Shumway$$inline_621.Options.Option("enablePump", "Enable Pump", "boolean", !0, "Enable display tree serialization."));
Shumway$$inline_621.pumpRateOption = Shumway$$inline_621.playerOptions.register(new Shumway$$inline_621.Options.Option("pumpRate", "Pump Rate", "number", 60, "Number of times / second that the display list is synchronized.", {range:{min:1, max:120, step:1}}));
Shumway$$inline_621.frameRateOption = Shumway$$inline_621.playerOptions.register(new Shumway$$inline_621.Options.Option("frameRate", "Frame Rate", "number", -1, "Override a movie's frame rate, set to -1 to use the movies default frame rate.", {range:{min:-1, max:120, step:1}}));
Shumway$$inline_621.tracePlayerOption = Shumway$$inline_621.playerOptions.register(new Shumway$$inline_621.Options.Option("tp", "Trace Player", "number", 0, "Trace player every n frames.", {range:{min:0, max:512, step:1}}));
Shumway$$inline_621.traceMouseEventOption = Shumway$$inline_621.playerOptions.register(new Shumway$$inline_621.Options.Option("tme", "Trace Mouse Events", "boolean", !1, "Trace mouse events."));
Shumway$$inline_621.frameRateMultiplierOption = Shumway$$inline_621.playerOptions.register(new Shumway$$inline_621.Options.Option("", "Frame Rate Multiplier", "number", 1, "Play frames at a faster rate.", {range:{min:1, max:16, step:1}}));
Shumway$$inline_621.dontSkipFramesOption = Shumway$$inline_621.playerOptions.register(new Shumway$$inline_621.Options.Option("", "Disables Frame Skipping", "boolean", !1, "Play all frames, e.g. no skipping frame during throttle."));
Shumway$$inline_621.playAllSymbolsOption = Shumway$$inline_621.playerOptions.register(new Shumway$$inline_621.Options.Option("", "Play Symbols", "boolean", !1, "Plays all SWF symbols automatically."));
Shumway$$inline_621.playSymbolOption = Shumway$$inline_621.playerOptions.register(new Shumway$$inline_621.Options.Option("", "Play Symbol Number", "number", 0, "Select symbol by Id.", {range:{min:0, max:2E4, step:1}}));
Shumway$$inline_621.playSymbolFrameDurationOption = Shumway$$inline_621.playerOptions.register(new Shumway$$inline_621.Options.Option("", "Play Symbol Duration", "number", 0, "How many frames to play, 0 for all frames of the movie clip.", {range:{min:0, max:128, step:1}}));
Shumway$$inline_621.playSymbolCountOption = Shumway$$inline_621.playerOptions.register(new Shumway$$inline_621.Options.Option("", "Play Symbol Count", "number", -1, "Select symbol count.", {range:{min:0, max:2E4, step:1}}));
(function(d) {
  var k = function() {
    function a() {
      this._expectedNextFrameAt = performance.now();
      this._drawStats = [];
      this._drawsSkipped = this._drawStarted = this._drawStatsSum = 0;
      this._expectedNextFrameAt = performance.now();
      this._onTime = !0;
      this._trackDelta = !1;
      this._onTimeDelta = this._delta = 0;
    }
    Object.defineProperty(a.prototype, "shallSkipDraw", {get:function() {
      if (this._drawsSkipped >= a.MAX_DRAWS_TO_SKIP) {
        return !1;
      }
      var d = this._drawStats.length < a.STATS_TO_REMEMBER ? 0 : this._drawStatsSum / this._drawStats.length;
      return performance.now() + d + a.INTERVAL_PADDING_MS > this._expectedNextFrameAt;
    }, enumerable:!0, configurable:!0});
    Object.defineProperty(a.prototype, "nextFrameIn", {get:function() {
      return Math.max(0, this._expectedNextFrameAt - performance.now());
    }, enumerable:!0, configurable:!0});
    Object.defineProperty(a.prototype, "isOnTime", {get:function() {
      return this._onTime;
    }, enumerable:!0, configurable:!0});
    a.prototype.startFrame = function(d) {
      var k = d = 1E3 / d, v = this._onTimeDelta + this._delta;
      0 !== v && (0 > v ? k *= a.SPEED_ADJUST_RATE : 0 < v && (k /= a.SPEED_ADJUST_RATE), this._onTimeDelta += d - k);
      this._expectedNextFrameAt += k;
      this._onTime = !0;
    };
    a.prototype.endFrame = function() {
      var d = performance.now() + a.INTERVAL_PADDING_MS;
      d > this._expectedNextFrameAt && (this._trackDelta && (this._onTimeDelta += this._expectedNextFrameAt - d, console.log(this._onTimeDelta)), this._expectedNextFrameAt = d, this._onTime = !1);
    };
    a.prototype.startDraw = function() {
      this._drawsSkipped = 0;
      this._drawStarted = performance.now();
    };
    a.prototype.endDraw = function() {
      var d = performance.now() - this._drawStarted;
      this._drawStats.push(d);
      for (this._drawStatsSum += d;this._drawStats.length > a.STATS_TO_REMEMBER;) {
        this._drawStatsSum -= this._drawStats.shift();
      }
    };
    a.prototype.skipDraw = function() {
      this._drawsSkipped++;
    };
    a.prototype.setDelta = function(a) {
      this._trackDelta && (this._delta = a);
    };
    a.prototype.startTrackDelta = function() {
      this._trackDelta = !0;
    };
    a.prototype.endTrackDelta = function() {
      this._trackDelta && (this._trackDelta = !1, this._onTimeDelta = this._delta = 0);
    };
    a.STATS_TO_REMEMBER = 50;
    a.MAX_DRAWS_TO_SKIP = 2;
    a.INTERVAL_PADDING_MS = 4;
    a.SPEED_ADJUST_RATE = .9;
    return a;
  }();
  d.FrameScheduler = k;
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var k = d.AVM2.AS.flash, w = k.display, v = k.display.BitmapData, u = k.display.DisplayObjectFlags, l = k.display.BlendMode, c = k.display.PixelSnapping, g = k.geom.Point, q = d.Bounds, t = k.ui.MouseCursor, m = d.Player.writer, h = function() {
        function a() {
          this.phase = 0;
          this.roots = null;
        }
        a.prototype.begin = function(a) {
          this.roots = [a];
        };
        a.prototype.remoteObjects = function() {
          this.phase = 0;
          for (var a = this.roots, c = 0;c < a.length;c++) {
            d.Player.enterTimeline("remoting objects"), this.writeDirtyDisplayObjects(a[c]), d.Player.leaveTimeline("remoting objects");
          }
        };
        a.prototype.remoteReferences = function() {
          this.phase = 1;
          for (var a = this.roots, c = 0;c < a.length;c++) {
            d.Player.enterTimeline("remoting references"), this.writeDirtyDisplayObjects(a[c], !0), d.Player.leaveTimeline("remoting references");
          }
        };
        a.prototype.writeDirtyDisplayObjects = function(a, c) {
          void 0 === c && (c = !1);
          var f = this, g = this.roots;
          a.visit(function(a) {
            a._hasAnyFlags(u.Dirty) && (f.writeUpdateFrame(a), g && a.mask && d.ArrayUtilities.pushUnique(g, a.mask._findFurthestAncestorOrSelf()));
            f.writeDirtyAssets(a);
            if (a._hasFlags(536870912)) {
              return 0;
            }
            c && a._removeFlags(536870912);
            return 2;
          }, 0);
        };
        a.prototype.writeStage = function(a, c) {
          m && m.writeLn("Sending Stage");
          this.output.writeInt(104);
          this.output.writeInt(a._id);
          this.output.writeInt(a.color);
          this._writeRectangle(new q(0, 0, 20 * a.stageWidth, 20 * a.stageHeight));
          this.output.writeInt(k.display.StageAlign.toNumber(a.align));
          this.output.writeInt(k.display.StageScaleMode.toNumber(a.scaleMode));
          this.output.writeInt(k.display.StageDisplayState.toNumber(a.displayState));
          var d = k.ui.Mouse.cursor;
          if (c) {
            if (this.output.writeInt(c._id), d === t.AUTO) {
              var f = c;
              do {
                if (k.display.SimpleButton.isType(f) || k.display.Sprite.isType(f) && f.buttonMode && c.useHandCursor) {
                  d = t.BUTTON;
                  break;
                }
                f = f._parent;
              } while (f && f !== a);
            }
          } else {
            this.output.writeInt(-1);
          }
          this.output.writeInt(t.toNumber(d));
        };
        a.prototype.writeGraphics = function(a) {
          if (a._isDirty) {
            m && m.writeLn("Sending Graphics: " + a._id);
            for (var c = a._textures, d = c.length, f = 0;f < d;f++) {
              c[f] && this.writeBitmapData(c[f]);
            }
            this.output.writeInt(101);
            this.output.writeInt(a._id);
            this.output.writeInt(-1);
            this._writeRectangle(a._getContentBounds());
            this._writeAsset(a._graphicsData.toPlainObject());
            this.output.writeInt(d);
            for (f = 0;f < d;f++) {
              this.output.writeInt(c[f] ? c[f]._id : -1);
            }
            a._isDirty = !1;
          }
        };
        a.prototype.writeNetStream = function(a, c) {
          a._isDirty && (m && m.writeLn("Sending NetStream: " + a._id), this.output.writeInt(105), this.output.writeInt(a._id), this._writeRectangle(c), a._isDirty = !1);
        };
        a.prototype.writeBitmapData = function(a) {
          a._isDirty && (m && m.writeLn("Sending BitmapData: " + a._id), this.output.writeInt(102), this.output.writeInt(a._id), this.output.writeInt(a._symbol ? a._symbol.id : -1), this._writeRectangle(a._getContentBounds()), this.output.writeInt(a._type), this._writeAsset(a._dataBuffer.toPlainObject()), a._isDirty = !1);
        };
        a.prototype.writeTextContent = function(a) {
          if (a.flags & d.TextContentFlags.Dirty) {
            m && m.writeLn("Sending TextContent: " + a._id);
            this.output.writeInt(103);
            this.output.writeInt(a._id);
            this.output.writeInt(-1);
            this._writeRectangle(a.bounds);
            this._writeMatrix(a.matrix || k.geom.Matrix.FROZEN_IDENTITY_MATRIX);
            this.output.writeInt(a.backgroundColor);
            this.output.writeInt(a.borderColor);
            this.output.writeInt(a.autoSize);
            this.output.writeBoolean(a.wordWrap);
            this.output.writeInt(a.scrollV);
            this.output.writeInt(a.scrollH);
            this._writeAsset(a.plainText);
            this._writeAsset(a.textRunData.toPlainObject());
            var c = a.coords;
            if (c) {
              var f = c.length;
              this.output.writeInt(f);
              for (var g = 0;g < f;g++) {
                this.output.writeInt(c[g]);
              }
            } else {
              this.output.writeInt(0);
            }
            a.flags &= ~d.TextContentFlags.Dirty;
          }
        };
        a.prototype.writeClippedObjectsCount = function(a) {
          if (0 <= a._clipDepth && a._parent) {
            var c = a._parent.getChildIndex(a);
            a = a._parent.getClipDepthIndex(a._clipDepth);
            if (0 > a - c) {
              this.output.writeInt(-1);
            } else {
              for (var d = c + 1;d <= c;d++) {
              }
              this.output.writeInt(a - c);
            }
          } else {
            this.output.writeInt(-1);
          }
        };
        a.prototype.writeUpdateFrame = function(a) {
          this.output.writeInt(100);
          this.output.writeInt(a._id);
          m && m.writeLn("Sending UpdateFrame: " + a.debugName(!0));
          var d = !1, f = a._hasFlags(1048576), g = a._hasFlags(67108864), h = a._hasFlags(1073741824), q = null;
          k.media.Video.isType(a) && (q = a);
          var t = !1;
          1 === this.phase && (t = a._hasAnyFlags(65011712), d = a._hasFlags(134217728));
          var v = null;
          w.Bitmap.isType(a) && (v = a);
          var M = a._hasFlags(268435456), E;
          E = 0 | (f ? 1 : 0) | (g ? 8 : 0);
          E |= d ? 64 : 0;
          E |= M ? 128 : 0;
          E |= h ? 32 : 0;
          E |= t ? 4 : 0;
          this.output.writeInt(E);
          f && this._writeMatrix(a._getMatrix());
          g && this._writeColorTransform(a._colorTransform);
          d && this.output.writeInt(a.mask ? a.mask._id : -1);
          M && this.writeClippedObjectsCount(a);
          h && (this.output.writeInt(a._ratio), this.output.writeInt(l.toNumber(a._blendMode)), this._writeFilters(a.filters), this.output.writeBoolean(a._hasFlags(1)), this.output.writeBoolean(a.cacheAsBitmap), v ? (this.output.writeInt(c.toNumber(v.pixelSnapping)), this.output.writeInt(v.smoothing ? 1 : 0)) : (this.output.writeInt(c.toNumber(c.AUTO)), this.output.writeInt(1)));
          d = a._getGraphics();
          f = a._getTextContent();
          if (t) {
            m && m.enter("Children: {");
            if (v) {
              v.bitmapData ? (this.output.writeInt(1), this.output.writeInt(134217728 | v.bitmapData._id)) : this.output.writeInt(0);
            } else {
              if (q) {
                q._netStream ? (this.output.writeInt(1), this.output.writeInt(134217728 | q._netStream._id)) : this.output.writeInt(0);
              } else {
                if (t = d || f ? 1 : 0, (q = a._children) && (t += q.length), this.output.writeInt(t), d ? (m && m.writeLn("Reference Graphics: " + d._id), this.output.writeInt(134217728 | d._id)) : f && (m && m.writeLn("Reference TextContent: " + f._id), this.output.writeInt(134217728 | f._id)), q) {
                  for (t = 0;t < q.length;t++) {
                    m && m.writeLn("Reference DisplayObject: " + q[t].debugName()), this.output.writeInt(q[t]._id), 0 <= q[t]._clipDepth && q[t]._setFlags(268435456);
                  }
                }
              }
            }
            m && m.leave("}");
          }
          1 === this.phase && a._removeFlags(u.Dirty);
        };
        a.prototype.writeDirtyAssets = function(a) {
          var c = a._getGraphics();
          c ? this.writeGraphics(c) : (c = a._getTextContent()) ? this.writeTextContent(c) : (c = null, w.Bitmap.isType(a) ? (c = a, c.bitmapData && this.writeBitmapData(c.bitmapData)) : (c = null, k.media.Video.isType(a) && (c = a, c._netStream && this.writeNetStream(c._netStream, c._getContentBounds()))));
        };
        a.prototype.writeDrawToBitmap = function(a, c, d, f, g, h, k) {
          void 0 === d && (d = null);
          void 0 === f && (f = null);
          void 0 === g && (g = null);
          void 0 === h && (h = null);
          void 0 === k && (k = !1);
          this.output.writeInt(200);
          this.output.writeInt(a._id);
          v.isType(c) ? this.output.writeInt(134217728 | c._id) : this.output.writeInt(c._id);
          a = 0 | (d ? 1 : 0) | (f ? 8 : 0);
          a |= h ? 16 : 0;
          this.output.writeInt(a);
          d && this._writeMatrix(d);
          f && this._writeColorTransform(f);
          h && this._writeRectangle(q.FromRectangle(h));
          this.output.writeInt(l.toNumber(g));
          this.output.writeBoolean(k);
        };
        a.prototype._writeMatrix = function(a) {
          this.output.write6Floats(a.a, a.b, a.c, a.d, a.tx, a.ty);
        };
        a.prototype._writeRectangle = function(a) {
          this.output.write4Ints(a.xMin, a.yMin, a.width, a.height);
        };
        a.prototype._writeAsset = function(a) {
          this.output.writeInt(this.outputAssets.length);
          this.outputAssets.push(a);
        };
        a.prototype._writeFilters = function(a) {
          for (var c = 0, f = 0;f < a.length;f++) {
            k.filters.BlurFilter.isType(a[f]) || k.filters.DropShadowFilter.isType(a[f]) || k.filters.GlowFilter.isType(a[f]) ? c++ : d.Debug.somewhatImplemented(a[f].toString());
          }
          this.output.writeInt(c);
          for (f = 0;f < a.length;f++) {
            c = a[f], k.filters.BlurFilter.isType(c) ? (this.output.writeInt(0), this.output.writeFloat(c.blurX), this.output.writeFloat(c.blurY), this.output.writeInt(c.quality)) : k.filters.DropShadowFilter.isType(c) ? (this.output.writeInt(1), this.output.writeFloat(c.alpha), this.output.writeFloat(c.angle), this.output.writeFloat(c.blurX), this.output.writeFloat(c.blurY), this.output.writeInt(c.color), this.output.writeFloat(c.distance), this.output.writeBoolean(c.hideObject), this.output.writeBoolean(c.inner), 
            this.output.writeBoolean(c.knockout), this.output.writeInt(c.quality), this.output.writeFloat(c.strength)) : k.filters.GlowFilter.isType(c) && (this.output.writeInt(1), this.output.writeFloat(c.alpha), this.output.writeFloat(0), this.output.writeFloat(c.blurX), this.output.writeFloat(c.blurY), this.output.writeInt(c.color), this.output.writeFloat(0), this.output.writeBoolean(!1), this.output.writeBoolean(c.inner), this.output.writeBoolean(c.knockout), this.output.writeInt(c.quality), 
            this.output.writeFloat(c.strength));
          }
        };
        a.prototype._writeColorTransform = function(a) {
          var c = this.output, d = a.redMultiplier, f = a.greenMultiplier, g = a.blueMultiplier, h = a.alphaMultiplier, k = a.redOffset, l = a.greenOffset, m = a.blueOffset;
          a = a.alphaOffset;
          k === l && l === m && m === a && 0 === a && d === f && f === g && 1 === g ? 1 === h ? c.writeInt(0) : (c.writeInt(1), c.writeFloat(h)) : (c.writeInt(2), c.writeFloat(d), c.writeFloat(f), c.writeFloat(g), c.writeFloat(h), c.writeInt(k), c.writeInt(l), c.writeInt(m), c.writeInt(a));
        };
        a.prototype.writeRequestBitmapData = function(a) {
          m && m.writeLn("Sending BitmapData Request");
          this.output.writeInt(106);
          this.output.writeInt(a._id);
        };
        return a;
      }();
      a.PlayerChannelSerializer = h;
      h = function() {
        function a() {
        }
        a.prototype.read = function() {
          switch(this.input.readInt()) {
            case 300:
              return this._readMouseEvent();
            case 301:
              return this._readKeyboardEvent();
            case 302:
              return this._readFocusEvent();
          }
        };
        a.prototype._readFocusEvent = function() {
          return {tag:302, type:this.input.readInt()};
        };
        a.prototype._readMouseEvent = function() {
          var a = this.input, c = a.readInt(), c = d.Remoting.MouseEventNames[c], f = a.readFloat(), h = a.readFloat(), k = a.readInt(), a = a.readInt();
          return {tag:300, type:c, point:new g(f, h), ctrlKey:!!(a & 1), altKey:!!(a & 2), shiftKey:!!(a & 4), buttons:k};
        };
        a.prototype._readKeyboardEvent = function() {
          var a = this.input, c = a.readInt(), c = d.Remoting.KeyboardEventNames[c], f = a.readInt(), g = a.readInt(), h = a.readInt(), a = a.readInt();
          return {tag:301, type:c, keyCode:f, charCode:g, location:h, ctrlKey:!!(a & 1), altKey:!!(a & 2), shiftKey:!!(a & 4)};
        };
        return a;
      }();
      a.PlayerChannelDeserializer = h;
    })(k.Player || (k.Player = {}));
  })(d.Remoting || (d.Remoting = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    var a = d.Debug.somewhatImplemented, n = d.AVM2.AS.flash, w = d.ArrayUtilities.DataBuffer, v = d.AVM2.Runtime.AVM2, u = n.events.Event, l = n.display.DisplayObject, c = n.events.EventDispatcher, g = n.display.Loader, q = n.ui.MouseEventDispatcher, t = n.ui.KeyboardEventDispatcher, m = function() {
      function a() {
        this._observers = [];
      }
      a.prototype.addObserver = function(a) {
        this._observers.push(a);
      };
      a.prototype.removeObserver = function(a) {
        a = this._observers.indexOf(a);
        0 <= a && this._observers.splice(a, 1);
      };
      a.prototype.update = function(a, c) {
        throw Error("This method is abstract");
      };
      a.prototype.updateAndGet = function(a, c) {
        throw Error("This method is abstract");
      };
      a.prototype.frame = function() {
        throw Error("This method is abstract");
      };
      a.prototype.videoControl = function(a, c, d) {
        throw Error("This method is abstract");
      };
      a.prototype.registerFont = function(a, c) {
        throw Error("This method is abstract");
      };
      a.prototype.registerImage = function(a, c, d) {
        throw Error("This method is abstract");
      };
      a.prototype.fscommand = function(a, c) {
        throw Error("This method is abstract");
      };
      a.prototype.processUpdates = function(a, c) {
        var f = new d.Remoting.Player.PlayerChannelDeserializer;
        f.input = a;
        f.inputAssets = c;
        var g = f.read();
        switch(g.tag) {
          case 301:
            this._observers.forEach(function(a) {
              a.keyboardEvent(g);
            });
            break;
          case 300:
            this._observers.forEach(function(a) {
              a.mouseEvent(g);
            });
            break;
          case 302:
            this._observers.forEach(function(a) {
              a.focusEvent(g);
            });
        }
      };
      a.prototype.processDisplayParameters = function(a) {
        this._observers.forEach(function(c) {
          c.displayParameters(a);
        });
      };
      a.prototype.processVideoEvent = function(a, c, d) {
        this._observers.forEach(function(f) {
          f.videoEvent(a, c, d);
        });
      };
      return a;
    }();
    k.GFXServiceBase = m;
    var h = function() {
      function a(b) {
        this._videoEventListeners = [];
        this._player = b;
        this._keyboardEventDispatcher = new t;
        this._mouseEventDispatcher = new q;
        this._writer = new d.IndentingWriter;
      }
      a.prototype.videoEvent = function(a, c, f) {
        a = this._videoEventListeners[a];
        d.Debug.assert(a, "Video event listener is not found");
        a(c, f);
      };
      a.prototype.displayParameters = function(a) {
        this._player._stage.setStageContainerSize(a.stageWidth, a.stageHeight, a.pixelRatio);
      };
      a.prototype.focusEvent = function(a) {
        switch(a.type) {
          case 0:
            this._player._isPageVisible = !1;
            break;
          case 1:
            this._player._isPageVisible = !0;
            break;
          case 2:
            this._player._hasFocus = !1;
            break;
          case 3:
            c.broadcastEventDispatchQueue.dispatchEvent(u.getBroadcastInstance(u.ACTIVATE)), this._player._hasFocus = !0;
        }
      };
      a.prototype.keyboardEvent = function(a) {
        this._keyboardEventDispatcher.target = this._player._stage.focus ? this._player._stage.focus : this._player._stage;
        this._keyboardEventDispatcher.dispatchKeyboardEvent(a);
      };
      a.prototype.mouseEvent = function(a) {
        this._mouseEventDispatcher.stage = this._player._stage;
        var c = this._mouseEventDispatcher.handleMouseEvent(a);
        d.traceMouseEventOption.value && (this._writer.writeLn("Mouse Event: type: " + a.type + ", point: " + a.point + ", target: " + c + (c ? ", name: " + c._name : "")), "click" === a.type && c && c.debugTrace());
        this._player._currentMouseTarget = this._mouseEventDispatcher.currentTarget;
      };
      a.prototype.registerEventListener = function(a, c) {
        this._videoEventListeners[a] = c;
      };
      return a;
    }(), m = function() {
      function c(a, e) {
        void 0 === e && (e = "dev");
        this._lastPumpTime = this._framesPlayed = 0;
        this._hasFocus = this._isPageVisible = !0;
        this._loaderUrl = this._swfUrl = this._pageUrl = this._currentMouseTarget = null;
        this._crossDomainSWFLoadingWhitelist = [];
        this._writer = new d.IndentingWriter;
        this._gfxService = a;
        this._gfxServiceObserver = new h(this);
        this._gfxService.addObserver(this._gfxServiceObserver);
        this._env = e;
        v.instance.globals["Shumway.Player.Utils"] = this;
      }
      Object.defineProperty(c.prototype, "stage", {get:function() {
        return this._stage;
      }, enumerable:!0, configurable:!0});
      c.prototype._shouldThrottleDownRendering = function() {
        return !this._isPageVisible;
      };
      c.prototype._shouldThrottleDownFrameExecution = function() {
        return !this._isPageVisible;
      };
      Object.defineProperty(c.prototype, "pageUrl", {get:function() {
        return this._pageUrl;
      }, set:function(a) {
        this._pageUrl = a || null;
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(c.prototype, "loaderUrl", {get:function() {
        return this._loaderUrl;
      }, set:function(a) {
        this._loaderUrl = a || null;
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(c.prototype, "swfUrl", {get:function() {
        return this._swfUrl;
      }, enumerable:!0, configurable:!0});
      c.prototype.load = function(a, c) {
        this._swfUrl = this._loaderUrl = a;
        this._stage = new n.display.Stage;
        var f = this._loaderInfo = (this._loader = n.display.Loader.getRootLoader()).contentLoaderInfo;
        d.playAllSymbolsOption.value ? (this._playAllSymbols(), f._allowCodeExecution = !1) : this._enterRootLoadingLoop();
        this.addToSWFLoadingWhitelist(d.FileLoadingService.instance.resolveUrl(a), !1);
        f = this.createLoaderContext();
        if (c) {
          var g = d.Timeline.BinarySymbol.FromData({id:-1, data:c}), h = g.symbolClass.initializeFrom(g);
          g.symbolClass.instanceConstructorNoInitialize.call(h);
          this._loader.loadBytes(h, f);
        } else {
          this._loader.load(new n.net.URLRequest(a), f);
        }
      };
      c.prototype.createLoaderContext = function() {
        var a = new n.system.LoaderContext;
        if (this.movieParams) {
          var c = {}, d;
          for (d in this.movieParams) {
            c.asSetPublicProperty(d, this.movieParams[d]);
          }
          a.parameters = c;
        }
        return a;
      };
      c.prototype._pumpDisplayListUpdates = function() {
        this.syncDisplayObject(this._stage, !0);
      };
      c.prototype.syncDisplayObject = function(a, c) {
        void 0 === c && (c = !0);
        var f = new w, g = [], h = new d.Remoting.Player.PlayerChannelSerializer;
        h.output = f;
        h.outputAssets = g;
        n.display.Stage.isType(a) && h.writeStage(a, this._currentMouseTarget);
        h.begin(a);
        h.remoteObjects();
        h.remoteReferences();
        f.writeInt(0);
        k.enterTimeline("remoting assets");
        var l;
        c ? this._gfxService.update(f, g) : l = this._gfxService.updateAndGet(f, g);
        k.leaveTimeline("remoting assets");
        return l;
      };
      c.prototype.requestBitmapData = function(a) {
        var c = new w, f = [], g = new d.Remoting.Player.PlayerChannelSerializer;
        g.output = c;
        g.outputAssets = f;
        g.writeRequestBitmapData(a);
        c.writeInt(0);
        return this._gfxService.updateAndGet(c, f);
      };
      c.prototype.drawToBitmap = function(a, c, f, g, h, l, m) {
        void 0 === f && (f = null);
        void 0 === g && (g = null);
        void 0 === h && (h = null);
        void 0 === l && (l = null);
        void 0 === m && (m = !1);
        var q = new w, t = [], u = new d.Remoting.Player.PlayerChannelSerializer;
        u.output = q;
        u.outputAssets = t;
        u.writeBitmapData(a);
        n.display.BitmapData.isType(c) ? u.writeBitmapData(c) : (u.begin(c), u.remoteObjects(), u.remoteReferences());
        u.writeDrawToBitmap(a, c, f, g, h, l, m);
        q.writeInt(0);
        k.enterTimeline("sendUpdates");
        this._gfxService.updateAndGet(q, t);
        k.leaveTimeline("sendUpdates");
      };
      c.prototype.registerEventListener = function(a, c) {
        this._gfxServiceObserver.registerEventListener(a, c);
      };
      c.prototype.notifyVideoControl = function(a, c, d) {
        return this._gfxService.videoControl(a, c, d);
      };
      c.prototype.executeFSCommand = function(b, c) {
        switch(b) {
          case "quit":
            this._leaveEventLoop();
            break;
          default:
            a("FSCommand " + b);
        }
        this._gfxService.fscommand(b, c);
      };
      c.prototype.requestRendering = function() {
        this._pumpDisplayListUpdates();
      };
      c.prototype._pumpUpdates = function() {
        if (d.dontSkipFramesOption.value || !(this._shouldThrottleDownRendering() || performance.now() - this._lastPumpTime < 1E3 / d.pumpRateOption.value)) {
          k.enterTimeline("pump"), d.pumpEnabledOption.value && (this._pumpDisplayListUpdates(), this._lastPumpTime = performance.now()), k.leaveTimeline("pump");
        }
      };
      c.prototype._leaveSyncLoop = function() {
        clearInterval(this._frameTimeout);
      };
      c.prototype._getFrameInterval = function() {
        var a = d.frameRateOption.value;
        0 > a && (a = this._stage.frameRate);
        return Math.floor(1E3 / a);
      };
      c.prototype._enterEventLoop = function() {
        function a() {
          c._frameTimeout = setTimeout(a, c._getFrameInterval());
          c._eventLoopTick();
        }
        this._eventLoopIsRunning = !0;
        var c = this;
        "test" === this._env ? (n.external.ExternalInterface._initJS(), n.external.ExternalInterface._addCallback("__tick__", function(a, b) {
          console.log("tick");
          c._eventLoopTick();
        }), n.external.ExternalInterface._addCallback("__takeScreenshot__", function(a, b) {
        }), this._eventLoopTick()) : a();
      };
      c.prototype._leaveEventLoop = function() {
        clearTimeout(this._frameTimeout);
        this._eventLoopIsRunning = !1;
      };
      c.prototype._enterRootLoadingLoop = function() {
        function a() {
          var h = f.contentLoaderInfo;
          if (h._file) {
            if ("test" !== c._env || g.getRootLoader().content) {
              var k = c._stage, l = void 0 !== c.defaultStageColor ? c.defaultStageColor : h._file.backgroundColor;
              k._loaderInfo = h;
              k.align = c.stageAlign || "";
              !c.stageScale || 0 > n.display.StageScaleMode.toNumber(c.stageScale) ? k.scaleMode = n.display.StageScaleMode.SHOW_ALL : k.scaleMode = c.stageScale;
              k.frameRate = h.frameRate;
              k.setStageWidth(h.width);
              k.setStageHeight(h.height);
              k.setStageColor(d.ColorUtilities.RGBAToARGB(l));
              c.displayParameters && c._gfxServiceObserver.displayParameters(c.displayParameters);
              c._enterEventLoop();
            } else {
              g.processEvents(), setTimeout(a, c._getFrameInterval());
            }
          } else {
            setTimeout(a, c._getFrameInterval());
          }
        }
        var c = this, f = g.getRootLoader();
        f._setStage(this._stage);
        a();
      };
      c.prototype._eventLoopTick = function() {
        var a = !d.playAllSymbolsOption.value;
        if (d.dontSkipFramesOption.value || !(!d.frameEnabledOption.value && a || this._shouldThrottleDownFrameExecution())) {
          l._stage = this._stage;
          if (!g.getRootLoader().content && (g.processEvents(), !g.getRootLoader().content)) {
            return;
          }
          for (var c = 0;c < d.frameRateMultiplierOption.value;c++) {
            k.enterTimeline("eventLoop");
            var f = performance.now();
            l.performFrameNavigation(!0, a);
            k.counter.count("performFrameNavigation", 1, performance.now() - f);
            g.processEvents();
            k.leaveTimeline("eventLoop");
          }
          this._framesPlayed++;
          0 < d.tracePlayerOption.value && 0 === this._framesPlayed % d.tracePlayerOption.value && this._tracePlayer();
          this._stage.render();
          this._pumpUpdates();
          this._gfxService.frame();
        }
      };
      c.prototype._tracePlayer = function() {
        var a = this._writer;
        a.enter("Frame: " + this._framesPlayed);
        d.AVM2.counter.traceSorted(a);
        d.AVM2.counter.clear();
        d.Player.counter.traceSorted(a);
        d.Player.counter.clear();
        a.writeLn("advancableInstances: " + n.display.DisplayObject._advancableInstances.length);
        a.outdent();
      };
      c.prototype._playAllSymbols = function() {
        var a = this._stage, c = this._loader, f = this._loaderInfo, g = this;
        f.addEventListener(n.events.ProgressEvent.PROGRESS, function I() {
          c.content && (f.removeEventListener(n.events.ProgressEvent.PROGRESS, I), g._enterEventLoop());
        });
        f.addEventListener(n.events.Event.COMPLETE, function() {
          function c() {
            var k;
            0 < d.playSymbolOption.value ? (k = f.getSymbolById(d.playSymbolOption.value), k instanceof d.Timeline.DisplaySymbol || (k = null)) : (k = e[h++], h === e.length && (h = 0), 0 <= d.playSymbolCountOption.value && h > d.playSymbolCountOption.value && (h = 0));
            var l = 1;
            if (k && 0 < k.id) {
              var m = k;
              n.display.DisplayObject.reset();
              n.display.MovieClip.reset();
              var q = m.symbolClass.initializeFrom(m);
              m.symbolClass.instanceConstructorNoInitialize.call(q);
              for (m instanceof n.display.BitmapSymbol && (q = new n.display.Bitmap(q));0 < a.numChildren;) {
                a.removeChildAt(0);
              }
              a.addChild(q);
              k instanceof n.display.SpriteSymbol && (l = k.numFrames);
            }
            0 < d.playSymbolFrameDurationOption.value && (l = d.playSymbolFrameDurationOption.value);
            setTimeout(c, g._getFrameInterval() * l);
          }
          a.setStageWidth(1024);
          a.setStageHeight(1024);
          var e = [];
          f._dictionary.forEach(function(a, b) {
            a instanceof d.Timeline.DisplaySymbol && e.push(a);
          });
          var h = 0;
          setTimeout(c, g._getFrameInterval());
        });
      };
      c.prototype.registerFont = function(a, c) {
        a.resolveAssetPromise = new d.PromiseWrapper;
        this._gfxService.registerFont(a.syncId, c).then(function(c) {
          a.resolveAssetPromise.resolve(c);
        });
        inFirefox ? a.ready = !0 : a.resolveAssetPromise.then(a.resolveAssetCallback, null);
      };
      c.prototype.registerImage = function(a, c) {
        a.resolveAssetPromise = new d.PromiseWrapper;
        this._gfxService.registerImage(a.syncId, a.id, c).then(function(c) {
          a.resolveAssetPromise.resolve(c);
        });
        a.resolveAssetPromise.then(a.resolveAssetCallback, null);
      };
      c.prototype.addToSWFLoadingWhitelist = function(a, c) {
        if (0 > a.indexOf("/")) {
          this._crossDomainSWFLoadingWhitelist.push({protocol:"http:", hostname:a, insecure:c});
        } else {
          try {
            var d = new window.URL(a);
            this._crossDomainSWFLoadingWhitelist.push({protocol:d.protocol, hostname:d.hostname, insecure:c});
          } catch (f) {
          }
        }
      };
      c.prototype.checkDomainForSWFLoading = function(a) {
        try {
          var c = new window.URL(a);
        } catch (d) {
          return !1;
        }
        return this._crossDomainSWFLoadingWhitelist.some(function(a) {
          return c.hostname !== a.hostname && "*" !== a.hostname ? !1 : a.insecure ? !0 : "https:" === c.protocol || "https:" !== a.protocol;
        }, this);
      };
      return c;
    }();
    k.Player = m;
  })(d.Player || (d.Player = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  var k = d.AVM2.ABC.AbcFile, a = d.AVM2.Runtime.AVM2;
  (function(a) {
    a[a.Builtin = 1] = "Builtin";
    a[a.Playerglobal = 2] = "Playerglobal";
    a[a.Shell = 4] = "Shell";
  })(d.AVM2LoadLibrariesFlags || (d.AVM2LoadLibrariesFlags = {}));
  d.createAVM2 = function(n, w, v) {
    var u, l = new d.PromiseWrapper;
    d.SWF.enterTimeline("Load builton.abc file");
    d.SystemResourcesLoadingService.instance.load(0).then(function(c) {
      d.SWF.leaveTimeline();
      a.initialize(w, v);
      u = a.instance;
      d.AVM2.AS.linkNatives(u);
      console.time("Execute builtin.abc");
      u.builtinsLoaded = !1;
      u.systemDomain.executeAbc(new k(new Uint8Array(c), "builtin.abc"));
      u.builtinsLoaded = !0;
      console.timeEnd("Execute builtin.abc");
      n & 4 ? d.SystemResourcesLoadingService.instance.load(3).then(function(a) {
        u.systemDomain.executeAbc(new k(new Uint8Array(a), "shell.abc"));
        l.resolve(u);
      }, l.reject) : n & 2 && !a.isPlayerglobalLoaded() ? a.loadPlayerglobal().then(function() {
        l.resolve(u);
      }, l.reject) : l.resolve(u);
    }, l.reject);
    return l.promise;
  };
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    var a = function() {
      function a() {
      }
      Object.defineProperty(a.prototype, "enabled", {get:function() {
        return !0;
      }, enumerable:!0, configurable:!0});
      a.prototype.initJS = function(a) {
        ShumwayCom.externalCom({action:"init"});
        ShumwayCom.setExternalCallback(function(d) {
          return a(d.functionName, d.args);
        });
        this._externalCallback = a;
      };
      a.prototype.registerCallback = function(a) {
        ShumwayCom.externalCom({action:"register", functionName:a, remove:!1});
      };
      a.prototype.unregisterCallback = function(a) {
        ShumwayCom.externalCom({action:"register", functionName:a, remove:!0});
      };
      a.prototype.eval = function(a) {
        return ShumwayCom.externalCom({action:"eval", expression:a});
      };
      a.prototype.call = function(a) {
        return ShumwayCom.externalCom({action:"call", request:a});
      };
      a.prototype.getId = function() {
        return ShumwayCom.externalCom({action:"getId"});
      };
      return a;
    }();
    k.ShumwayComExternalInterface = a;
    a = function() {
      function a() {
        this._baseUrl = null;
        this._nextSessionId = 1;
        this._sessions = [];
      }
      a.prototype.init = function(a) {
        this._baseUrl = a;
        var d = this;
        ShumwayCom.setLoadFileCallback(function(a) {
          var k = d._sessions[a.sessionId];
          k && d._notifySession(k, a);
        });
      };
      a.prototype._notifySession = function(a, d) {
        var k = d.sessionId;
        switch(d.topic) {
          case "open":
            a.onopen();
            break;
          case "close":
            a.onclose();
            this._sessions[k] = null;
            console.log("Session #" + k + ": closed");
            break;
          case "error":
            a.onerror && a.onerror(d.error);
            break;
          case "progress":
            console.log("Session #" + k + ": loaded " + d.loaded + "/" + d.total), k = d.array, k instanceof Uint8Array || (k = new Uint8Array(k)), a.onprogress && a.onprogress(k, {bytesLoaded:d.loaded, bytesTotal:d.total});
        }
      };
      a.prototype.createSession = function() {
        var a = this._nextSessionId++, d = this;
        return this._sessions[a] = {open:function(k) {
          var l = d.resolveUrl(k.url);
          console.log("Session #" + a + ": loading " + l);
          ShumwayCom.loadFile({url:l, method:k.method, mimeType:k.mimeType, postData:k.data, checkPolicyFile:k.checkPolicyFile, sessionId:a});
        }, close:function() {
        }};
      };
      a.prototype.resolveUrl = function(a) {
        return (new window.URL(a, this._baseUrl)).href;
      };
      a.prototype.navigateTo = function(a, d) {
        ShumwayCom.navigateTo({url:this.resolveUrl(a), target:d});
      };
      return a;
    }();
    k.ShumwayComFileLoadingService = a;
    a = function() {
      function a() {
      }
      a.prototype.setClipboard = function(a) {
        ShumwayCom.setClipboard(a);
      };
      return a;
    }();
    k.ShumwayComClipboardService = a;
    a = function() {
      function a() {
      }
      a.prototype.reportTelemetry = function(a) {
      };
      return a;
    }();
    k.ShumwayComTelemetryService = a;
    a = function() {
      function a() {
      }
      a.prototype.createSession = function() {
        var a = this;
        return {open:function(k) {
          var n = this, l = a.resolveUrl(k.url);
          console.log("FileLoadingService: loading " + l + ", data: " + k.data);
          (new d.BinaryFileReader(l, k.method, k.mimeType, k.data)).readChunked(a._fileReadChunkSize, function(a, d) {
            n.onprogress(a, {bytesLoaded:d.loaded, bytesTotal:d.total});
          }, function(a) {
            n.onerror(a);
          }, n.onopen, n.onclose, n.onhttpstatus);
        }};
      };
      a.prototype.init = function(a, d) {
        void 0 === d && (d = 0);
        this._baseUrl = a;
        this._fileReadChunkSize = d;
      };
      a.prototype.resolveUrl = function(a) {
        return (new window.URL(a, this._baseUrl)).href;
      };
      a.prototype.navigateTo = function(a, d) {
        window.open(this.resolveUrl(a), d || "_blank");
      };
      return a;
    }();
    k.BrowserFileLoadingService = a;
    a = function() {
      function a(d) {
        this._pendingPromises = [];
        d && (this.load(0), this.load(1), this.load(2));
        ShumwayCom.setSystemResourceCallback(this._onSystemResourceCallback.bind(this));
      }
      a.prototype._onSystemResourceCallback = function(a, d) {
        this._pendingPromises[a].resolve(d);
      };
      a.prototype.load = function(a) {
        var k = this._pendingPromises[a];
        k || (k = new d.PromiseWrapper, this._pendingPromises[a] = k, ShumwayCom.loadSystemResource(a));
        return k.promise;
      };
      return a;
    }();
    k.ShumwayComResourcesLoadingService = a;
    a = function() {
      function a(d, k, n) {
        this.builtinPath = d;
        this.viewerPlayerglobalInfo = k;
        this.shellPath = n;
      }
      a.prototype.load = function(a) {
        switch(a) {
          case 0:
            return this._promiseFile(this.builtinPath, "arraybuffer");
          case 1:
            return this._promiseFile(this.viewerPlayerglobalInfo.abcs, "arraybuffer");
          case 2:
            return this._promiseFile(this.viewerPlayerglobalInfo.catalog, "json");
          case 3:
            return this._promiseFile(this.shellPath, "arraybuffer");
          default:
            return Promise.reject(Error("Unsupported system resource id: " + a));
        }
      };
      a.prototype._promiseFile = function(a, k) {
        return new Promise(function(n, l) {
          d.SWF.enterTimeline("Load file", a);
          var c = new XMLHttpRequest;
          c.open("GET", a);
          c.responseType = k;
          c.onload = function() {
            d.SWF.leaveTimeline();
            var g = c.response;
            g ? ("json" === k && "json" !== c.responseType && (g = JSON.parse(g)), n(g)) : l("Unable to load " + a + ": " + c.statusText);
          };
          c.onerror = function() {
            d.SWF.leaveTimeline();
            l("Unable to load: xhr error");
          };
          c.send();
        });
      };
      return a;
    }();
    k.BrowserSystemResourcesLoadingService = a;
  })(d.Player || (d.Player = {}));
})(Shumway || (Shumway = {}));
__extends = this.__extends || function(d, k) {
  function a() {
    this.constructor = d;
  }
  for (var n in k) {
    k.hasOwnProperty(n) && (d[n] = k[n]);
  }
  a.prototype = k.prototype;
  d.prototype = new a;
};
(function(d) {
  (function(k) {
    (function(a) {
      var n = d.ArrayUtilities.DataBuffer, w = function(a) {
        function k(d, c) {
          a.call(this);
          this._window = d;
          this._parent = c || d.parent;
          this._window.addEventListener("message", function(a) {
            this.onWindowMessage(a.data);
          }.bind(this));
          this._fontOrImageRequests = [];
        }
        __extends(k, a);
        k.prototype.update = function(a, c) {
          var d = a.getBytes();
          this._parent.postMessage({type:"player", updates:d, assets:c, result:void 0}, "*", [d.buffer]);
        };
        k.prototype.updateAndGet = function(a, c) {
          var d = {type:"player", updates:a.getBytes(), assets:c, result:void 0}, d = this._sendSyncMessage(d);
          return n.FromPlainObject(d);
        };
        k.prototype.frame = function() {
          this._parent.postMessage({type:"frame"}, "*");
        };
        k.prototype.videoControl = function(a, c, d) {
          return this._sendSyncMessage({type:"videoControl", id:a, eventType:c, data:d, result:void 0});
        };
        k.prototype._sendSyncMessage = function(a) {
          if ("undefined" !== typeof ShumwayCom && ShumwayCom.postSyncMessage) {
            return ShumwayCom.postSyncMessage(a);
          }
          var c = this._parent.document.createEvent("CustomEvent");
          c.initCustomEvent("syncmessage", !1, !1, a);
          this._parent.dispatchEvent(c);
          return a.result;
        };
        k.prototype.registerFont = function(a, c) {
          var g = this._fontOrImageRequests.length, k = new d.PromiseWrapper;
          this._fontOrImageRequests[g] = k;
          this._parent.postMessage({type:"registerFontOrImage", syncId:a, assetType:"font", data:c, requestId:g}, "*");
          return k.promise;
        };
        k.prototype.registerImage = function(a, c, g) {
          var k = this._fontOrImageRequests.length, n = new d.PromiseWrapper;
          this._fontOrImageRequests[k] = n;
          this._parent.postMessage({type:"registerFontOrImage", syncId:a, symbolId:c, assetType:"image", data:g, requestId:k}, "*");
          return n.promise;
        };
        k.prototype.fscommand = function(a, c) {
          this._parent.postMessage({type:"fscommand", command:a, args:c}, "*");
        };
        k.prototype.onWindowMessage = function(a) {
          if ("object" === typeof a && null !== a) {
            switch(a.type) {
              case "gfx":
                var c = d.ArrayUtilities.DataBuffer.FromArrayBuffer(a.updates.buffer);
                this.processUpdates(c, a.assets);
                break;
              case "videoPlayback":
                this.processVideoEvent(a.id, a.eventType, a.data);
                break;
              case "displayParameters":
                this.processDisplayParameters(a.params);
                break;
              case "registerFontOrImageResponse":
                c = this._fontOrImageRequests[a.requestId];
                delete this._fontOrImageRequests[a.requestId];
                c.resolve(a.result);
                break;
              case "options":
                d.Settings.setSettings(a.settings);
                break;
              case "timeline":
                switch(a.request) {
                  case "AVM2":
                    if ("clear" === a.cmd) {
                      d.AVM2.timelineBuffer.reset();
                      break;
                    }
                    this._parent.postMessage({type:"timelineResponse", request:a.request, timeline:d.AVM2.timelineBuffer}, "*");
                    break;
                  case "Player":
                    if ("clear" === a.cmd) {
                      d.Player.timelineBuffer.reset();
                      break;
                    }
                    this._parent.postMessage({type:"timelineResponse", request:a.request, timeline:d.Player.timelineBuffer}, "*");
                    break;
                  case "SWF":
                    if ("clear" === a.cmd) {
                      d.SWF.timelineBuffer.reset();
                      break;
                    }
                    this._parent.postMessage({type:"timelineResponse", request:a.request, timeline:d.SWF.timelineBuffer}, "*");
                }
              ;
            }
          }
        };
        return k;
      }(k.GFXServiceBase);
      a.WindowGFXService = w;
    })(k.Window || (k.Window = {}));
  })(d.Player || (d.Player = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var n = d.ArrayUtilities.DataBuffer, w = function(a) {
        function k() {
          a.call(this);
          this._worker = d.Player.Test.FakeSyncWorker.instance;
          this._worker.addEventListener("message", this._onWorkerMessage.bind(this));
          this._fontOrImageRequests = [];
        }
        __extends(k, a);
        k.prototype.update = function(a, c) {
          var d = a.getBytes();
          this._worker.postMessage({type:"player", updates:d, assets:c}, [d.buffer]);
        };
        k.prototype.updateAndGet = function(a, c) {
          var d = a.getBytes(), d = this._worker.postSyncMessage({type:"player", updates:d, assets:c}, [d.buffer]);
          return n.FromPlainObject(d);
        };
        k.prototype.frame = function() {
          this._worker.postMessage({type:"frame"});
        };
        k.prototype.videoControl = function(a, c, d) {
          return this._worker.postSyncMessage({type:"videoControl", id:a, eventType:c, data:d});
        };
        k.prototype.registerFont = function(a, c) {
          var g = this._fontOrImageRequests.length, k = new d.PromiseWrapper;
          this._fontOrImageRequests[g] = k;
          this._worker.postMessage({type:"registerFontOrImage", syncId:a, assetType:"font", data:c, requestId:g});
          return k.promise;
        };
        k.prototype.registerImage = function(a, c, g) {
          var k = this._fontOrImageRequests.length, n = new d.PromiseWrapper;
          this._fontOrImageRequests[k] = n;
          this._worker.postMessage({type:"registerFontOrImage", syncId:a, symbolId:c, assetType:"image", data:g, requestId:k});
          return n.promise;
        };
        k.prototype.fscommand = function(a, c) {
          this._worker.postMessage({type:"fscommand", command:a, args:c});
        };
        k.prototype._onWorkerMessage = function(a) {
          var c = a.data;
          if ("object" === typeof c && null !== c) {
            switch(c.type) {
              case "gfx":
                c = n.FromArrayBuffer(a.data.updates.buffer);
                this.processUpdates(c, a.data.assets);
                break;
              case "videoPlayback":
                this.processVideoEvent(c.id, c.eventType, c.data);
                break;
              case "displayParameters":
                this.processDisplayParameters(c.params);
                break;
              case "registerFontOrImageResponse":
                a = this._fontOrImageRequests[c.requestId], delete this._fontOrImageRequests[c.requestId], a.resolve(c.result);
            }
          }
        };
        return k;
      }(k.GFXServiceBase);
      a.TestGFXService = w;
    })(k.Test || (k.Test = {}));
  })(d.Player || (d.Player = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      var d = function() {
        function a() {
          this._onmessageListeners = [];
          this._onsyncmessageListeners = [];
        }
        Object.defineProperty(a, "instance", {get:function() {
          a._singelton || (a._singelton = new a);
          return a._singelton;
        }, enumerable:!0, configurable:!0});
        a.prototype.addEventListener = function(a, d, k) {
          "syncmessage" !== a ? this._onmessageListeners.push(d) : this._onsyncmessageListeners.push(d);
        };
        a.prototype.removeEventListener = function(a, d, k) {
          "syncmessage" === a ? (a = this._onsyncmessageListeners.indexOf(d), 0 <= a && this._onsyncmessageListeners.splice(a, 1)) : (a = this._onmessageListeners.indexOf(d), 0 <= a && this._onmessageListeners.splice(a, 1));
        };
        a.prototype.postMessage = function(a, d) {
          var k;
          this._onmessageListeners.some(function(c) {
            var d = {data:a, result:void 0, handled:!1};
            try {
              if ("function" === typeof c ? c(d) : c.handleEvent(d), !d.handled) {
                return !1;
              }
            } catch (n) {
            }
            k = d.result;
            return !0;
          });
          return k;
        };
        a.prototype.postSyncMessage = function(a, d) {
          var k;
          this._onsyncmessageListeners.some(function(c) {
            var d = {data:a, result:void 0, handled:!1};
            try {
              if ("function" === typeof c ? c(d) : c.handleEvent(d), !d.handled) {
                return !1;
              }
            } catch (n) {
            }
            k = d.result;
            return !0;
          });
          return k;
        };
        a.WORKER_PATH = "../../src/player/fakechannel.js";
        return a;
      }();
      a.FakeSyncWorker = d;
    })(d.Test || (d.Test = {}));
  })(d.Player || (d.Player = {}));
})(Shumway || (Shumway = {}));
console.timeEnd("Load Player Dependencies");

