/*

 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.9.3775";
Shumway$$inline_20.build = "a82ac47";
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 r(f) {
    return String(Number(f)) === f;
  }
  function v(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 q = 0, b = f.charCodeAt(q++) - 48;
    if (1 > b || 9 < b) {
      return!1;
    }
    for (var n = 0, x = 0;q < e;) {
      x = f.charCodeAt(q++) - 48;
      if (0 > x || 9 < x) {
        return!1;
      }
      n = b;
      b = 10 * b + x;
    }
    return n < d.UINT32_MAX_DIV_10 || n === d.UINT32_MAX_DIV_10 && x <= 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 = r;
  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 : v(f) || r(f);
    }
    return!1;
  };
  d.isIndex = v;
  d.isNullOrUndefined = function(f) {
    return void 0 == f;
  };
  var u;
  (function(f) {
    f.error = function(b) {
      console.error(b);
      throw Error(b);
    };
    f.assert = function(b, q) {
      void 0 === q && (q = "assertion failed");
      "" === b && (b = !0);
      if (!b) {
        if ("undefined" !== typeof console && "assert" in console) {
          throw console.assert(!1, q), Error(q);
        }
        f.error(q.toString());
      }
    };
    f.assertUnreachable = function(b) {
      var q = Error().stack.split("\n")[1];
      throw Error("Reached unreachable location " + q + b);
    };
    f.assertNotImplemented = function(b, q) {
      b || f.error("notImplemented: " + q);
    };
    f.warning = function(b, q, n) {
    };
    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);
    };
  })(u = d.Debug || (d.Debug = {}));
  d.getTicks = function() {
    return performance.now();
  };
  (function(f) {
    function b(b, n) {
      for (var e = 0, f = b.length;e < f;e++) {
        if (b[e] === n) {
          return e;
        }
      }
      b.push(n);
      return b.length - 1;
    }
    f.popManyInto = function(b, n, e) {
      for (var f = n - 1;0 <= f;f--) {
        e[f] = b.pop();
      }
      e.length = n;
    };
    f.popMany = function(b, n) {
      var e = b.length - n, f = b.slice(e, this.length);
      b.length = e;
      return f;
    };
    f.popManyIntoVoid = function(b, n) {
      b.length -= n;
    };
    f.pushMany = function(b, n) {
      for (var e = 0;e < n.length;e++) {
        b.push(n[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, n) {
      for (var e = 0, f = b.length;e < f;e++) {
        if (b[e] === n) {
          return e;
        }
      }
      return-1;
    };
    f.equals = function(b, n) {
      if (b.length !== n.length) {
        return!1;
      }
      for (var e = 0;e < b.length;e++) {
        if (b[e] !== n[e]) {
          return!1;
        }
      }
      return!0;
    };
    f.pushUnique = b;
    f.unique = function(e) {
      for (var n = [], f = 0;f < e.length;f++) {
        b(n, e[f]);
      }
      return n;
    };
    f.copyFrom = function(b, n) {
      b.length = 0;
      f.pushMany(b, n);
    };
    f.ensureTypedArrayCapacity = function(b, n) {
      if (b.length < n) {
        var e = b;
        b = new b.constructor(d.IntegerUtilities.nearestPowerOfTwo(n));
        b.set(e, 0);
      }
      return b;
    };
    var e = function() {
      function b(n) {
        void 0 === n && (n = 16);
        this._f32 = this._i32 = this._u16 = this._u8 = null;
        this._offset = 0;
        this.ensureCapacity(n);
      }
      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, q, f) {
        this.ensureCapacity(this._offset + 16);
        this.write4FloatsUnsafe(b, e, q, f);
      };
      b.prototype.write4FloatsUnsafe = function(b, e, q, f) {
        var g = this._offset >> 2;
        this._f32[g + 0] = b;
        this._f32[g + 1] = e;
        this._f32[g + 2] = q;
        this._f32[g + 3] = f;
        this._offset += 16;
      };
      b.prototype.write6Floats = function(b, e, q, f, g, c) {
        this.ensureCapacity(this._offset + 24);
        this.write6FloatsUnsafe(b, e, q, f, g, c);
      };
      b.prototype.write6FloatsUnsafe = function(b, e, q, f, g, c) {
        var s = this._offset >> 2;
        this._f32[s + 0] = b;
        this._f32[s + 1] = e;
        this._f32[s + 2] = q;
        this._f32[s + 3] = f;
        this._f32[s + 4] = g;
        this._f32[s + 5] = c;
        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, q) {
        e = this._i32;
        for (var f = 0;f < q;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 t = 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 = t;
  (function(f) {
    function b(b, n) {
      return Object.prototype.hasOwnProperty.call(b, n);
    }
    function e(e, n) {
      for (var f in n) {
        b(n, f) && (e[f] = n[f]);
      }
    }
    f.boxValue = function(b) {
      return void 0 == b || a(b) ? b : Object(b);
    };
    f.toKeyValueArray = function(b) {
      var n = Object.prototype.hasOwnProperty, e = [], f;
      for (f in b) {
        n.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, n) {
      return Object.prototype.propertyIsEnumerable.call(b, n);
    };
    f.getOwnPropertyDescriptor = function(b, n) {
      return Object.getOwnPropertyDescriptor(b, n);
    };
    f.hasOwnGetter = function(b, n) {
      var e = Object.getOwnPropertyDescriptor(b, n);
      return!(!e || !e.get);
    };
    f.getOwnGetter = function(b, n) {
      var e = Object.getOwnPropertyDescriptor(b, n);
      return e ? e.get : null;
    };
    f.hasOwnSetter = function(b, n) {
      var e = Object.getOwnPropertyDescriptor(b, n);
      return!(!e || !e.set);
    };
    f.createMap = function() {
      return Object.create(null);
    };
    f.createArrayMap = function() {
      return[];
    };
    f.defineReadOnlyProperty = function(b, n, e) {
      Object.defineProperty(b, n, {value:e, writable:!1, configurable:!0, enumerable:!1});
    };
    f.getOwnPropertyDescriptors = function(b) {
      for (var n = f.createMap(), e = Object.getOwnPropertyNames(b), g = 0;g < e.length;g++) {
        n[e[g]] = Object.getOwnPropertyDescriptor(b, e[g]);
      }
      return n;
    };
    f.cloneObject = function(b) {
      var n = Object.create(Object.getPrototypeOf(b));
      e(n, b);
      return n;
    };
    f.copyProperties = function(b, n) {
      for (var e in n) {
        b[e] = n[e];
      }
    };
    f.copyOwnProperties = e;
    f.copyOwnPropertyDescriptors = function(e, n, f) {
      void 0 === f && (f = !0);
      for (var g in n) {
        if (b(n, g)) {
          var c = Object.getOwnPropertyDescriptor(n, g);
          if (f || !b(e, g)) {
            try {
              Object.defineProperty(e, g, c);
            } catch (s) {
            }
          }
        }
      }
    };
    f.getLatestGetterOrSetterPropertyDescriptor = function(b, n) {
      for (var e = {};b;) {
        var f = Object.getOwnPropertyDescriptor(b, n);
        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, n, e, g) {
      var c = f.getLatestGetterOrSetterPropertyDescriptor(b, n);
      c.configurable = !0;
      c.enumerable = !1;
      g ? c.get = e : c.set = e;
      Object.defineProperty(b, n, c);
    };
    f.defineNonEnumerableGetter = function(b, n, e) {
      Object.defineProperty(b, n, {get:e, configurable:!0, enumerable:!1});
    };
    f.defineNonEnumerableSetter = function(b, n, e) {
      Object.defineProperty(b, n, {set:e, configurable:!0, enumerable:!1});
    };
    f.defineNonEnumerableProperty = function(b, n, e) {
      Object.defineProperty(b, n, {value:e, writable:!0, configurable:!0, enumerable:!1});
    };
    f.defineNonEnumerableForwardingProperty = function(b, n, e) {
      Object.defineProperty(b, n, {get:l.makeForwardingGetter(e), set:l.makeForwardingSetter(e), writable:!0, configurable:!0, enumerable:!1});
    };
    f.defineNewNonEnumerableProperty = function(b, n, e) {
      f.defineNonEnumerableProperty(b, n, e);
    };
    f.createPublicAliases = function(b, n) {
      for (var e = {value:null, writable:!0, configurable:!0, enumerable:!1}, f = 0;f < n.length;f++) {
        var g = n[f];
        e.value = b[g];
        Object.defineProperty(b, "$Bg" + g, 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 f() {
        return b.apply(e, arguments);
      }
      f.boundTo = e;
      return f;
    };
  })(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;
    }
    f.repeatString = function(b, n) {
      for (var e = "", f = 0;f < n;f++) {
        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(n) {
      for (var e = [], f = 0;f < n.length;f++) {
        e.push(b(n[f]));
      }
      return e.join(", ");
    };
    f.utf8decode = function(b) {
      for (var n = new Uint8Array(4 * b.length), e = 0, f = 0, q = b.length;f < q;f++) {
        var g = b.charCodeAt(f);
        if (127 >= g) {
          n[e++] = g;
        } else {
          if (55296 <= g && 56319 >= g) {
            var c = b.charCodeAt(f + 1);
            56320 <= c && 57343 >= c && (g = ((g & 1023) << 10) + (c & 1023) + 65536, ++f);
          }
          0 !== (g & 4292870144) ? (n[e++] = 248 | g >>> 24 & 3, n[e++] = 128 | g >>> 18 & 63, n[e++] = 128 | g >>> 12 & 63, n[e++] = 128 | g >>> 6 & 63) : 0 !== (g & 4294901760) ? (n[e++] = 240 | g >>> 18 & 7, n[e++] = 128 | g >>> 12 & 63, n[e++] = 128 | g >>> 6 & 63) : 0 !== (g & 4294965248) ? (n[e++] = 224 | g >>> 12 & 15, n[e++] = 128 | g >>> 6 & 63) : n[e++] = 192 | g >>> 6 & 31;
          n[e++] = 128 | g & 63;
        }
      }
      return n.subarray(0, e);
    };
    f.utf8encode = function(b) {
      for (var n = 0, e = "";n < b.length;) {
        var f = b[n++] & 255;
        if (127 >= f) {
          e += String.fromCharCode(f);
        } else {
          var q = 192, g = 5;
          do {
            if ((f & (q >> 1 | 128)) === q) {
              break;
            }
            q = q >> 1 | 128;
            --g;
          } while (0 <= g);
          if (0 >= g) {
            e += String.fromCharCode(f);
          } else {
            for (var f = f & (1 << g) - 1, q = !1, c = 5;c >= g;--c) {
              var x = b[n++];
              if (128 != (x & 192)) {
                q = !0;
                break;
              }
              f = f << 6 | x & 63;
            }
            if (q) {
              for (g = n - (7 - c);g < n;++g) {
                e += String.fromCharCode(b[g] & 255);
              }
            } else {
              e = 65536 <= f ? e + String.fromCharCode(f - 65536 >> 10 & 1023 | 55296, f & 1023 | 56320) : e + String.fromCharCode(f);
            }
          }
        }
      }
      return e;
    };
    f.base64ArrayBuffer = function(b) {
      var n = "";
      b = new Uint8Array(b);
      for (var e = b.byteLength, f = e % 3, e = e - f, q, g, c, x, s = 0;s < e;s += 3) {
        x = b[s] << 16 | b[s + 1] << 8 | b[s + 2], q = (x & 16515072) >> 18, g = (x & 258048) >> 12, c = (x & 4032) >> 6, x &= 63, n += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[q] + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[g] + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[c] + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[x];
      }
      1 == f ? (x = b[e], n += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(x & 252) >> 2] + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(x & 3) << 4] + "==") : 2 == f && (x = b[e] << 8 | b[e + 1], n += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(x & 64512) >> 10] + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(x & 1008) >> 4] + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(x & 15) << 
      2] + "=");
      return n;
    };
    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 n = "", e = 0;e < b.length;e += 16384) {
        var f = Math.min(b.length - e, 16384), n = n + String.fromCharCode.apply(null, b.subarray(e, e + f))
      }
      return n;
    };
    f.variableLengthEncodeInt32 = function(b) {
      for (var n = 32 - Math.clz32(b), e = Math.ceil(n / 6), n = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789$_"[e], e = e - 1;0 <= e;e--) {
        n += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789$_"[b >> 6 * e & 63];
      }
      return n;
    };
    f.toEncoding = function(b) {
      return "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789$_"[b];
    };
    f.fromEncoding = function(b) {
      b = b.charCodeAt(0);
      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 n = f.fromEncoding(b[0]), e = 0, q = 0;q < n;q++) {
        var g = 6 * (n - q - 1), e = e | f.fromEncoding(b[1 + q]) << g
      }
      return e;
    };
    f.trimMiddle = function(b, n) {
      if (b.length <= n) {
        return b;
      }
      var e = n >> 1, f = n - e - 1;
      return b.substr(0, e) + "\u2026" + b.substr(b.length - f, f);
    };
    f.multiple = function(b, n) {
      for (var e = "", f = 0;f < n;f++) {
        e += b;
      }
      return e;
    };
    f.indexOfAny = function(b, n, e) {
      for (var f = b.length, q = 0;q < n.length;q++) {
        var g = b.indexOf(n[q], e);
        0 <= g && (f = Math.min(f, g));
      }
      return f === b.length ? -1 : f;
    };
    var e = Array(3), q = Array(4), n = Array(5), g = Array(6), c = Array(7), s = Array(8), p = Array(9);
    f.concat3 = function(b, n, f) {
      e[0] = b;
      e[1] = n;
      e[2] = f;
      return e.join("");
    };
    f.concat4 = function(b, n, e, f) {
      q[0] = b;
      q[1] = n;
      q[2] = e;
      q[3] = f;
      return q.join("");
    };
    f.concat5 = function(b, e, f, q, g) {
      n[0] = b;
      n[1] = e;
      n[2] = f;
      n[3] = q;
      n[4] = g;
      return n.join("");
    };
    f.concat6 = function(b, n, e, f, q, c) {
      g[0] = b;
      g[1] = n;
      g[2] = e;
      g[3] = f;
      g[4] = q;
      g[5] = c;
      return g.join("");
    };
    f.concat7 = function(b, n, e, f, q, g, x) {
      c[0] = b;
      c[1] = n;
      c[2] = e;
      c[3] = f;
      c[4] = q;
      c[5] = g;
      c[6] = x;
      return c.join("");
    };
    f.concat8 = function(b, n, e, f, q, g, c, x) {
      s[0] = b;
      s[1] = n;
      s[2] = e;
      s[3] = f;
      s[4] = q;
      s[5] = g;
      s[6] = c;
      s[7] = x;
      return s.join("");
    };
    f.concat9 = function(b, n, e, f, q, g, c, x, s) {
      p[0] = b;
      p[1] = n;
      p[2] = e;
      p[3] = f;
      p[4] = q;
      p[5] = g;
      p[6] = c;
      p[7] = x;
      p[8] = s;
      return p.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(f, n, g) {
      var c = 1732584193, s = -271733879, p = -1732584194, m = 271733878, h = g + 72 & -64, l = new Uint8Array(h), a;
      for (a = 0;a < g;++a) {
        l[a] = f[n++];
      }
      l[a++] = 128;
      for (f = h - 8;a < f;) {
        l[a++] = 0;
      }
      l[a++] = g << 3 & 255;
      l[a++] = g >> 5 & 255;
      l[a++] = g >> 13 & 255;
      l[a++] = g >> 21 & 255;
      l[a++] = g >>> 29 & 255;
      l[a++] = 0;
      l[a++] = 0;
      l[a++] = 0;
      f = new Int32Array(16);
      for (a = 0;a < h;) {
        for (g = 0;16 > g;++g, a += 4) {
          f[g] = l[a] | l[a + 1] << 8 | l[a + 2] << 16 | l[a + 3] << 24;
        }
        var r = c;
        n = s;
        var t = p, d = m, u, k;
        for (g = 0;64 > g;++g) {
          16 > g ? (u = n & t | ~n & d, k = g) : 32 > g ? (u = d & n | ~d & t, k = 5 * g + 1 & 15) : 48 > g ? (u = n ^ t ^ d, k = 3 * g + 5 & 15) : (u = t ^ (n | ~d), k = 7 * g & 15);
          var v = d, r = r + u + e[g] + f[k] | 0;
          u = b[g];
          d = t;
          t = n;
          n = n + (r << u | r >>> 32 - u) | 0;
          r = v;
        }
        c = c + r | 0;
        s = s + n | 0;
        p = p + t | 0;
        m = m + d | 0;
      }
      return c;
    };
    f.hashBytesTo32BitsAdler = function(b, n, e) {
      var f = 1, g = 0;
      for (e = n + e;n < e;++n) {
        f = (f + (b[n] & 255)) % 65521, g = (g + f) % 65521;
      }
      return g << 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 f = Math.imul(36969, b[1] & 65535) + (b[1] >>> 16) | 0;
      b[1] = f;
      b = (e << 16) + (f & 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, f) {
        return b.hasOwnProperty(this.id) ? b[this.id] : f;
      }, set:function(b, f) {
        Object.defineProperty(b, this.id, {value:f, enumerable:!1, configurable:!0});
      }};
      jsGlobal.WeakMap = f;
    }
  })();
  t = function() {
    function f() {
      "undefined" !== typeof netscape && netscape.security.PrivilegeManager ? 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) {
        "undefined" !== typeof netscape && netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"), Components.utils.nondeterministicGetWeakMapKeys(this._map).forEach(function(n) {
          0 !== n._referenceCount && b(n);
        });
      } else {
        for (var e = this._list, f = 0, n = 0;n < e.length;n++) {
          var g = e[n];
          g && (0 === g._referenceCount ? (e[n] = null, f++) : b(g));
        }
        if (16 < f && f > e.length >> 2) {
          f = [];
          for (n = 0;n < e.length;n++) {
            (g = e[n]) && 0 < g._referenceCount && f.push(g);
          }
          this._list = f;
        }
      }
    };
    Object.defineProperty(f.prototype, "length", {get:function() {
      return this._map ? -1 : this._list.length;
    }, enumerable:!0, configurable:!0});
    return f;
  }();
  d.WeakList = t;
  var h;
  (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, f) {
      return Math.max(e, Math.min(f, 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.epsilonEquals = function(b, e) {
      return 1E-7 > Math.abs(b - e);
    };
  })(h = 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 p;
  (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, n) {
      var e = "";
      for (b = 0;b < n.length;b++) {
        b & 1 << b && (e += n[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, n) {
      var e = (1 << n) - 1;
      return b + e & ~e;
    };
    Math.imul || (Math.imul = function(b, n) {
      var e = b & 65535, f = n & 65535;
      return e * f + ((b >>> 16 & 65535) * f + e * (n >>> 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);
    });
  })(p = d.IntegerUtilities || (d.IntegerUtilities = {}));
  (function(f) {
    function b(b, f, n, g, c, s) {
      return(n - b) * (s - f) - (g - f) * (c - b);
    }
    f.pointInPolygon = function(b, f, n) {
      for (var g = 0, c = n.length - 2, s = 0;s < c;s += 2) {
        var p = n[s + 0], m = n[s + 1], h = n[s + 2], l = n[s + 3];
        (m <= f && l > f || m > f && l <= f) && b < p + (f - m) / (l - m) * (h - p) && g++;
      }
      return 1 === (g & 1);
    };
    f.signedArea = b;
    f.counterClockwise = function(e, f, n, g, c, s) {
      return 0 < b(e, f, n, g, c, s);
    };
    f.clockwise = function(e, f, n, g, c, s) {
      return 0 > b(e, f, n, g, c, s);
    };
    f.pointInPolygonInt32 = function(b, f, n) {
      b |= 0;
      f |= 0;
      for (var g = 0, c = n.length - 2, s = 0;s < c;s += 2) {
        var p = n[s + 0], m = n[s + 1], h = n[s + 2], l = n[s + 3];
        (m <= f && l > f || m > f && l <= f) && b < p + (f - m) / (l - m) * (h - p) && g++;
      }
      return 1 === (g & 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 = {}));
  t = 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"), n = 0;n < f.length;n++) {
        this.colorLn(b, f[n]);
      }
    };
    f.prototype.enter = function(b) {
      this._suppressOutput || this._out(this._padding + b);
      this.indent();
    };
    f.prototype.leaveAndEnter = function() {
      this.leave("Slots");
      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 n = 0, g = b.length;n < g;n++) {
        var c = "";
        e && (c = null === b[n] ? "null" : void 0 === b[n] ? "undefined" : b[n].constructor.name, c += " ");
        var s = f ? "" : ("" + n).padRight(" ", 4);
        this.writeLn(s + c + b[n]);
      }
    };
    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 = t;
  var s = function() {
    return function(f, b) {
      this.value = f;
      this.next = b;
    };
  }(), t = 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 s(b, null);
        for (var n = this._compare;e;) {
          if (0 < n(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 s(b, null);
      }
    };
    f.prototype.forEach = function(b) {
      for (var e = this._head, q = null;e;) {
        var n = b(e.value);
        if (n === f.RETURN) {
          break;
        } else {
          n === f.DELETE ? e = q ? q.next = e.next : this._head = this._head.next : (q = 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 = t;
  t = 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 = t;
  (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, n) {
      b = b || "1";
      n = n || "0";
      for (var e = "", f = 0;f < length;f++) {
        e += this.get(f) ? b : n;
      }
      return e;
    }
    function q(b) {
      for (var n = [], e = 0;e < length;e++) {
        this.get(e) && n.push(b ? b[e] : e);
      }
      return n.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 n = function() {
      function n(e) {
        this.size = b(e);
        this.dirty = this.count = 0;
        this.length = e;
        this.bits = new Uint32Array(this.size >> f.ADDRESS_BITS_PER_WORD);
      }
      n.prototype.recount = function() {
        if (this.dirty) {
          for (var b = this.bits, n = 0, e = 0, f = b.length;e < f;e++) {
            var q = b[e], q = q - (q >> 1 & 1431655765), q = (q & 858993459) + (q >> 2 & 858993459), n = n + (16843009 * (q + (q >> 4) & 252645135) >> 24)
          }
          this.count = n;
          this.dirty = 0;
        }
      };
      n.prototype.set = function(b) {
        var n = b >> f.ADDRESS_BITS_PER_WORD, e = this.bits[n];
        b = e | 1 << (b & f.BIT_INDEX_MASK);
        this.bits[n] = b;
        this.dirty |= e ^ b;
      };
      n.prototype.setAll = function() {
        for (var b = this.bits, n = 0, e = b.length;n < e;n++) {
          b[n] = 4294967295;
        }
        this.count = this.size;
        this.dirty = 0;
      };
      n.prototype.assign = function(b) {
        this.count = b.count;
        this.dirty = b.dirty;
        this.size = b.size;
        for (var n = 0, e = this.bits.length;n < e;n++) {
          this.bits[n] = b.bits[n];
        }
      };
      n.prototype.clear = function(b) {
        var n = b >> f.ADDRESS_BITS_PER_WORD, e = this.bits[n];
        b = e & ~(1 << (b & f.BIT_INDEX_MASK));
        this.bits[n] = b;
        this.dirty |= e ^ b;
      };
      n.prototype.get = function(b) {
        return 0 !== (this.bits[b >> f.ADDRESS_BITS_PER_WORD] & 1 << (b & f.BIT_INDEX_MASK));
      };
      n.prototype.clearAll = function() {
        for (var b = this.bits, n = 0, e = b.length;n < e;n++) {
          b[n] = 0;
        }
        this.dirty = this.count = 0;
      };
      n.prototype._union = function(b) {
        var n = this.dirty, e = this.bits;
        b = b.bits;
        for (var f = 0, q = e.length;f < q;f++) {
          var g = e[f], c = g | b[f];
          e[f] = c;
          n |= g ^ c;
        }
        this.dirty = n;
      };
      n.prototype.intersect = function(b) {
        var n = this.dirty, e = this.bits;
        b = b.bits;
        for (var f = 0, q = e.length;f < q;f++) {
          var g = e[f], c = g & b[f];
          e[f] = c;
          n |= g ^ c;
        }
        this.dirty = n;
      };
      n.prototype.subtract = function(b) {
        var n = this.dirty, e = this.bits;
        b = b.bits;
        for (var f = 0, q = e.length;f < q;f++) {
          var g = e[f], c = g & ~b[f];
          e[f] = c;
          n |= g ^ c;
        }
        this.dirty = n;
      };
      n.prototype.negate = function() {
        for (var b = this.dirty, n = this.bits, e = 0, f = n.length;e < f;e++) {
          var q = n[e], g = ~q;
          n[e] = g;
          b |= q ^ g;
        }
        this.dirty = b;
      };
      n.prototype.forEach = function(b) {
        for (var n = this.bits, e = 0, q = n.length;e < q;e++) {
          var g = n[e];
          if (g) {
            for (var c = 0;c < f.BITS_PER_WORD;c++) {
              g & 1 << c && b(e * f.BITS_PER_WORD + c);
            }
          }
        }
      };
      n.prototype.toArray = function() {
        for (var b = [], n = this.bits, e = 0, q = n.length;e < q;e++) {
          var g = n[e];
          if (g) {
            for (var c = 0;c < f.BITS_PER_WORD;c++) {
              g & 1 << c && b.push(e * f.BITS_PER_WORD + c);
            }
          }
        }
        return b;
      };
      n.prototype.equals = function(b) {
        if (this.size !== b.size) {
          return!1;
        }
        var n = this.bits;
        b = b.bits;
        for (var e = 0, f = n.length;e < f;e++) {
          if (n[e] !== b[e]) {
            return!1;
          }
        }
        return!0;
      };
      n.prototype.contains = function(b) {
        if (this.size !== b.size) {
          return!1;
        }
        var n = this.bits;
        b = b.bits;
        for (var e = 0, f = n.length;e < f;e++) {
          if ((n[e] | b[e]) !== n[e]) {
            return!1;
          }
        }
        return!0;
      };
      n.prototype.isEmpty = function() {
        this.recount();
        return 0 === this.count;
      };
      n.prototype.clone = function() {
        var b = new n(this.length);
        b._union(this);
        return b;
      };
      return n;
    }();
    f.Uint32ArrayBitSet = n;
    var g = function() {
      function n(e) {
        this.dirty = this.count = 0;
        this.size = b(e);
        this.bits = 0;
        this.singleWord = !0;
        this.length = e;
      }
      n.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;
        }
      };
      n.prototype.set = function(b) {
        var n = this.bits;
        this.bits = b = n | 1 << (b & f.BIT_INDEX_MASK);
        this.dirty |= n ^ b;
      };
      n.prototype.setAll = function() {
        this.bits = 4294967295;
        this.count = this.size;
        this.dirty = 0;
      };
      n.prototype.assign = function(b) {
        this.count = b.count;
        this.dirty = b.dirty;
        this.size = b.size;
        this.bits = b.bits;
      };
      n.prototype.clear = function(b) {
        var n = this.bits;
        this.bits = b = n & ~(1 << (b & f.BIT_INDEX_MASK));
        this.dirty |= n ^ b;
      };
      n.prototype.get = function(b) {
        return 0 !== (this.bits & 1 << (b & f.BIT_INDEX_MASK));
      };
      n.prototype.clearAll = function() {
        this.dirty = this.count = this.bits = 0;
      };
      n.prototype._union = function(b) {
        var n = this.bits;
        this.bits = b = n | b.bits;
        this.dirty = n ^ b;
      };
      n.prototype.intersect = function(b) {
        var n = this.bits;
        this.bits = b = n & b.bits;
        this.dirty = n ^ b;
      };
      n.prototype.subtract = function(b) {
        var n = this.bits;
        this.bits = b = n & ~b.bits;
        this.dirty = n ^ b;
      };
      n.prototype.negate = function() {
        var b = this.bits, n = ~b;
        this.bits = n;
        this.dirty = b ^ n;
      };
      n.prototype.forEach = function(b) {
        var n = this.bits;
        if (n) {
          for (var e = 0;e < f.BITS_PER_WORD;e++) {
            n & 1 << e && b(e);
          }
        }
      };
      n.prototype.toArray = function() {
        var b = [], n = this.bits;
        if (n) {
          for (var e = 0;e < f.BITS_PER_WORD;e++) {
            n & 1 << e && b.push(e);
          }
        }
        return b;
      };
      n.prototype.equals = function(b) {
        return this.bits === b.bits;
      };
      n.prototype.contains = function(b) {
        var n = this.bits;
        return(n | b.bits) === n;
      };
      n.prototype.isEmpty = function() {
        this.recount();
        return 0 === this.count;
      };
      n.prototype.clone = function() {
        var b = new n(this.length);
        b._union(this);
        return b;
      };
      return n;
    }();
    f.Uint32BitSet = g;
    g.prototype.toString = q;
    g.prototype.toBitString = e;
    n.prototype.toString = q;
    n.prototype.toBitString = e;
    f.BitSetFunctor = function(e) {
      var q = 1 === b(e) >> f.ADDRESS_BITS_PER_WORD ? g : n;
      return function() {
        return new q(e);
      };
    };
  })(d.BitSets || (d.BitSets = {}));
  t = 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 * h.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 = t;
  t = function() {
    function f(b, e, f, n) {
      this.xMin = b | 0;
      this.yMin = e | 0;
      this.xMax = f | 0;
      this.yMax = n | 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, n) {
      this.xMin = b;
      this.yMin = e;
      this.xMax = f;
      this.yMax = n;
    };
    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 = t;
  t = function() {
    function f(b, e, f, n) {
      u.assert(k(b));
      u.assert(k(e));
      u.assert(k(f));
      u.assert(k(n));
      this._xMin = b | 0;
      this._yMin = e | 0;
      this._xMax = f | 0;
      this._yMax = n | 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, n) {
      this.xMin = b;
      this.yMin = e;
      this.xMax = f;
      this.yMax = n;
    };
    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) {
      u.assert(k(b));
      this._xMin = b;
    }, enumerable:!0, configurable:!0});
    Object.defineProperty(f.prototype, "yMin", {get:function() {
      return this._yMin;
    }, set:function(b) {
      u.assert(k(b));
      this._yMin = b | 0;
    }, enumerable:!0, configurable:!0});
    Object.defineProperty(f.prototype, "xMax", {get:function() {
      return this._xMax;
    }, set:function(b) {
      u.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) {
      u.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 = t;
  t = function() {
    function f(b, e, f, n) {
      this.r = b;
      this.g = e;
      this.b = f;
      this.a = n;
    }
    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 q = getComputedStyle(e).backgroundColor;
      document.body.removeChild(e);
      (e = /^rgb\((\d+), (\d+), (\d+)\)$/.exec(q)) || (e = /^rgba\((\d+), (\d+), (\d+), ([\d.]+)\)$/.exec(q));
      q = new f(0, 0, 0, 0);
      q.r = parseFloat(e[1]) / 255;
      q.g = parseFloat(e[2]) / 255;
      q.b = parseFloat(e[3]) / 255;
      q.a = e[4] ? parseFloat(e[4]) / 255 : 1;
      return f.colorCache[b] = q;
    };
    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 = t;
  var m;
  (function(f) {
    function b(b) {
      var e, f, q = b >> 24 & 255;
      f = (Math.imul(b >> 16 & 255, q) + 127) / 255 | 0;
      e = (Math.imul(b >> 8 & 255, q) + 127) / 255 | 0;
      b = (Math.imul(b >> 0 & 255, q) + 127) / 255 | 0;
      return q << 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, q = b >> 24 & 255;
      f = Math.imul(255, b >> 16 & 255) / q & 255;
      e = Math.imul(255, b >> 8 & 255) / q & 255;
      b = Math.imul(255, b >> 0 & 255) / q & 255;
      return q << 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 q, g, c = f << 8, s = e;
      g = s[c + (b >> 16 & 255)];
      q = s[c + (b >> 8 & 255)];
      b = s[c + (b >> 0 & 255)];
      return f << 24 | g << 16 | q << 8 | b;
    };
    f.blendPremultipliedBGRA = function(b, e) {
      var f, q;
      q = 256 - (e & 255);
      f = Math.imul(b & 16711935, q) >> 8;
      q = Math.imul(b >> 8 & 16711935, q) >> 8;
      return((e >> 8 & 16711935) + q & 16711935) << 8 | (e & 16711935) + f & 16711935;
    };
    var q = p.swap32;
    f.convertImage = function(n, f, c, s) {
      var p = c.length;
      if (n === f) {
        if (c !== s) {
          for (n = 0;n < p;n++) {
            s[n] = c[n];
          }
        }
      } else {
        if (1 === n && 3 === f) {
          for (d.ColorUtilities.ensureUnpremultiplyTable(), n = 0;n < p;n++) {
            var m = c[n];
            f = m & 255;
            if (0 === f) {
              s[n] = 0;
            } else {
              if (255 === f) {
                s[n] = 4278190080 | m >> 8 & 16777215;
              } else {
                var h = m >> 24 & 255, l = m >> 16 & 255, m = m >> 8 & 255, a = f << 8, r = e, m = r[a + m], l = r[a + l], h = r[a + h];
                s[n] = f << 24 | h << 16 | l << 8 | m;
              }
            }
          }
        } else {
          if (2 === n && 3 === f) {
            for (n = 0;n < p;n++) {
              s[n] = q(c[n]);
            }
          } else {
            if (3 === n && 1 === f) {
              for (n = 0;n < p;n++) {
                f = c[n], s[n] = q(b(f & 4278255360 | f >> 16 & 255 | (f & 255) << 16));
              }
            } else {
              for (u.somewhatImplemented("Image Format Conversion: " + g[n] + " -> " + g[f]), n = 0;n < p;n++) {
                s[n] = c[n];
              }
            }
          }
        }
      }
    };
  })(m = d.ColorUtilities || (d.ColorUtilities = {}));
  t = 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, q = 0;q < e.length;q++) {
          var n = e[q];
          if (n.byteLength >= b) {
            return e.splice(q, 1), n;
          }
        }
      }
      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 = t;
  (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 = {}));
  d.registerCSSFont = function(f, b, e) {
    if (inBrowser) {
      var q = document.head;
      q.insertBefore(document.createElement("style"), q.firstChild);
      q = document.styleSheets[0];
      b = "@font-face{font-family:swffont" + f + ";src:url(data:font/opentype;base64," + d.StringUtilities.base64ArrayBuffer(b) + ")}";
      q.insertRule(b, q.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 = {}));
  t = function() {
    function f() {
    }
    f.prototype.setClipboard = function(b) {
    };
    f.instance = null;
    return f;
  }();
  d.ClipboardService = t;
  t = function() {
    function f() {
      this._queues = {};
    }
    f.prototype.register = function(b, e) {
      u.assert(b);
      u.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) {
      u.assert(b);
      u.assert(e);
      var f = this._queues[b];
      if (f) {
        var n = f.indexOf(e);
        -1 !== n && f.splice(n, 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 n = 0;n < f.length;n++) {
          f[n].apply(null, e);
        }
      }
    };
    f.prototype.notify1 = function(b, e) {
      var f = this._queues[b];
      if (f) {
        for (var f = f.slice(), n = 0;n < f.length;n++) {
          (0,f[n])(b, e);
        }
      }
    };
    return f;
  }();
  d.Callback = t;
  (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 g = 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 = {}));
  t = 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 = t;
})(Shumway || (Shumway = {}));
(function() {
  function d(b) {
    if ("function" !== typeof b) {
      throw new TypeError("Invalid deferred constructor");
    }
    var e = m();
    b = new b(e);
    var f = e.resolve;
    if ("function" !== typeof f) {
      throw new TypeError("Invalid resolve construction function");
    }
    e = e.reject;
    if ("function" !== typeof e) {
      throw new TypeError("Invalid reject construction function");
    }
    return{promise:b, resolve:f, reject:e};
  }
  function k(b, e) {
    if ("object" !== typeof b || null === b) {
      return!1;
    }
    try {
      var f = b.then;
      if ("function" !== typeof f) {
        return!1;
      }
      f.call(b, e.resolve, e.reject);
    } catch (q) {
      f = e.reject, f(q);
    }
    return!0;
  }
  function a(b) {
    return "object" === typeof b && null !== b && "undefined" !== typeof b.promiseStatus;
  }
  function r(b, e) {
    if ("unresolved" === b.promiseStatus) {
      var f = b.rejectReactions;
      b.result = e;
      b.resolveReactions = void 0;
      b.rejectReactions = void 0;
      b.promiseStatus = "has-rejection";
      v(f, e);
    }
  }
  function v(b, e) {
    for (var f = 0;f < b.length;f++) {
      u({reaction:b[f], argument:e});
    }
  }
  function u(b) {
    0 === q.length && setTimeout(l, 0);
    q.push(b);
  }
  function t(b, e) {
    var f = b.deferred, q = b.handler, g, c;
    try {
      g = q(e);
    } catch (s) {
      return f = f.reject, f(s);
    }
    if (g === f.promise) {
      return f = f.reject, f(new TypeError("Self resolution"));
    }
    try {
      if (c = k(g, f), !c) {
        var p = f.resolve;
        return p(g);
      }
    } catch (m) {
      return f = f.reject, f(m);
    }
  }
  function l() {
    for (;0 < q.length;) {
      var e = q[0];
      try {
        t(e.reaction, e.argument);
      } catch (f) {
        if ("function" === typeof b.onerror) {
          b.onerror(f);
        }
      }
      q.shift();
    }
  }
  function c(b) {
    throw b;
  }
  function h(b) {
    return b;
  }
  function p(b) {
    return function(e) {
      r(b, e);
    };
  }
  function s(b) {
    return function(e) {
      if ("unresolved" === b.promiseStatus) {
        var f = b.resolveReactions;
        b.result = e;
        b.resolveReactions = void 0;
        b.rejectReactions = void 0;
        b.promiseStatus = "has-resolution";
        v(f, e);
      }
    };
  }
  function m() {
    function b(e, f) {
      b.resolve = e;
      b.reject = f;
    }
    return b;
  }
  function g(b, e, f) {
    return function(q) {
      if (q === b) {
        return f(new TypeError("Self resolution"));
      }
      var g = b.promiseConstructor;
      if (a(q) && q.promiseConstructor === g) {
        return q.then(e, f);
      }
      g = d(g);
      return k(q, g) ? g.promise.then(e, f) : e(q);
    };
  }
  function f(b, e, f, q) {
    return function(g) {
      e[b] = g;
      q.countdown--;
      0 === q.countdown && f.resolve(e);
    };
  }
  function b(e) {
    if ("function" !== typeof e) {
      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 f = s(this), q = p(this);
    try {
      e(f, q);
    } catch (g) {
      r(this, g);
    }
    this.promiseConstructor = b;
    return this;
  }
  var e = Function("return this")();
  if (e.Promise) {
    "function" !== typeof e.Promise.all && (e.Promise.all = function(b) {
      var f = 0, q = [], g, c, s = new e.Promise(function(b, e) {
        g = b;
        c = e;
      });
      b.forEach(function(b, e) {
        f++;
        b.then(function(b) {
          q[e] = b;
          f--;
          0 === f && g(q);
        }, c);
      });
      0 === f && g(q);
      return s;
    }), "function" !== typeof e.Promise.resolve && (e.Promise.resolve = function(b) {
      return new e.Promise(function(e) {
        e(b);
      });
    });
  } else {
    var q = [];
    b.all = function(b) {
      var e = d(this), q = [], g = {countdown:0}, c = 0;
      b.forEach(function(b) {
        this.cast(b).then(f(c, q, e, g), e.reject);
        c++;
        g.countdown++;
      }, this);
      0 === c && e.resolve(q);
      return e.promise;
    };
    b.cast = function(b) {
      if (a(b)) {
        return b;
      }
      var e = d(this);
      e.resolve(b);
      return e.promise;
    };
    b.reject = function(b) {
      var e = d(this);
      e.reject(b);
      return e.promise;
    };
    b.resolve = function(b) {
      var e = d(this);
      e.resolve(b);
      return e.promise;
    };
    b.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), q = "function" === typeof e ? e : c, s = {deferred:f, handler:g(this, "function" === typeof b ? b : h, q)}, q = {deferred:f, handler:q};
      switch(this.promiseStatus) {
        case "unresolved":
          this.resolveReactions.push(s);
          this.rejectReactions.push(q);
          break;
        case "has-resolution":
          u({reaction:s, argument:this.result});
          break;
        case "has-rejection":
          u({reaction:q, argument:this.result});
      }
      return f.promise;
    }};
    e.Promise = b;
  }
})();
"undefined" !== typeof exports && (exports.Shumway = Shumway);
(function() {
  function d(d, a, r) {
    d[a] || Object.defineProperty(d, a, {value:r, writable:!0, configurable:!0, enumerable:!1});
  }
  d(String.prototype, "padRight", function(d, a) {
    var r = this, v = r.replace(/\033\[[0-9]*m/g, "").length;
    if (!d || v >= a) {
      return r;
    }
    for (var v = (a - v) / d.length, u = 0;u < v;u++) {
      r += d;
    }
    return r;
  });
  d(String.prototype, "padLeft", function(d, a) {
    var r = this, v = r.length;
    if (!d || v >= a) {
      return r;
    }
    for (var v = (a - v) / d.length, u = 0;u < v;u++) {
      r = d + r;
    }
    return r;
  });
  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 r = 0, v = 0;v < this.length;v++) {
      this[v] === d && (this[v] = a, r++);
    }
    return r;
  });
})();
(function(d) {
  (function(k) {
    var a = d.isObject, r = function() {
      function a(l, c, h, p) {
        this.shortName = l;
        this.longName = c;
        this.type = h;
        p = p || {};
        this.positional = p.positional;
        this.parseFn = p.parse;
        this.value = p.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 = r;
    var v = function() {
      function a() {
        this.args = [];
      }
      a.prototype.addArgument = function(l, c, h, p) {
        l = new r(l, c, h, p);
        this.args.push(l);
        return l;
      };
      a.prototype.addBoundOption = function(l) {
        this.args.push(new r(l.shortName, l.longName, l.type, {parse:function(c) {
          l.value = c;
        }}));
      };
      a.prototype.addBoundOptionSet = function(l) {
        var c = this;
        l.options.forEach(function(h) {
          h instanceof u ? c.addBoundOptionSet(h) : c.addBoundOption(h);
        });
      };
      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 = {}, h = [];
        this.args.forEach(function(f) {
          f.positional ? h.push(f) : (c["-" + f.shortName] = f, c["--" + f.longName] = f);
        });
        for (var p = [];l.length;) {
          var s = l.shift(), m = null, g = s;
          if ("--" == s) {
            p = p.concat(l);
            break;
          } else {
            if ("-" == s.slice(0, 1) || "--" == s.slice(0, 2)) {
              m = c[s];
              if (!m) {
                continue;
              }
              g = "boolean" !== m.type ? l.shift() : !0;
            } else {
              h.length ? m = h.shift() : p.push(g);
            }
          }
          m && m.parse(g);
        }
        return p;
      };
      return a;
    }();
    k.ArgumentParser = v;
    var u = function() {
      function r(l, c) {
        void 0 === c && (c = null);
        this.open = !1;
        this.name = l;
        this.settings = c || {};
        this.options = [];
      }
      r.prototype.register = function(l) {
        if (l instanceof r) {
          for (var c = 0;c < this.options.length;c++) {
            var h = this.options[c];
            if (h instanceof r && h.name === l.name) {
              return h;
            }
          }
        }
        this.options.push(l);
        if (this.settings) {
          if (l instanceof r) {
            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;
      };
      r.prototype.trace = function(l) {
        l.enter(this.name + " {");
        this.options.forEach(function(c) {
          c.trace(l);
        });
        l.leave("}");
      };
      r.prototype.getSettings = function() {
        var l = {};
        this.options.forEach(function(c) {
          c instanceof r ? l[c.name] = {settings:c.getSettings(), open:c.open} : l[c.longName] = c.value;
        });
        return l;
      };
      r.prototype.setSettings = function(l) {
        l && this.options.forEach(function(c) {
          c instanceof r ? c.name in l && c.setSettings(l[c.name].settings) : c.longName in l && (c.value = l[c.longName]);
        });
      };
      return r;
    }();
    k.OptionSet = u;
    v = function() {
      function a(l, c, h, p, s, m) {
        void 0 === m && (m = null);
        this.longName = c;
        this.shortName = l;
        this.type = h;
        this.value = this.defaultValue = p;
        this.description = s;
        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 = v;
  })(d.Options || (d.Options = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    function a() {
      try {
        return "undefined" !== typeof window && "localStorage" in window && null !== window.localStorage;
      } catch (a) {
        return!1;
      }
    }
    function r(r) {
      void 0 === r && (r = k.ROOT);
      var d = {};
      if (a() && (r = window.localStorage[r])) {
        try {
          d = JSON.parse(r);
        } catch (t) {
        }
      }
      return d;
    }
    k.ROOT = "Shumway Options";
    k.shumwayOptions = new d.Options.OptionSet(k.ROOT, r());
    k.isStorageSupported = a;
    k.load = r;
    k.save = function(r, d) {
      void 0 === r && (r = null);
      void 0 === d && (d = k.ROOT);
      if (a()) {
        try {
          window.localStorage[d] = JSON.stringify(r ? r : k.shumwayOptions.getSettings());
        } catch (t) {
        }
      }
    };
    k.setSettings = function(a) {
      k.shumwayOptions.setSettings(a);
    };
    k.getSettings = function(a) {
      return k.shumwayOptions.getSettings();
    };
  })(d.Settings || (d.Settings = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    var a = function() {
      function a(r, u) {
        this._parent = r;
        this._timers = d.ObjectUtilities.createMap();
        this._name = u;
        this._count = this._total = this._last = this._begin = 0;
      }
      a.time = function(d, u) {
        a.start(d);
        u();
        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 r in this._timers) {
          this._timers[r].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(r) {
        this._enabled = r;
        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, r, t) {
        void 0 === r && (r = 1);
        void 0 === t && (t = 0);
        if (this._enabled) {
          return void 0 === this._counts[a] && (this._counts[a] = 0, this._times[a] = 0), this._counts[a] += r, this._times[a] += t, this._counts[a];
        }
      };
      a.prototype.trace = function(a) {
        for (var r in this._counts) {
          a.writeLn(r + ": " + this._counts[r]);
        }
      };
      a.prototype._pairToString = function(a, r) {
        var t = r[0], l = r[1], c = a[t], t = t + ": " + l;
        c && (t += ", " + c.toFixed(4), 1 < l && (t += " (" + (c / l).toFixed(4) + ")"));
        return t;
      };
      a.prototype.toStringSorted = function() {
        var a = this, r = this._times, t = [], l;
        for (l in this._counts) {
          t.push([l, this._counts[l]]);
        }
        t.sort(function(c, h) {
          return h[1] - c[1];
        });
        return t.map(function(c) {
          return a._pairToString(r, c);
        }).join(", ");
      };
      a.prototype.traceSorted = function(a) {
        var r = !0;
        void 0 === r && (r = !1);
        var t = this, l = this._times, c = [], h;
        for (h in this._counts) {
          c.push([h, this._counts[h]]);
        }
        c.sort(function(c, s) {
          return s[1] - c[1];
        });
        r ? a.writeLn(c.map(function(c) {
          return t._pairToString(l, c);
        }).join(", ")) : c.forEach(function(c) {
          a.writeLn(t._pairToString(l, c));
        });
      };
      a.instance = new a(!0);
      return a;
    }();
    k.Counter = a;
    a = function() {
      function a(r) {
        this._samples = new Float64Array(r);
        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, r = 0;r < this._count;r++) {
          a += this._samples[r];
        }
        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 r in k) {
    k.hasOwnProperty(r) && (d[r] = k[r]);
  }
  a.prototype = k.prototype;
  d.prototype = new a;
};
(function(d) {
  (function(d) {
    function a(b) {
      for (var f = Math.max.apply(null, b), n = b.length, g = 1 << f, c = new Uint32Array(g), s = f << 16 | 65535, p = 0;p < g;p++) {
        c[p] = s;
      }
      for (var s = 0, p = 1, m = 2;p <= f;s <<= 1, ++p, m <<= 1) {
        for (var h = 0;h < n;++h) {
          if (b[h] === p) {
            for (var l = 0, a = 0;a < p;++a) {
              l = 2 * l + (s >> a & 1);
            }
            for (a = l;a < g;a += m) {
              c[a] = p << 16 | h;
            }
            ++s;
          }
        }
      }
      return{codes:c, maxBits:f};
    }
    var r;
    (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";
    })(r || (r = {}));
    r = function() {
      function b(e) {
      }
      b.prototype.push = function(b) {
      };
      b.prototype.close = function() {
      };
      b.create = function(b) {
        return "undefined" !== typeof SpecialInflate ? new g(b) : new v(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, n, g) {
        var c = new Uint8Array(n), s = 0;
        n = b.create(g);
        n.onData = function(b) {
          c.set(b, s);
          s += b.length;
        };
        n.push(f);
        n.close();
        return c;
      };
      return b;
    }();
    d.Inflate = r;
    var v = function(b) {
      function f(n) {
        b.call(this, n);
        this._buffer = null;
        this._bitLength = this._bitBuffer = this._bufferPosition = this._bufferSize = 0;
        this._window = new Uint8Array(65794);
        this._windowPosition = 0;
        this._state = n ? 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) {
          u = new Uint8Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);
          t = new Uint16Array(30);
          l = new Uint8Array(30);
          for (var g = n = 0, q = 1;30 > n;++n) {
            t[n] = q, q += 1 << (l[n] = ~~((g += 2 < n ? 1 : 0) / 2));
          }
          var r = new Uint8Array(288);
          for (n = 0;32 > n;++n) {
            r[n] = 5;
          }
          c = a(r.subarray(0, 32));
          h = new Uint16Array(29);
          p = new Uint8Array(29);
          g = n = 0;
          for (q = 3;29 > n;++n) {
            h[n] = q - (28 == n ? 1 : 0), q += 1 << (p[n] = ~~((g += 4 < n ? 1 : 0) / 4 % 6));
          }
          for (n = 0;288 > n;++n) {
            r[n] = 144 > n || 279 < n ? 8 : 256 > n ? 9 : 7;
          }
          s = a(r);
          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, g = this._bitLength, q = this._bufferPosition;
        if (3 > (e - q << 3) + g) {
          return!0;
        }
        3 > g && (f |= b[q++] << g, g += 8);
        var p = f & 7, f = f >> 3, g = g - 3;
        switch(p >> 1) {
          case 0:
            g = f = 0;
            if (4 > e - q) {
              return!0;
            }
            var m = b[q] | b[q + 1] << 8, b = b[q + 2] | b[q + 3] << 8, q = q + 4;
            if (65535 !== (m ^ b)) {
              this._error("inflate: invalid block 0 length");
              b = 6;
              break;
            }
            0 === m ? b = 0 : (this._block0Read = m, b = 1);
            break;
          case 1:
            b = 2;
            this._literalTable = s;
            this._distanceTable = c;
            break;
          case 2:
            if (26 > (e - q << 3) + g) {
              return!0;
            }
            for (;14 > g;) {
              f |= b[q++] << g, g += 8;
            }
            m = (f >> 10 & 15) + 4;
            if ((e - q << 3) + g < 14 + 3 * m) {
              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, g = g - 14, h = new Uint8Array(19), l = 0;l < m;++l) {
              3 > g && (f |= b[q++] << g, g += 8), h[u[l]] = f & 7, f >>= 3, g -= 3;
            }
            for (;19 > l;l++) {
              h[u[l]] = 0;
            }
            e.bitLengths = new Uint8Array(e.numLiteralCodes + e.numDistanceCodes);
            e.codeLengthTable = a(h);
            this._block2State = e;
            b = 3;
            break;
          default:
            return this._error("inflate: unsupported block type"), !1;
        }
        this._isFinalBlock = !!(p & 1);
        this._state = b;
        this._bufferPosition = q;
        this._bitBuffer = f;
        this._bitLength = g;
        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, g = 65794 - e, q = this._bufferSize - b, c = q < f, s = Math.min(g, q, f);
        this._window.set(this._buffer.subarray(b, b + s), e);
        this._windowPosition = e + s;
        this._bufferPosition = b + s;
        this._block0Read = f - s;
        return f === s ? (this._state = 0, !1) : c && g < q;
      };
      f.prototype._readBits = function(b) {
        var e = this._bitBuffer, f = this._bitLength;
        if (b > f) {
          var g = this._bufferPosition, q = this._bufferSize;
          do {
            if (g >= q) {
              return this._bufferPosition = g, this._bitBuffer = e, this._bitLength = f, -1;
            }
            e |= this._buffer[g++] << f;
            f += 8;
          } while (b > f);
          this._bufferPosition = g;
        }
        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, g = b.maxBits;
        if (g > f) {
          var q = this._bufferPosition, c = this._bufferSize;
          do {
            if (q >= c) {
              return this._bufferPosition = q, this._bitBuffer = e, this._bitLength = f, -1;
            }
            e |= this._buffer[q++] << f;
            f += 8;
          } while (g > f);
          this._bufferPosition = q;
        }
        b = b.codes[e & (1 << g) - 1];
        g = b >> 16;
        if (b & 32768) {
          return this._error("inflate: invalid encoding"), this._state = 6, -1;
        }
        this._bitBuffer = e >> g;
        this._bitLength = f - g;
        return b & 65535;
      };
      f.prototype._decodeBlock2Pre = function() {
        var b = this._block2State, e = b.numLiteralCodes + b.numDistanceCodes, f = b.bitLengths, g = b.codesRead, q = 0 < g ? f[g - 1] : 0, c = b.codeLengthTable, s;
        if (0 < b.dupBits) {
          s = this._readBits(b.dupBits);
          if (0 > s) {
            return!0;
          }
          for (;s--;) {
            f[g++] = q;
          }
          b.dupBits = 0;
        }
        for (;g < e;) {
          var p = this._readCode(c);
          if (0 > p) {
            return b.codesRead = g, !0;
          }
          if (16 > p) {
            f[g++] = q = p;
          } else {
            var m;
            switch(p) {
              case 16:
                m = 2;
                s = 3;
                p = q;
                break;
              case 17:
                s = m = 3;
                p = 0;
                break;
              case 18:
                m = 7, s = 11, p = 0;
            }
            for (;s--;) {
              f[g++] = p;
            }
            s = this._readBits(m);
            if (0 > s) {
              return b.codesRead = g, b.dupBits = m, !0;
            }
            for (;s--;) {
              f[g++] = p;
            }
            q = p;
          }
        }
        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, g = this._windowPosition, q = this._copyState, c, s, m, a;
        if (0 !== q.state) {
          switch(q.state) {
            case 1:
              if (0 > (c = this._readBits(q.lenBits))) {
                return!0;
              }
              q.len += c;
              q.state = 2;
            case 2:
              if (0 > (c = this._readCode(e))) {
                return!0;
              }
              q.distBits = l[c];
              q.dist = t[c];
              q.state = 3;
            case 3:
              c = 0;
              if (0 < q.distBits && 0 > (c = this._readBits(q.distBits))) {
                return!0;
              }
              a = q.dist + c;
              s = q.len;
              for (c = g - a;s--;) {
                f[g++] = f[c++];
              }
              q.state = 0;
              if (65536 <= g) {
                return this._windowPosition = g, !1;
              }
              break;
          }
        }
        do {
          c = this._readCode(b);
          if (0 > c) {
            return this._windowPosition = g, !0;
          }
          if (256 > c) {
            f[g++] = c;
          } else {
            if (256 < c) {
              this._windowPosition = g;
              c -= 257;
              m = p[c];
              s = h[c];
              c = 0 === m ? 0 : this._readBits(m);
              if (0 > c) {
                return q.state = 1, q.len = s, q.lenBits = m, !0;
              }
              s += c;
              c = this._readCode(e);
              if (0 > c) {
                return q.state = 2, q.len = s, !0;
              }
              m = l[c];
              a = t[c];
              c = 0 === m ? 0 : this._readBits(m);
              if (0 > c) {
                return q.state = 3, q.len = s, q.dist = a, q.distBits = m, !0;
              }
              a += c;
              for (c = g - a;s--;) {
                f[g++] = f[c++];
              }
            } else {
              this._state = 0;
              break;
            }
          }
        } while (65536 > g);
        this._windowPosition = g;
        return!1;
      };
      return f;
    }(r), u, t, l, c, h, p, s, m = !1, g = function(b) {
      function f(n) {
        b.call(this, n);
        this._verifyHeader = n;
        this._specialInflate = new SpecialInflate;
        this._specialInflate.onData = 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;
    }(r), 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 g = this.a, c = this.b;e < f;++e) {
          g = (g + (b[e] & 255)) % 65521, c = (c + g) % 65521;
        }
        this.a = g;
        this.b = c;
      };
      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)), g = 0, c = 0;65535 < e;) {
          f.set(new Uint8Array([0, 255, 255, 0, 0]), g), g += 5, f.set(b.subarray(c, c + 65535), g), c += 65535, g += 65535, e -= 65535;
        }
        f.set(new Uint8Array([0, e & 255, e >> 8 & 255, ~e & 255, ~e >> 8 & 255]), g);
        f.set(b.subarray(c, e), g + 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 r(b, e, f, g) {
      for (var c = 1, s = 0, p = 0;p < f;p++) {
        var m = g.decodeBit(b, c + e), c = (c << 1) + m, s = s | m << p
      }
      return s;
    }
    function v(b, e) {
      var f = [];
      f.length = e;
      for (var g = 0;g < e;g++) {
        f[g] = new h(b);
      }
      return f;
    }
    var u = 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 g = 2 * this.buffer.length;g < f;) {
            g *= 2;
          }
          f = new Uint8Array(g);
          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;
    }(), t = 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, g = this.size, q = this.buf, c = b <= f ? f - b : g - b + f, s = e;0 < s;) {
          for (var p = Math.min(Math.min(s, g - f), g - c), m = 0;m < p;m++) {
            var h = q[c++];
            q[f++] = h;
          }
          f === g && (this.pos = f, this.flush(), f = 0, this.isFull = !0);
          c === g && (c = 0);
          s -= p;
        }
        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, g = this.code;
        do {
          var f = f >>> 1 | 0, g = g - f | 0, q = g >> 31, g = g + (f & q) | 0;
          g === f && (this.corrupted = !0);
          0 <= f && 16777216 > f && (f <<= 8, g = g << 8 | this.inStream.readByte());
          e = (e << 1) + q + 1 | 0;
        } while (--b);
        this.range = f;
        this.code = g;
        return e;
      };
      b.prototype.decodeBit = function(b, e) {
        var f = this.range, g = this.code, q = b[e], c = (f >>> 11) * q;
        g >>> 0 < c ? (q = q + (2048 - q >> 5) | 0, f = c | 0, c = 0) : (q = q - (q >> 5) | 0, g = g - c | 0, f = f - c | 0, c = 1);
        b[e] = q & 65535;
        0 <= f && 16777216 > f && (f <<= 8, g = g << 8 | this.inStream.readByte());
        this.range = f;
        this.code = g;
        return c;
      };
      return b;
    }(), h = 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 r(this.probs, 0, this.numBits, b);
      };
      return b;
    }(), p = function() {
      function b() {
        this.choice = a(2);
        this.lowCoder = v(3, 16);
        this.midCoder = v(3, 16);
        this.highCoder = new h(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;
    }(), s = 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, g = this.rangeDec, q = 0;
        f.isEmpty() || (q = f.getByte(1));
        var c = 1, q = 768 * (((f.totalPos & (1 << this.lp) - 1) << this.lc) + (q >> 8 - this.lc));
        if (7 <= b) {
          f = f.getByte(e + 1);
          do {
            var s = f >> 7 & 1, f = f << 1, p = g.decodeBit(this.litProbs, q + ((1 + s << 8) + c)), c = c << 1 | p;
            if (s !== p) {
              break;
            }
          } while (256 > c);
        }
        for (;256 > c;) {
          c = c << 1 | g.decodeBit(this.litProbs, q + c);
        }
        return c - 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, g = (2 | e & 1) << f;
        14 > e ? g = g + r(this.posDecoders, g - e, f, b) | 0 : (g = g + (b.decodeDirectBits(f - 4) << 4) | 0, g = g + this.alignDecoder.reverseDecode(b) | 0);
        return g;
      };
      e.prototype.init = function() {
        this.litProbs = a(768 << this.lc + this.lp);
        this.posSlotDecoder = v(6, 4);
        this.alignDecoder = new h(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 p;
        this.repLenDecoder = new p;
      };
      e.prototype.decode = function(e) {
        for (var q = this.rangeDec, c = this.outWindow, s = this.pb, p = this.dictSize, h = this.markerIsMandatory, l = this.leftToUnpack, a = this.isMatch, r = this.isRep, t = this.isRepG0, d = this.isRepG1, u = this.isRepG2, k = this.isRep0Long, v = this.lenDecoder, G = this.repLenDecoder, C = this.reps[0], I = this.reps[1], P = this.reps[2], T = this.reps[3], O = this.state;;) {
          if (e && 48 > q.inStream.available) {
            this.outWindow.flush();
            break;
          }
          if (0 === l && !h && (this.outWindow.flush(), q.isFinishedOK())) {
            return f;
          }
          var Q = c.totalPos & (1 << s) - 1;
          if (0 === q.decodeBit(a, (O << 4) + Q)) {
            if (0 === l) {
              return m;
            }
            c.putByte(this.decodeLiteral(O, C));
            O = 4 > O ? 0 : 10 > O ? O - 3 : O - 6;
            l--;
          } else {
            if (0 !== q.decodeBit(r, O)) {
              if (0 === l || c.isEmpty()) {
                return m;
              }
              if (0 === q.decodeBit(t, O)) {
                if (0 === q.decodeBit(k, (O << 4) + Q)) {
                  O = 7 > O ? 9 : 11;
                  c.putByte(c.getByte(C + 1));
                  l--;
                  continue;
                }
              } else {
                var S;
                0 === q.decodeBit(d, O) ? S = I : (0 === q.decodeBit(u, O) ? S = P : (S = T, T = P), P = I);
                I = C;
                C = S;
              }
              Q = G.decode(q, Q);
              O = 7 > O ? 8 : 11;
            } else {
              T = P;
              P = I;
              I = C;
              Q = v.decode(q, Q);
              O = 7 > O ? 7 : 10;
              C = this.decodeDistance(Q);
              if (-1 === C) {
                return this.outWindow.flush(), q.isFinishedOK() ? g : m;
              }
              if (0 === l || C >= p || !c.checkDistance(C)) {
                return m;
              }
            }
            Q += 2;
            S = !1;
            void 0 !== l && l < Q && (Q = l, S = !0);
            c.copyMatch(C + 1, Q);
            l -= Q;
            if (S) {
              return m;
            }
          }
        }
        this.state = O;
        this.reps[0] = C;
        this.reps[1] = I;
        this.reps[2] = P;
        this.reps[3] = T;
        this.leftToUnpack = l;
        return b;
      };
      return e;
    }(), m = 0, g = 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";
    })(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, g = (1 === this._state ? 17 : 13) + 5;
          if (f + e.length < g) {
            g = new Uint8Array(f + e.length);
            0 < f && g.set(this.buffer);
            g.set(e, f);
            this.buffer = g;
            return;
          }
          var c = new Uint8Array(g);
          0 < f && c.set(this.buffer);
          c.set(e.subarray(0, g - f), f);
          this._inStream = new u;
          this._inStream.append(c.subarray(g - 5));
          this._outStream = new t(function(b) {
            this.onData.call(null, b);
          }.bind(this));
          this._decoder = new s(this._inStream, this._outStream);
          if (1 === this._state) {
            this._decoder.decodeProperties(c.subarray(12, 17)), this._decoder.markerIsMandatory = !1, this._decoder.unpackSize = ((c[4] | c[5] << 8 | c[6] << 16 | c[7] << 24) >>> 0) - 8;
          } else {
            this._decoder.decodeProperties(c.subarray(0, 5));
            for (var f = 0, q = !1, p = 0;8 > p;p++) {
              var m = c[5 + p];
              255 !== m && (q = !0);
              f |= m << 8 * p;
            }
            this._decoder.markerIsMandatory = !q;
            this._decoder.unpackSize = q ? f : void 0;
          }
          this._decoder.create();
          e = e.subarray(g);
          this._state = 2;
        }
        this._inStream.append(e);
        e = this._decoder.decode(!0);
        this._inStream.compact();
        e !== b && this._checkError(e);
      };
      e.prototype.close = function() {
        this._state = 3;
        var b = this._decoder.decode(!1);
        this._checkError(b);
        this._decoder = null;
      };
      e.prototype._checkError = function(e) {
        var f;
        e === m ? f = "LZMA decoding error" : e === b ? f = "Decoding is not complete" : e === g ? void 0 !== this._decoder.unpackSize && this._decoder.unpackSize !== this._outStream.processed && (f = "Finished with end marker before than specified size") : f = "Internal LZMA Error";
        if (f && this.onError) {
          this.onError(f);
        }
      };
      return e;
    }();
    d.LzmaDecoder = e;
  })(d.ArrayUtilities || (d.ArrayUtilities = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    function a(g, f) {
      g !== l(g, 0, f) && throwError("RangeError", Errors.ParamRangeError);
    }
    function r(g) {
      return "string" === typeof g ? g : void 0 == g ? null : g + "";
    }
    var v = d.Debug.notImplemented, u = d.StringUtilities.utf8decode, t = d.StringUtilities.utf8encode, l = d.NumberUtilities.clamp, c = function() {
      return function(g, f, b) {
        this.buffer = g;
        this.length = f;
        this.littleEndian = b;
      };
    }();
    k.PlainObjectDataBuffer = c;
    for (var h = new Uint32Array(33), p = 1, s = 0;32 >= p;p++) {
      h[p] = s = s << 1 | 1;
    }
    var m;
    (function(g) {
      g[g.U8 = 1] = "U8";
      g[g.I32 = 2] = "I32";
      g[g.F32 = 4] = "F32";
    })(m || (m = {}));
    p = function() {
      function g(f) {
        void 0 === f && (f = g.INITIAL_SIZE);
        this._buffer || (this._buffer = new ArrayBuffer(f), this._position = this._length = 0, this._resetViews(), this._littleEndian = g._nativeLittleEndian, this._bitLength = this._bitBuffer = 0);
      }
      g.FromArrayBuffer = function(f, b) {
        void 0 === b && (b = -1);
        var e = Object.create(g.prototype);
        e._buffer = f;
        e._length = -1 === b ? f.byteLength : b;
        e._position = 0;
        e._resetViews();
        e._littleEndian = g._nativeLittleEndian;
        e._bitBuffer = 0;
        e._bitLength = 0;
        return e;
      };
      g.FromPlainObject = function(f) {
        var b = g.FromArrayBuffer(f.buffer, f.length);
        b._littleEndian = f.littleEndian;
        return b;
      };
      g.prototype.toPlainObject = function() {
        return new c(this._buffer, this._length, this._littleEndian);
      };
      g.prototype._resetViews = function() {
        this._u8 = new Uint8Array(this._buffer);
        this._f32 = this._i32 = null;
      };
      g.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)));
      };
      g.prototype.getBytes = function() {
        return new Uint8Array(this._buffer, 0, this._length);
      };
      g.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 = g._arrayBufferPool.acquire(e);
          e = this._u8;
          this._buffer = f;
          this._resetViews();
          this._u8.set(e);
          g._arrayBufferPool.release(b);
        }
      };
      g.prototype.clear = function() {
        this._position = this._length = 0;
      };
      g.prototype.readBoolean = function() {
        return 0 !== this.readUnsignedByte();
      };
      g.prototype.readByte = function() {
        return this.readUnsignedByte() << 24 >> 24;
      };
      g.prototype.readUnsignedByte = function() {
        this._position + 1 > this._length && throwError("EOFError", Errors.EOFError);
        return this._u8[this._position++];
      };
      g.prototype.readBytes = function(f, b, e) {
        void 0 === b && (b = 0);
        void 0 === e && (e = 0);
        var g = this._position;
        b || (b = 0);
        e || (e = this._length - g);
        g + 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, g, e), b);
        this._position += e;
      };
      g.prototype.readShort = function() {
        return this.readUnsignedShort() << 16 >> 16;
      };
      g.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;
      };
      g.prototype.readInt = function() {
        var f = this._u8, b = this._position;
        b + 4 > this._length && throwError("EOFError", Errors.EOFError);
        var e = f[b + 0], g = f[b + 1], n = f[b + 2], f = f[b + 3];
        this._position = b + 4;
        return this._littleEndian ? f << 24 | n << 16 | g << 8 | e : e << 24 | g << 16 | n << 8 | f;
      };
      g.prototype.readUnsignedInt = function() {
        return this.readInt() >>> 0;
      };
      g.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];
      };
      g.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];
      };
      g.prototype.writeBoolean = function(f) {
        this.writeByte(f ? 1 : 0);
      };
      g.prototype.writeByte = function(f) {
        var b = this._position + 1;
        this._ensureCapacity(b);
        this._u8[this._position++] = f;
        b > this._length && (this._length = b);
      };
      g.prototype.writeUnsignedByte = function(f) {
        var b = this._position + 1;
        this._ensureCapacity(b);
        this._u8[this._position++] = f;
        b > this._length && (this._length = b);
      };
      g.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);
      };
      g.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));
      };
      g.prototype.writeShort = function(f) {
        this.writeUnsignedShort(f);
      };
      g.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);
      };
      g.prototype.writeInt = function(f) {
        this.writeUnsignedInt(f);
      };
      g.prototype.write2Ints = function(f, b) {
        this.write2UnsignedInts(f, b);
      };
      g.prototype.write4Ints = function(f, b, e, g) {
        this.write4UnsignedInts(f, b, e, g);
      };
      g.prototype.writeUnsignedInt = function(f) {
        var b = this._position;
        this._ensureCapacity(b + 4);
        this._requestViews(2);
        if (this._littleEndian === g._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);
      };
      g.prototype.write2UnsignedInts = function(f, b) {
        var e = this._position;
        this._ensureCapacity(e + 8);
        this._requestViews(2);
        this._littleEndian === g._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));
      };
      g.prototype.write4UnsignedInts = function(f, b, e, c) {
        var n = this._position;
        this._ensureCapacity(n + 16);
        this._requestViews(2);
        this._littleEndian === g._nativeLittleEndian && 0 === (n & 3) && this._i32 ? (this._i32[(n >> 2) + 0] = f, this._i32[(n >> 2) + 1] = b, this._i32[(n >> 2) + 2] = e, this._i32[(n >> 2) + 3] = c, this._position = n += 16, n > this._length && (this._length = n)) : (this.writeUnsignedInt(f), this.writeUnsignedInt(b), this.writeUnsignedInt(e), this.writeUnsignedInt(c));
      };
      g.prototype.writeFloat = function(f) {
        var b = this._position;
        this._ensureCapacity(b + 4);
        this._requestViews(4);
        if (this._littleEndian === g._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);
      };
      g.prototype.write6Floats = function(f, b, e, c, n, s) {
        var p = this._position;
        this._ensureCapacity(p + 24);
        this._requestViews(4);
        this._littleEndian === g._nativeLittleEndian && 0 === (p & 3) && this._f32 ? (this._f32[(p >> 2) + 0] = f, this._f32[(p >> 2) + 1] = b, this._f32[(p >> 2) + 2] = e, this._f32[(p >> 2) + 3] = c, this._f32[(p >> 2) + 4] = n, this._f32[(p >> 2) + 5] = s, this._position = p += 24, p > this._length && (this._length = p)) : (this.writeFloat(f), this.writeFloat(b), this.writeFloat(e), this.writeFloat(c), this.writeFloat(n), this.writeFloat(s));
      };
      g.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);
      };
      g.prototype.readRawBytes = function() {
        return new Int8Array(this._buffer, 0, this._length);
      };
      g.prototype.writeUTF = function(f) {
        f = r(f);
        f = u(f);
        this.writeShort(f.length);
        this.writeRawBytes(f);
      };
      g.prototype.writeUTFBytes = function(f) {
        f = r(f);
        f = u(f);
        this.writeRawBytes(f);
      };
      g.prototype.readUTF = function() {
        return this.readUTFBytes(this.readShort());
      };
      g.prototype.readUTFBytes = function(f) {
        f >>>= 0;
        var b = this._position;
        b + f > this._length && throwError("EOFError", Errors.EOFError);
        this._position += f;
        return t(new Int8Array(this._buffer, b, f));
      };
      Object.defineProperty(g.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(g.prototype, "bytesAvailable", {get:function() {
        return this._length - this._position;
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(g.prototype, "position", {get:function() {
        return this._position;
      }, set:function(f) {
        this._position = f >>> 0;
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(g.prototype, "buffer", {get:function() {
        return this._buffer;
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(g.prototype, "bytes", {get:function() {
        return this._u8;
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(g.prototype, "ints", {get:function() {
        this._requestViews(2);
        return this._i32;
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(g.prototype, "objectEncoding", {get:function() {
        return this._objectEncoding;
      }, set:function(f) {
        this._objectEncoding = f >>> 0;
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(g.prototype, "endian", {get:function() {
        return this._littleEndian ? "littleEndian" : "bigEndian";
      }, set:function(f) {
        f = r(f);
        this._littleEndian = "auto" === f ? g._nativeLittleEndian : "littleEndian" === f;
      }, enumerable:!0, configurable:!0});
      g.prototype.toString = function() {
        return t(new Int8Array(this._buffer, 0, this._length));
      };
      g.prototype.toBlob = function(f) {
        return new Blob([new Int8Array(this._buffer, this._position, this._length)], {type:f});
      };
      g.prototype.writeMultiByte = function(f, b) {
        v("packageInternal flash.utils.ObjectOutput::writeMultiByte");
      };
      g.prototype.readMultiByte = function(f, b) {
        v("packageInternal flash.utils.ObjectInput::readMultiByte");
      };
      g.prototype.getValue = function(f) {
        f |= 0;
        return f >= this._length ? void 0 : this._u8[f];
      };
      g.prototype.setValue = function(f, b) {
        f |= 0;
        var e = f + 1;
        this._ensureCapacity(e);
        this._u8[f] = b;
        e > this._length && (this._length = e);
      };
      g.prototype.readFixed = function() {
        return this.readInt() / 65536;
      };
      g.prototype.readFixed8 = function() {
        return this.readShort() / 256;
      };
      g.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;
      };
      g.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;
      };
      g.prototype.readBits = function(f) {
        return this.readUnsignedBits(f) << 32 - f >> 32 - f;
      };
      g.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 & h[f];
        this._bitBuffer = b;
        this._bitLength = e;
        return f;
      };
      g.prototype.readFixedBits = function(f) {
        return this.readBits(f) / 65536;
      };
      g.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 t(new Int8Array(this._buffer, b, f));
      };
      g.prototype.align = function() {
        this._bitLength = this._bitBuffer = 0;
      };
      g.prototype._compress = function(f) {
        f = r(f);
        switch(f) {
          case "zlib":
            f = new k.Deflate(!0);
            break;
          case "deflate":
            f = new k.Deflate(!1);
            break;
          default:
            return;
        }
        var b = new g;
        f.onData = b.writeRawBytes.bind(b);
        f.push(this._u8.subarray(0, this._length));
        f.close();
        this._ensureCapacity(b._u8.length);
        this._u8.set(b._u8);
        this.length = b.length;
        this._position = 0;
      };
      g.prototype._uncompress = function(f) {
        f = r(f);
        switch(f) {
          case "zlib":
            f = k.Inflate.create(!0);
            break;
          case "deflate":
            f = k.Inflate.create(!1);
            break;
          case "lzma":
            f = new k.LzmaDecoder(!1);
            break;
          default:
            return;
        }
        var b = new g, e;
        f.onData = b.writeRawBytes.bind(b);
        f.onError = function(b) {
          return e = b;
        };
        f.push(this._u8.subarray(0, this._length));
        e && throwError("IOError", Errors.CompressedDataError);
        f.close();
        this._ensureCapacity(b._u8.length);
        this._u8.set(b._u8);
        this.length = b.length;
        this._position = 0;
      };
      g._nativeLittleEndian = 1 === (new Int8Array((new Int32Array([1])).buffer))[0];
      g.INITIAL_SIZE = 128;
      g._arrayBufferPool = new d.ArrayBufferPool;
      return g;
    }();
    k.DataBuffer = p;
  })(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 r = function() {
    return function(a, r, l, c, h, p, s, m, g, f, b) {
      this.commands = a;
      this.commandsPosition = r;
      this.coordinates = l;
      this.morphCoordinates = c;
      this.coordinatesPosition = h;
      this.styles = p;
      this.stylesLength = s;
      this.morphStyles = m;
      this.morphStylesLength = g;
      this.hasFills = f;
      this.hasLines = b;
    };
  }();
  d.PlainObjectShapeData = r;
  var v;
  (function(a) {
    a[a.Commands = 32] = "Commands";
    a[a.Coordinates = 128] = "Coordinates";
    a[a.Styles = 16] = "Styles";
  })(v || (v = {}));
  v = 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, h) {
      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++] = h;
    };
    d.prototype.cubicCurveTo = function(a, l, c, h, p, s) {
      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++] = h;
      this.coordinates[this.coordinatesPosition++] = p;
      this.coordinates[this.coordinatesPosition++] = s;
    };
    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, h, p, s, 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(h);
      a.writeUnsignedByte(p);
      a.writeUnsignedByte(s);
      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, h, p) {
      this.ensurePathCapacities(1, 0);
      this.commands[this.commandsPosition++] = a;
      a = this.styles;
      a.writeUnsignedInt(l);
      this._writeStyleMatrix(c, !1);
      a.writeBoolean(h);
      a.writeBoolean(p);
      this.hasFills = !0;
    };
    d.prototype.writeMorphBitmap = function(a) {
      this._writeStyleMatrix(a, !0);
    };
    d.prototype.beginGradient = function(a, l, c, h, p, s, m, g) {
      this.ensurePathCapacities(1, 0);
      this.commands[this.commandsPosition++] = a;
      a = this.styles;
      a.writeUnsignedByte(h);
      a.writeShort(g);
      this._writeStyleMatrix(p, !1);
      h = l.length;
      a.writeByte(h);
      for (p = 0;p < h;p++) {
        a.writeUnsignedByte(c[p]), a.writeUnsignedInt(l[p]);
      }
      a.writeUnsignedByte(s);
      a.writeUnsignedByte(m);
      this.hasFills = !0;
    };
    d.prototype.writeMorphGradient = function(a, l, c) {
      this._writeStyleMatrix(c, !0);
      c = this.morphStyles;
      for (var h = 0;h < a.length;h++) {
        c.writeUnsignedByte(l[h]), c.writeUnsignedInt(a[h]);
      }
    };
    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(r, l) {
      this.morphCoordinates = a(this.morphCoordinates, this.coordinatesPosition);
      this.morphCoordinates[this.coordinatesPosition - 2] = r;
      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 r(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(r, l) {
      this.commands = a(this.commands, this.commandsPosition + r);
      this.coordinates = a(this.coordinates, this.coordinatesPosition + l);
    };
    return d;
  }();
  d.ShapeData = v;
})(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_VIDEO_STREAM = 60] = "CODE_DEFINE_VIDEO_STREAM";
        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[a.CODE_VIDEO_FRAME = 61] = "CODE_VIDEO_FRAME";
      })(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, r, t, l) {
      this.url = d;
      this.method = r;
      this.mimeType = t;
      this.data = l;
    }
    a.prototype.readAll = function(a) {
      var d = this.url, t = new XMLHttpRequest({mozSystem:!0});
      t.open(this.method || "GET", this.url, !0);
      t.responseType = "arraybuffer";
      t.onreadystatechange = function(l) {
        4 === t.readyState && (200 !== t.status && 0 !== t.status || null === t.response ? (k("Path: " + d + " not found."), a(null, t.statusText)) : a(t.response));
      };
      this.mimeType && t.setRequestHeader("Content-Type", this.mimeType);
      t.send(this.data || null);
    };
    a.prototype.readChunked = function(a, d, t, l, c, h) {
      if (0 >= a) {
        this.readAsync(d, t, l, c, h);
      } else {
        var p = 0, s = new Uint8Array(a), m = 0, g;
        this.readAsync(function(f, b) {
          g = b.total;
          for (var e = f.length, c = 0;p + e >= a;) {
            var n = a - p;
            s.set(f.subarray(c, c + n), p);
            c += n;
            e -= n;
            m += a;
            d(s, {loaded:m, total:g});
            p = 0;
          }
          s.set(f.subarray(c), p);
          p += e;
        }, t, l, function() {
          0 < p && (m += p, d(s.subarray(0, p), {loaded:m, total:g}), p = 0);
          c && c();
        }, h);
      }
    };
    a.prototype.readAsync = function(a, d, t, l, c) {
      var h = new XMLHttpRequest({mozSystem:!0}), p = this.url, s = 0, m = 0;
      h.open(this.method || "GET", p, !0);
      h.responseType = "moz-chunked-arraybuffer";
      var g = "moz-chunked-arraybuffer" !== h.responseType;
      g && (h.responseType = "arraybuffer");
      h.onprogress = function(f) {
        g || (s = f.loaded, m = f.total, a(new Uint8Array(h.response), {loaded:s, total:m}));
      };
      h.onreadystatechange = function(f) {
        2 === h.readyState && c && c(p, h.status, h.getAllResponseHeaders());
        4 === h.readyState && (200 !== h.status && 0 !== h.status || null === h.response && (0 === m || s !== m) ? d(h.statusText) : (g && (f = h.response, a(new Uint8Array(f), {loaded:0, total:f.byteLength})), l && l()));
      };
      this.mimeType && h.setRequestHeader("Content-Type", this.mimeType);
      h.send(this.data || null);
      t && t();
    };
    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, h) {
          void 0 === h && (h = 1);
          return "rgba(" + a + "," + l + "," + c + "," + h + ")";
        };
        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) {
          this._buffers = d || [];
          this._snapshots = [];
          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.MAX_VALUE, d = Number.MIN_VALUE, l = 0;
          for (this._snapshots = [];0 < this._buffers.length;) {
            var c = this._buffers.shift().createSnapshot();
            c && (a > c.startTime && (a = c.startTime), d < c.endTime && (d = c.endTime), l < c.maxDepth && (l = c.maxDepth), this._snapshots.push(c));
          }
          this._startTime = a;
          this._endTime = d;
          this._windowStart = a;
          this._windowEnd = d;
          this._maxDepth = l;
        };
        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 r in k) {
    k.hasOwnProperty(r) && (d[r] = k[r]);
  }
  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, h, p, s) {
          this.parent = d;
          this.kind = l;
          this.startData = c;
          this.endData = h;
          this.startTime = p;
          this.endTime = s;
          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 h = this.children[l], a = a - (h.endTime - h.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), h = this._getNearestChildReverse(l);
            if (c <= h) {
              return a = this.children[c].startTime, l = this.children[h].endTime, {startIndex:c, endIndex:h, 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, h = 0, p = l.length - 1;p > h;) {
              c = (h + p) / 2 | 0;
              var s = l[c];
              if (a >= s.startTime && a <= s.endTime) {
                return c;
              }
              a > s.endTime ? h = c + 1 : p = c;
            }
            return Math.ceil((h + p) / 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 h, p = 0;c > p;) {
              h = Math.ceil((p + c) / 2);
              var s = l[h];
              if (a >= s.startTime && a <= s.endTime) {
                return h;
              }
              a > s.endTime ? p = h : c = h - 1;
            }
            return(p + 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, h = 0, p = l.length - 1;p > h;) {
              var s = (h + p) / 2 | 0;
              c = l[s];
              if (a >= c.startTime && a <= c.endTime) {
                return c.query(a);
              }
              a > c.endTime ? h = s + 1 : p = s;
            }
            c = l[p];
            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 h = l[c.kind.id] || (l[c.kind.id] = new d(c.kind));
              h.count++;
              h.selfTime += c.selfTime;
              h.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 r = function() {
        function r(a, t) {
          void 0 === a && (a = "");
          this.name = a || "";
          this._startTime = d.isNullOrUndefined(t) ? jsGlobal.START_TIME : t;
        }
        r.prototype.getKind = function(a) {
          return this._kinds[a];
        };
        Object.defineProperty(r.prototype, "kinds", {get:function() {
          return this._kinds.concat();
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(r.prototype, "depth", {get:function() {
          return this._depth;
        }, enumerable:!0, configurable:!0});
        r.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);
        };
        r.prototype._getKindId = function(a) {
          var d = r.MAX_KINDID;
          if (void 0 === this._kindNameMap[a]) {
            if (d = this._kinds.length, d < r.MAX_KINDID) {
              var l = {id:d, name:a, visible:!0};
              this._kinds.push(l);
              this._kindNameMap[a] = l;
            } else {
              d = r.MAX_KINDID;
            }
          } else {
            d = this._kindNameMap[a].id;
          }
          return d;
        };
        r.prototype._getMark = function(a, t, l) {
          var c = r.MAX_DATAID;
          d.isNullOrUndefined(l) || t === r.MAX_KINDID || (c = this._data.length, c < r.MAX_DATAID ? this._data.push(l) : c = r.MAX_DATAID);
          return a | c << 16 | t;
        };
        r.prototype.enter = function(a, t, 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(r.ENTER, a, t));
          this._times.write(l);
          this._stack.push(a);
        };
        r.prototype.leave = function(a, t, 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(r.LEAVE, c, t));
          this._times.write(l);
          this._depth--;
        };
        r.prototype.count = function(a, d, l) {
        };
        r.prototype.createSnapshot = function() {
          var u;
          void 0 === u && (u = Number.MAX_VALUE);
          if (!this._marks) {
            return null;
          }
          var t = this._times, l = this._kinds, c = this._data, h = new a.TimelineBufferSnapshot(this.name), p = [h], s = 0;
          this._marks || this._initialize();
          this._marks.forEachInReverse(function(m, g) {
            var f = c[m >>> 16 & r.MAX_DATAID], b = l[m & r.MAX_KINDID];
            if (d.isNullOrUndefined(b) || b.visible) {
              var e = m & 2147483648, q = t.get(g), n = p.length;
              if (e === r.LEAVE) {
                if (1 === n && (s++, s > u)) {
                  return!0;
                }
                p.push(new a.TimelineFrame(p[n - 1], b, null, f, NaN, q));
              } else {
                if (e === r.ENTER) {
                  if (b = p.pop(), e = p[p.length - 1]) {
                    for (e.children ? e.children.unshift(b) : e.children = [b], e = p.length, b.depth = e, b.startData = f, b.startTime = q;b;) {
                      if (b.maxDepth < e) {
                        b.maxDepth = e, b = b.parent;
                      } else {
                        break;
                      }
                    }
                  } else {
                    return!0;
                  }
                }
              }
            }
          });
          h.children && h.children.length && (h.startTime = h.children[0].startTime, h.endTime = h.children[h.children.length - 1].endTime);
          return h;
        };
        r.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();
        };
        r.FromFirefoxProfile = function(a, d) {
          for (var l = a.profile.threads[0].samples, c = new r(d, l[0].time), h = [], p, s = 0;s < l.length;s++) {
            p = l[s];
            var m = p.time, g = p.frames, f = 0;
            for (p = Math.min(g.length, h.length);f < p && g[f].location === h[f].location;) {
              f++;
            }
            for (var b = h.length - f, e = 0;e < b;e++) {
              p = h.pop(), c.leave(p.location, null, m);
            }
            for (;f < g.length;) {
              p = g[f++], c.enter(p.location, null, m);
            }
            h = g;
          }
          for (;p = h.pop();) {
            c.leave(p.location, null, m);
          }
          return c;
        };
        r.FromChromeProfile = function(a, d) {
          var l = a.timestamps, c = a.samples, h = new r(d, l[0] / 1E3), p = [], s = {}, m;
          r._resolveIds(a.head, s);
          for (var g = 0;g < l.length;g++) {
            var f = l[g] / 1E3, b = [];
            for (m = s[c[g]];m;) {
              b.unshift(m), m = m.parent;
            }
            var e = 0;
            for (m = Math.min(b.length, p.length);e < m && b[e] === p[e];) {
              e++;
            }
            for (var q = p.length - e, n = 0;n < q;n++) {
              m = p.pop(), h.leave(m.functionName, null, f);
            }
            for (;e < b.length;) {
              m = b[e++], h.enter(m.functionName, null, f);
            }
            p = b;
          }
          for (;m = p.pop();) {
            h.leave(m.functionName, null, f);
          }
          return h;
        };
        r._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, r._resolveIds(a.children[l], d);
            }
          }
        };
        r.ENTER = 0;
        r.LEAVE = -2147483648;
        r.MAX_KINDID = 65535;
        r.MAX_DATAID = 32767;
        return r;
      }();
      a.TimelineBuffer = r;
    })(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 r = function() {
        function r(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();
        }
        r.prototype.createProfile = function(d, r) {
          void 0 === r && (r = !0);
          var l = new a.Profile(d);
          l.createSnapshots();
          this._profiles.push(l);
          r && this.activateProfile(l);
          return l;
        };
        r.prototype.activateProfile = function(a) {
          this.deactivateProfile();
          this._activeProfile = a;
          this._createViews();
          this._initializeViews();
        };
        r.prototype.activateProfileAt = function(a) {
          this.activateProfile(this.getProfileAt(a));
        };
        r.prototype.deactivateProfile = function() {
          this._activeProfile && (this._destroyViews(), this._activeProfile = null);
        };
        r.prototype.resize = function() {
          this._onResize();
        };
        r.prototype.getProfileAt = function(a) {
          return this._profiles[a];
        };
        Object.defineProperty(r.prototype, "activeProfile", {get:function() {
          return this._activeProfile;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(r.prototype, "profileCount", {get:function() {
          return this._profiles.length;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(r.prototype, "container", {get:function() {
          return this._container;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(r.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(r.prototype, "theme", {get:function() {
          return this._theme;
        }, enumerable:!0, configurable:!0});
        r.prototype.getSnapshotAt = function(a) {
          return this._activeProfile.getSnapshotAt(a);
        };
        r.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(r, l) {
              d._headers.push(new a.FlameChartHeader(d, 1));
              d._charts.push(new a.FlameChart(d, r));
            });
            window.addEventListener("resize", this._onResize.bind(this));
          }
        };
        r.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));
          }
        };
        r.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, h) {
              a._headers[h].initialize(d, l);
              a._charts[h].initialize(d, l);
            });
          }
        };
        r.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);
            });
          }
        };
        r.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, h) {
              a._headers[h].setWindow(d, l);
              a._charts[h].setWindow(d, l);
            });
          }
        };
        r.prototype._drawViews = function() {
        };
        r.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;
        };
        r.prototype.setWindow = function(a, d) {
          this._activeProfile.setWindow(a, d);
          this._updateViews();
        };
        r.prototype.moveWindowTo = function(a) {
          this._activeProfile.moveWindowTo(a);
          this._updateViews();
        };
        r.prototype.showTooltip = function(a, d, l, c) {
          this.removeTooltipContent();
          this._tooltip.appendChild(this.createTooltipContent(a, d));
          this._tooltip.style.display = "block";
          var h = this._tooltip.firstChild;
          d = h.clientWidth;
          h = h.clientHeight;
          l += l + d >= a.canvas.clientWidth - 50 ? -(d + 20) : 25;
          c += a.canvas.offsetTop - h / 2;
          this._tooltip.style.left = l + "px";
          this._tooltip.style.top = c + "px";
        };
        r.prototype.hideTooltip = function() {
          this._tooltip.style.display = "none";
        };
        r.prototype.createTooltipContent = function(a, d) {
          var l = Math.round(1E5 * d.totalTime) / 1E5, c = Math.round(1E5 * d.selfTime) / 1E5, h = Math.round(1E4 * d.selfTime / d.totalTime) / 100, p = document.createElement("div"), s = document.createElement("h1");
          s.textContent = d.kind.name;
          p.appendChild(s);
          s = document.createElement("p");
          s.textContent = "Total: " + l + " ms";
          p.appendChild(s);
          l = document.createElement("p");
          l.textContent = "Self: " + c + " ms (" + h + "%)";
          p.appendChild(l);
          if (c = a.getStatistics(d.kind)) {
            h = document.createElement("p"), h.textContent = "Count: " + c.count, p.appendChild(h), h = Math.round(1E5 * c.totalTime) / 1E5, l = document.createElement("p"), l.textContent = "All Total: " + h + " ms", p.appendChild(l), c = Math.round(1E5 * c.selfTime) / 1E5, h = document.createElement("p"), h.textContent = "All Self: " + c + " ms", p.appendChild(h);
          }
          this.appendDataElements(p, d.startData);
          this.appendDataElements(p, d.endData);
          return p;
        };
        r.prototype.appendDataElements = function(a, r) {
          if (!d.isNullOrUndefined(r)) {
            a.appendChild(document.createElement("hr"));
            var l;
            if (d.isObject(r)) {
              for (var c in r) {
                l = document.createElement("p"), l.textContent = c + ": " + r[c], a.appendChild(l);
              }
            } else {
              l = document.createElement("p"), l.textContent = r.toString(), a.appendChild(l);
            }
          }
        };
        r.prototype.removeTooltipContent = function() {
          for (var a = this._tooltip;a.firstChild;) {
            a.removeChild(a.firstChild);
          }
        };
        return r;
      }();
      a.Controller = r;
    })(k.Profiler || (k.Profiler = {}));
  })(d.Tools || (d.Tools = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var r = 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 u = 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 h = {x:a.x - c.start.x, y:a.y - c.start.y};
          c.current = a;
          c.delta = h;
          c.hasMoved = !0;
          this._target.onDrag(c.start.x, c.start.y, a.x, a.y, h.x, h.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 = r("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 h = c.getBoundingClientRect();
          return{x:a.clientX - h.left, y:a.clientY - h.top};
        };
        a.HOVER_TIMEOUT = 500;
        a._cursor = k.DEFAULT;
        return a;
      }();
      a.MouseController = u;
    })(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(r) {
          this._controller = r;
          this._initialized = !1;
          this._canvas = document.createElement("canvas");
          this._context = this._canvas.getContext("2d");
          this._mouseController = new a.MouseController(this, this._canvas);
          r = r.container;
          r.appendChild(this._canvas);
          r = r.getBoundingClientRect();
          this.setSize(r.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, r, l) {
          a = this._toTime(a);
          r = this._windowStart;
          var c = this._windowEnd, h = c - r;
          l = Math.max((d.MIN_WINDOW_LEN - h) / h, l);
          this._controller.setWindow(r + (r - 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, h, p) {
        };
        d.prototype.onDragEnd = function(a, d, l, c, h, p) {
        };
        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 r = d.StringUtilities.trimMiddle, k = function(k) {
        function t(a, c) {
          k.call(this, a);
          this._textWidth = {};
          this._minFrameWidthInPixels = 1;
          this._snapshot = c;
          this._kindStyle = Object.create(null);
        }
        __extends(t, k);
        t.prototype.setSize = function(a, c) {
          k.prototype.setSize.call(this, a, c || this._initialized ? 12.5 * this._maxDepth : 100);
        };
        t.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);
        };
        t.prototype.destroy = function() {
          k.prototype.destroy.call(this);
          this._snapshot = null;
        };
        t.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();
        };
        t.prototype._drawChildren = function(a, c) {
          void 0 === c && (c = 0);
          var h = a.getChildRange(this._windowStart, this._windowEnd);
          if (h) {
            for (var p = h.startIndex;p <= h.endIndex;p++) {
              var s = a.children[p];
              this._drawFrame(s, c) && this._drawChildren(s, c + 1);
            }
          }
        };
        t.prototype._drawFrame = function(a, c) {
          var h = this._context, p = this._toPixels(a.startTime), s = this._toPixels(a.endTime), m = s - p;
          if (m <= this._minFrameWidthInPixels) {
            return h.fillStyle = this._controller.theme.tabToolbar(1), h.fillRect(p, 12.5 * c, this._minFrameWidthInPixels, 12 + 12.5 * (a.maxDepth - a.depth)), !1;
          }
          0 > p && (s = m + p, p = 0);
          var s = s - p, g = this._kindStyle[a.kind.id];
          g || (g = d.ColorStyle.randomStyle(), g = this._kindStyle[a.kind.id] = {bgColor:g, textColor:d.ColorStyle.contrastStyle(g)});
          h.save();
          h.fillStyle = g.bgColor;
          h.fillRect(p, 12.5 * c, s, 12);
          12 < m && (m = a.kind.name) && m.length && (m = this._prepareText(h, m, s - 4), m.length && (h.fillStyle = g.textColor, h.textBaseline = "bottom", h.fillText(m, p + 2, 12.5 * (c + 1) - 1)));
          h.restore();
          return!0;
        };
        t.prototype._prepareText = function(a, c, h) {
          var p = this._measureWidth(a, c);
          if (h > p) {
            return c;
          }
          for (var p = 3, s = c.length;p < s;) {
            var m = p + s >> 1;
            this._measureWidth(a, r(c, m)) < h ? p = m + 1 : s = m;
          }
          c = r(c, s - 1);
          p = this._measureWidth(a, c);
          return p <= h ? c : "";
        };
        t.prototype._measureWidth = function(a, c) {
          var h = this._textWidth[c];
          h || (h = a.measureText(c).width, this._textWidth[c] = h);
          return h;
        };
        t.prototype._toPixelsRelative = function(a) {
          return a * this._width / (this._windowEnd - this._windowStart);
        };
        t.prototype._toPixels = function(a) {
          return this._toPixelsRelative(a - this._windowStart);
        };
        t.prototype._toTimeRelative = function(a) {
          return a * (this._windowEnd - this._windowStart) / this._width;
        };
        t.prototype._toTime = function(a) {
          return this._toTimeRelative(a) + this._windowStart;
        };
        t.prototype._getFrameAtPosition = function(a, c) {
          var h = 1 + c / 12.5 | 0, p = this._snapshot.query(this._toTime(a));
          if (p && p.depth >= h) {
            for (;p && p.depth > h;) {
              p = p.parent;
            }
            return p;
          }
          return null;
        };
        t.prototype.onMouseDown = function(l, c) {
          this._windowEqRange() || (this._mouseController.updateCursor(a.MouseCursor.ALL_SCROLL), this._dragInfo = {windowStartInitial:this._windowStart, windowEndInitial:this._windowEnd, target:1});
        };
        t.prototype.onMouseMove = function(a, c) {
        };
        t.prototype.onMouseOver = function(a, c) {
        };
        t.prototype.onMouseOut = function() {
        };
        t.prototype.onDrag = function(a, c, h, p, s, m) {
          if (a = this._dragInfo) {
            s = this._toTimeRelative(-s), this._controller.setWindow(a.windowStartInitial + s, a.windowEndInitial + s);
          }
        };
        t.prototype.onDragEnd = function(l, c, h, p, s, m) {
          this._dragInfo = null;
          this._mouseController.updateCursor(a.MouseCursor.DEFAULT);
        };
        t.prototype.onClick = function(l, c) {
          this._dragInfo = null;
          this._mouseController.updateCursor(a.MouseCursor.DEFAULT);
        };
        t.prototype.onHoverStart = function(a, c) {
          var h = this._getFrameAtPosition(a, c);
          h && (this._hoveredFrame = h, this._controller.showTooltip(this, h, a, c));
        };
        t.prototype.onHoverEnd = function() {
          this._hoveredFrame && (this._hoveredFrame = null, this._controller.hideTooltip());
        };
        t.prototype.getStatistics = function(a) {
          var c = this._snapshot;
          c.statistics || c.calculateStatistics();
          return c.statistics[a.id];
        };
        return t;
      }(a.FlameChartBase);
      a.FlameChart = k;
    })(k.Profiler || (k.Profiler = {}));
  })(d.Tools || (d.Tools = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var r = 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, h = this._width, p = this._height;
          a.save();
          a.scale(c, c);
          a.fillStyle = this._controller.theme.bodyBackground(1);
          a.fillRect(0, 0, h, p);
          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, h = window.devicePixelRatio, p = this._selection ? this._selection.left : this._toPixels(this._windowStart), s = this._selection ? this._selection.right : this._toPixels(this._windowEnd), m = this._controller.theme;
          a.save();
          a.scale(h, h);
          this._selection ? (a.fillStyle = m.selectionText(.15), a.fillRect(p, 1, s - p, c - 1), a.fillStyle = "rgba(133, 0, 0, 1)", a.fillRect(p + .5, 0, s - p - 1, 4), a.fillRect(p + .5, c - 4, s - p - 1, 4)) : (a.fillStyle = m.bodyBackground(.4), a.fillRect(0, 1, p, c - 1), a.fillRect(s, 1, this._width, c - 1));
          a.beginPath();
          a.moveTo(p, 0);
          a.lineTo(p, c);
          a.moveTo(s, 0);
          a.lineTo(s, 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(p, s) - 4, 10);
          a.fillText((c / 60).toFixed(2), Math.min(p, s) - 4, 20);
          a.restore();
        };
        k.prototype._drawChart = function() {
          var a = window.devicePixelRatio, c = this._height, h = this._controller.activeProfile, p = 4 * this._width, s = h.totalTime / p, m = this._overviewContext, g = this._controller.theme.blueHighlight(1);
          m.save();
          m.translate(0, a * c);
          var f = -a * c / (h.maxDepth - 1);
          m.scale(a / 4, f);
          m.clearRect(0, 0, p, h.maxDepth - 1);
          1 == this._mode && m.scale(1, 1 / h.snapshotCount);
          for (var b = 0, e = h.snapshotCount;b < e;b++) {
            var q = h.getSnapshotAt(b);
            if (q) {
              var n = null, x = 0;
              m.beginPath();
              m.moveTo(0, 0);
              for (var d = 0;d < p;d++) {
                x = h.startTime + d * s, x = (n = n ? n.queryNext(x) : q.query(x)) ? n.getDepth() - 1 : 0, m.lineTo(d, x);
              }
              m.lineTo(d, 0);
              m.fillStyle = g;
              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 h = this._toPixels(this._windowStart), p = this._toPixels(this._windowEnd), s = 2 + a.FlameChartBase.DRAGHANDLE_WIDTH / 2, m = l >= h - s && l <= h + s, g = l >= p - s && l <= p + s;
            if (m && g) {
              return 4;
            }
            if (m) {
              return 2;
            }
            if (g) {
              return 3;
            }
            if (!this._windowEqRange() && l > h + s && l < p - s) {
              return 1;
            }
          }
          return 0;
        };
        k.prototype.onMouseDown = function(l, c) {
          var h = this._getDragTargetUnderCursor(l, c);
          0 === h ? (this._selection = {left:l, right:l}, this.draw()) : (1 === h && this._mouseController.updateCursor(a.MouseCursor.GRABBING), this._dragInfo = {windowStartInitial:this._windowStart, windowEndInitial:this._windowEnd, target:h});
        };
        k.prototype.onMouseMove = function(l, c) {
          var h = a.MouseCursor.DEFAULT, p = this._getDragTargetUnderCursor(l, c);
          0 === p || this._selection || (h = 1 === p ? a.MouseCursor.GRAB : a.MouseCursor.EW_RESIZE);
          this._mouseController.updateCursor(h);
        };
        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, h, p, s, m) {
          if (this._selection) {
            this._selection = {left:l, right:r(h, 0, this._width - 1)}, this.draw();
          } else {
            l = this._dragInfo;
            if (4 === l.target) {
              if (0 !== s) {
                l.target = 0 > s ? 2 : 3;
              } else {
                return;
              }
            }
            c = this._windowStart;
            h = this._windowEnd;
            s = this._toTimeRelative(s);
            switch(l.target) {
              case 1:
                c = l.windowStartInitial + s;
                h = l.windowEndInitial + s;
                break;
              case 2:
                c = r(l.windowStartInitial + s, this._rangeStart, h - a.FlameChartBase.MIN_WINDOW_LEN);
                break;
              case 3:
                h = r(l.windowEndInitial + s, c + a.FlameChartBase.MIN_WINDOW_LEN, this._rangeEnd);
                break;
              default:
                return;
            }
            this._controller.setWindow(c, h);
          }
        };
        k.prototype.onDragEnd = function(a, c, h, p, s, m) {
          this._selection && (this._selection = null, this._controller.setWindow(this._toTime(a), this._toTime(h)));
          this._dragInfo = null;
          this.onMouseMove(h, p);
        };
        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 r = 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, h = this._width, p = this._height;
          a.save();
          a.scale(c, c);
          a.fillStyle = this._controller.theme.tabToolbar(1);
          a.fillRect(0, 0, h, p);
          this._initialized && (0 == this._type ? (c = this._toPixels(this._windowStart), h = this._toPixels(this._windowEnd), a.fillStyle = this._controller.theme.bodyBackground(1), a.fillRect(c, 0, h - c, p), this._drawLabels(this._rangeStart, this._rangeEnd), this._drawDragHandle(c), this._drawDragHandle(h)) : this._drawLabels(this._windowStart, this._windowEnd));
          a.restore();
        };
        k.prototype._drawLabels = function(a, c) {
          var h = this._context, p = this._calculateTickInterval(a, c), s = Math.ceil(a / p) * p, m = 500 <= p, g = m ? 1E3 : 1, f = this._decimalPlaces(p / g), m = m ? "s" : "ms", b = this._toPixels(s), e = this._height / 2, q = this._controller.theme;
          h.lineWidth = 1;
          h.strokeStyle = q.contentTextDarkGrey(.5);
          h.fillStyle = q.contentTextDarkGrey(1);
          h.textAlign = "right";
          h.textBaseline = "middle";
          h.font = "11px sans-serif";
          for (q = this._width + k.TICK_MAX_WIDTH;b < q;) {
            h.fillText((s / g).toFixed(f) + " " + m, b - 7, e + 1), h.beginPath(), h.moveTo(b, 0), h.lineTo(b, this._height + 1), h.closePath(), h.stroke(), s += p, b = this._toPixels(s);
          }
        };
        k.prototype._calculateTickInterval = function(a, c) {
          var h = (c - a) / (this._width / k.TICK_MAX_WIDTH), p = Math.pow(10, Math.floor(Math.log(h) / Math.LN10)), h = h / p;
          return 5 < h ? 10 * p : 2 < h ? 5 * p : 1 < h ? 2 * p : p;
        };
        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, h, p) {
          var s, m = !0;
          void 0 === m && (m = !0);
          void 0 === s && (s = !0);
          a.beginPath();
          a.moveTo(c + 2, 1);
          a.lineTo(c + h - 2, 1);
          a.quadraticCurveTo(c + h, 1, c + h, 3);
          a.lineTo(c + h, 1 + p - 2);
          a.quadraticCurveTo(c + h, 1 + p, c + h - 2, 1 + p);
          a.lineTo(c + 2, 1 + p);
          a.quadraticCurveTo(c, 1 + p, c, 1 + p - 2);
          a.lineTo(c, 3);
          a.quadraticCurveTo(c, 1, c + 2, 1);
          a.closePath();
          m && a.stroke();
          s && 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 h = this._toPixels(this._windowStart), p = this._toPixels(this._windowEnd), s = 2 + a.FlameChartBase.DRAGHANDLE_WIDTH / 2, h = l >= h - s && l <= h + s, p = l >= p - s && l <= p + s;
              if (h && p) {
                return 4;
              }
              if (h) {
                return 2;
              }
              if (p) {
                return 3;
              }
            }
            if (!this._windowEqRange()) {
              return 1;
            }
          }
          return 0;
        };
        k.prototype.onMouseDown = function(l, c) {
          var h = this._getDragTargetUnderCursor(l, c);
          1 === h && this._mouseController.updateCursor(a.MouseCursor.GRABBING);
          this._dragInfo = {windowStartInitial:this._windowStart, windowEndInitial:this._windowEnd, target:h};
        };
        k.prototype.onMouseMove = function(l, c) {
          var h = a.MouseCursor.DEFAULT, p = this._getDragTargetUnderCursor(l, c);
          0 !== p && (1 !== p ? h = a.MouseCursor.EW_RESIZE : 1 !== p || this._windowEqRange() || (h = a.MouseCursor.GRAB));
          this._mouseController.updateCursor(h);
        };
        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, h, p, s, m) {
          l = this._dragInfo;
          if (4 === l.target) {
            if (0 !== s) {
              l.target = 0 > s ? 2 : 3;
            } else {
              return;
            }
          }
          c = this._windowStart;
          h = this._windowEnd;
          s = this._toTimeRelative(s);
          switch(l.target) {
            case 1:
              h = 0 === this._type ? 1 : -1;
              c = l.windowStartInitial + h * s;
              h = l.windowEndInitial + h * s;
              break;
            case 2:
              c = r(l.windowStartInitial + s, this._rangeStart, h - a.FlameChartBase.MIN_WINDOW_LEN);
              break;
            case 3:
              h = r(l.windowEndInitial + s, c + a.FlameChartBase.MIN_WINDOW_LEN, this._rangeEnd);
              break;
            default:
              return;
          }
          this._controller.setWindow(c, h);
        };
        k.prototype.onDragEnd = function(a, c, h, p, s, m) {
          this._dragInfo = null;
          this.onMouseMove(h, p);
        };
        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, h, p, s) {
            this.pageLoaded = l;
            this.threadsTotal = c;
            this.threadsLoaded = h;
            this.threadFilesTotal = p;
            this.threadFilesLoaded = s;
          }
          a.prototype.toString = function() {
            return "[" + ["pageLoaded", "threadsTotal", "threadsLoaded", "threadFilesTotal", "threadFilesLoaded"].map(function(a, c, h) {
              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, h) {
            this._threads = [];
            this._pageLoadCallback = c;
            this._pageLoadProgressCallback = h;
            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, h = this._threads.length;c < h;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, h = 0;
              l = l[0];
              var p = l.length;
              this._threads = Array(p);
              this._progressInfo.pageLoaded = !0;
              this._progressInfo.threadsTotal = p;
              for (var s = 0;s < l.length;s++) {
                var m = l[s], g = [m.dict, m.tree];
                m.corrections && g.push(m.corrections);
                this._progressInfo.threadFilesTotal += g.length;
                this._loadData(g, function(f) {
                  return function(b) {
                    b && (b = new a.Thread(b), b.buffer.name = "Thread " + f, c._threads[f] = b);
                    h++;
                    c._progressInfo.threadsLoaded++;
                    c._onProgress();
                    h === p && c._pageLoadCallback.call(c, null, c._threads);
                  };
                }(s), function(f) {
                  c._progressInfo.threadFilesLoaded++;
                  c._onProgress();
                });
              }
              this._onProgress();
            } else {
              this._pageLoadCallback.call(this, "Error loading page.", null);
            }
          };
          k.prototype._loadData = function(a, c, h) {
            var p = 0, s = 0, m = a.length, g = [];
            g.length = m;
            for (var f = 0;f < m;f++) {
              var b = this._baseUrl + a[f], e = new XMLHttpRequest, q = /\.tl$/i.test(b) ? "arraybuffer" : "json";
              e.open("GET", b, !0);
              e.responseType = q;
              e.onload = function(b, e) {
                return function(f) {
                  if ("json" === e) {
                    if (f = this.response, "string" === typeof f) {
                      try {
                        f = JSON.parse(f), g[b] = f;
                      } catch (a) {
                        s++;
                      }
                    } else {
                      g[b] = f;
                    }
                  } else {
                    g[b] = this.response;
                  }
                  ++p;
                  h && h(p);
                  p === m && c(g);
                };
              }(f, q);
              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(r) {
            2 <= r.length && (this._text = r[0], this._data = new DataView(r[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 h = a * d.ITEM_SIZE, p = 4294967295 * l.getUint32(h + 0) + l.getUint32(h + 4), s = 4294967295 * l.getUint32(h + 8) + l.getUint32(h + 12), m = l.getUint32(h + 16), h = l.getUint32(h + 20), g = 1 === (m & 1), m = m >>> 1, m = this._text[m];
              c.enter(m, null, p / 1E6);
              g && this._walkTree(a + 1);
              c.leave(m, null, s / 1E6);
              a = h;
            } 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 r = 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 h = this.lines;
          0 < h.length && h[h.length - 1] === a ? this.repeat[h.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 u = 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 n:
                this.showLineNumbers = !this.showLineNumbers;
                break;
              case x:
                this.showLineTime = !this.showLineTime;
                break;
              case m:
                l = -1;
                break;
              case g:
                l = 1;
                break;
              case c:
                l = -this.pageLineCount;
                break;
              case h:
                l = this.pageLineCount;
                break;
              case p:
                l = -this.lineIndex;
                break;
              case s:
                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 q:
                if (a.metaKey) {
                  var d = "";
                  if (this.selection) {
                    for (var r = this.selection.start;r <= this.selection.end;r++) {
                      d += this.buffer.get(r) + "\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, h = 34, p = 36, s = 35, m = 38, g = 40, f = 37, b = 39, e = 65, q = 67, n = 78, x = 84;
        }
        a.prototype.resize = function() {
          this._resizeHandler();
        };
        a.prototype._resizeHandler = function() {
          var a = this.canvas.parentElement, c = a.clientWidth, a = a.clientHeight - 1, h = window.devicePixelRatio || 1;
          1 !== h ? (this.ratio = h / 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 = r(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, h = c + (this.showLineNumbers ? 5 * (String(this.buffer.length).length + 2) : 0), p = h + (this.showLineTime ? 40 : 10), s = p + 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, g = this.lineHeight, f = 0;f < a;f++) {
            var b = f * this.lineHeight, e = this.pageIndex + f, q = this.buffer.get(e), n = this.buffer.getFormat(e), x = 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;
            n && n.backgroundFillStyle && (this.context.fillStyle = n.backgroundFillStyle);
            this.context.fillRect(0, b, m, g);
            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, g), this.context.fillStyle = this.selectionTextColor);
            this.hasFocus && e === this.lineIndex && (this.context.fillStyle = this.selectionColor, this.context.fillRect(0, b, m, g), this.context.fillStyle = this.selectionTextColor);
            0 < this.columnIndex && (q = q.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), h, b);
            1 < x && this.context.fillText(String(x).padLeft(" ", 3), p, b);
            this.context.fillText(q, s, b);
          }
        };
        a.prototype.refreshEvery = function(a) {
          function c() {
            h.paint();
            h.refreshFrequency && setTimeout(c, h.refreshFrequency);
          }
          var h = this;
          this.refreshFrequency = a;
          h.refreshFrequency && setTimeout(c, h.refreshFrequency);
        };
        a.prototype.isScrolledToBottom = function() {
          return this.lineIndex === this.buffer.length - 1;
        };
        return a;
      }();
      a.Terminal = u;
    })(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, h = 2 * this._ratio, p = 30 * this._ratio, s = performance;
            s.memory && (p += 30 * this._ratio);
            var m = (this._canvas.width - p) / (h + 1) | 0, g = this._index++;
            this._index > m && (this._index = 0);
            m = this._canvas.height;
            c.globalAlpha = 1;
            c.fillStyle = "black";
            c.fillRect(p + g * (h + 1), 0, 4 * h, 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(p + g * (h + 1), m - f, h, f);
            d && (f = Math.min(1E3 / 240 / d, 1), c.fillStyle = "#FF6347", f = m / 2 * f | 0, c.fillRect(p + g * (h + 1), m / 2 - f, h, f));
            0 === g % 16 && (c.globalAlpha = 1, c.fillStyle = "black", c.fillRect(0, 0, p, this._canvas.height), c.fillStyle = "white", c.font = 8 * this._ratio + "px Arial", c.textBaseline = "middle", h = (1E3 / l).toFixed(0), d && (h += " " + d.toFixed(0)), s.memory && (h += " " + (s.memory.usedJSHeapSize / 1024 / 1024).toFixed(2)), c.fillText(h, 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 = [], k = 1;k < arguments.length;k++) {
        d[k - 1] = arguments[k];
      }
      var t = a.message;
      d.forEach(function(a, c) {
        t = t.replace("%" + (c + 1), a);
      });
      return "Error #" + a.code + ": " + t;
    }
    k.Errors = {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."}, 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"}, 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."}};
    k.getErrorMessage = function(a) {
      if (!d.AVM2.Runtime.debuggerMode.value) {
        return "Error #" + a;
      }
      for (var v in k.Errors) {
        if (k.Errors[v].code == a) {
          return "Error #" + a + ": " + k.Errors[v].message;
        }
      }
      return "Error #" + a + ": (unknown)";
    };
    k.formatErrorMessage = a;
    k.translateErrorMessage = function(r) {
      if (r.type) {
        switch(r.type) {
          case "undefined_method":
            return a(k.Errors.CallOfNonFunctionError, "value");
          default:
            throw d.Debug.notImplemented(r.type);;
        }
      } else {
        return 0 <= r.message.indexOf("is not a function") ? a(k.Errors.CallOfNonFunctionError, "value") : r.message;
      }
    };
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
Errors = Shumway.AVM2.Errors;
(function(d) {
  (function(k) {
    (function(a) {
      var r = null;
      "undefined" !== typeof TextDecoder && (r = 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 (r) {
            var l = this._position;
            this._position += k;
            return r.decode(this._bytes.subarray(l, l + k));
          }
          var l = this._position, c = l + k, h = this._bytes, p = 0;
          for (k = a._getResultBuffer(2 * k);l < c;) {
            var s = h[l++];
            if (127 >= s) {
              k[p++] = s;
            } else {
              if (192 <= s) {
                var m = 0;
                224 > s ? m = (s & 31) << 6 | h[l++] & 63 : 240 > s ? m = (s & 15) << 12 | (h[l++] & 63) << 6 | h[l++] & 63 : (m = ((s & 7) << 18 | (h[l++] & 63) << 12 | (h[l++] & 63) << 6 | h[l++] & 63) - 65536, k[p++] = ((m & 1047552) >>> 10) + 55296, m = (m & 1023) + 56320);
                k[p++] = m;
              }
            }
          }
          this._position = l;
          return d.StringUtilities.fromCharCodeArray(k.subarray(0, p));
        };
        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 r in k) {
    k.hasOwnProperty(r) && (d[r] = k[r]);
  }
  a.prototype = k.prototype;
  d.prototype = new a;
};
(function(d) {
  (function(k) {
    (function(a) {
      var r = d.isNumeric, v = d.isObject, u = d.Debug.notImplemented, t = function() {
        return function(b, e, a, f) {
          this.name = b;
          this.type = e;
          this.value = a;
          this.optional = f;
        };
      }();
      a.Parameter = t;
      var l = function() {
        function e(b, a, f) {
          var n = b.constantPool, c = b.methods, q = b.classes, s = b.metadata;
          this.holder = f;
          this.name = n.multinames[a.readU30()];
          f = a.readU8();
          this.kind = f & 15;
          this.attributes = f >> 4 & 15;
          switch(this.kind) {
            case 0:
            ;
            case 6:
              this.slotId = a.readU30();
              this.typeName = n.multinames[a.readU30()];
              b = a.readU30();
              this.value = void 0;
              0 !== b && (this.hasDefaultValue = !0, this.value = n.getValue(a.readU8(), b));
              break;
            case 1:
            ;
            case 3:
            ;
            case 2:
              this.dispId = a.readU30();
              this.methodInfo = c[a.readU30()];
              this.methodInfo.name = this.name;
              g.attachHolder(this.methodInfo, this.holder);
              this.methodInfo.abc = b;
              break;
            case 4:
              this.slotId = a.readU30(), this.classInfo = q[a.readU30()];
          }
          if (this.attributes & 4) {
            var p, n = 0;
            for (b = a.readU30();n < b;n++) {
              c = s[a.readU30()], "__go_to_definition_help" !== c.name && "__go_to_ctor_definition_help" !== c.name && (p || (p = {}), p[c.name] = c);
            }
            p && (this.isClass() && (this.classInfo.metadata = p), this.metadata = p);
          }
        }
        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 g = a.readU30(), c = [], q = 0;q < g;q++) {
            c.push(new e(b, a, f));
          }
          return c;
        };
        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 h = function(b) {
        function e(a, f, g) {
          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.cachedMemoizer = this.cachedMethodOrTrampoline = this.freeMethod = this.exceptions = this.code = null;
          a = a.constantPool;
          f = g.readU30();
          this.returnType = a.multinames[g.readU30()];
          this.parameters = [];
          for (var c = 0;c < f;c++) {
            this.parameters.push(new t(void 0, a.multinames[g.readU30()], void 0, !1));
          }
          g.readU30();
          this.flags = g.readU8();
          if (this.flags & 8) {
            for (c = g.readU30(), c = f - c;c < f;c++) {
              var q = g.readU30();
              this.parameters[c].value = a.getValue(g.readU8(), q);
              this.parameters[c].optional = !0;
            }
          }
          if (this.flags & 128) {
            for (c = 0;c < f;c++) {
              e.parseParameterNames ? this.parameters[c].name = a.strings[g.readU30()] : (g.readU30(), this.parameters[c].name = e._getParameterName(c));
            }
          } else {
            for (c = 0;c < f;c++) {
              this.parameters[c].name = e._getParameterName(c);
            }
          }
        }
        __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});
        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 s;
        };
        e.prototype.isInstanceMember = function() {
          return this.holder instanceof p;
        };
        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;
          return{start:e.readU30(), end:e.readU30(), target:e.readU30(), typeName:a[e.readU30()], varName:a[e.readU30()]};
        };
        e.parseBody = function(b, a) {
          var f = b.methods, n = a.readU30(), f = f[n];
          f.index = n;
          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 n = [], g = a.readU30(), c = 0;c < g;++c) {
            n.push(e.parseException(b, a));
          }
          f.exceptions = n;
          f.traits = l.parseTraits(b, a, f);
        };
        e.prototype.hasExceptions = function() {
          return 0 < this.exceptions.length;
        };
        e.parseParameterNames = !1;
        return e;
      }(c);
      a.MethodInfo = h;
      var p = function(b) {
        function e(a, f, c) {
          b.call(this, a, f, 65536);
          this.runtimeId = e.nextID++;
          f = a.constantPool;
          var q = a.methods;
          this.name = f.multinames[c.readU30()];
          this.superName = f.multinames[c.readU30()];
          this.flags = c.readU8();
          this.protectedNs = void 0;
          this.flags & 8 && (this.protectedNs = f.namespaces[c.readU30()]);
          var s = c.readU30();
          this.interfaces = [];
          for (var p = 0;p < s;p++) {
            this.interfaces[p] = f.multinames[c.readU30()];
          }
          this.init = q[c.readU30()];
          this.init.isInstanceInitializer = !0;
          this.init.name = this.name;
          g.attachHolder(this.init, this);
          this.traits = l.parseTraits(a, c, 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 = p;
      (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 s = function(e) {
        function a(b, f, c) {
          e.call(this, b, f, 0);
          this.runtimeId = a.nextID++;
          this.init = b.methods[c.readU30()];
          this.init.isClassInitializer = !0;
          g.attachHolder(this.init, this);
          this.traits = l.parseTraits(b, c, 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 = s;
      var m = function(b) {
        function e(a, f, c) {
          b.call(this, a, f, 196608);
          this.runtimeId = s.nextID++;
          this.name = a.name + "$script" + f;
          this.init = a.methods[c.readU30()];
          this.init.isScriptInitializer = !0;
          g.attachHolder(this.init, this);
          this.traits = l.parseTraits(a, c, this);
        }
        __extends(e, b);
        Object.defineProperty(e.prototype, "entryPoint", {get:function() {
          return this.init;
        }, enumerable:!0, configurable:!0});
        e.prototype.toString = function() {
          return this.name;
        };
        e.nextID = 1;
        return e;
      }(c);
      a.ScriptInfo = m;
      var g = function() {
        function b(f, g, c) {
          void 0 === c && (c = 0);
          k.enterTimeline("Parse ABC");
          this.name = g;
          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 q(c, this);
          k.leaveTimeline();
          k.enterTimeline("Parse Method Infos");
          this.methods = [];
          f = c.readU30();
          for (g = 0;g < f;++g) {
            this.methods.push(new h(this, g, c));
          }
          k.leaveTimeline();
          k.enterTimeline("Parse MetaData Infos");
          this.metadata = [];
          f = c.readU30();
          for (g = 0;g < f;++g) {
            this.metadata.push(new e(this, c));
          }
          k.leaveTimeline();
          k.enterTimeline("Parse Instance Infos");
          this.instances = [];
          f = c.readU30();
          for (g = 0;g < f;++g) {
            this.instances.push(new p(this, g, c));
          }
          k.leaveTimeline();
          k.enterTimeline("Parse Class Infos");
          this.classes = [];
          for (g = 0;g < f;++g) {
            this.classes.push(new s(this, g, c));
          }
          k.leaveTimeline();
          k.enterTimeline("Parse Script Infos");
          this.scripts = [];
          f = c.readU30();
          for (g = 0;g < f;++g) {
            this.scripts.push(new m(this, g, c));
          }
          k.leaveTimeline();
          k.enterTimeline("Parse Method Body Info");
          f = c.readU30();
          for (g = 0;g < f;++g) {
            h.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:
              u("Kind");
          }
        };
        return b;
      }();
      a.AbcFile = g;
      var f = function() {
        function b(e, a, f, n) {
          void 0 === a && (a = "");
          void 0 === a && (a = "");
          this.kind = e;
          this.uri = a;
          this.prefix = f;
          this.qualifiedName = void 0;
          this._buildNamespace(n);
        }
        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 g = b._knownURIs.indexOf(a);
          if (0 <= g) {
            return e << 2 | g;
          }
          var g = new Int32Array(1 + a.length + f.length), c = 0;
          g[c++] = e;
          for (e = 0;e < a.length;e++) {
            g[c++] = a.charCodeAt(e);
          }
          for (e = 0;e < f.length;e++) {
            g[c++] = f.charCodeAt(e);
          }
          return d.HashUtilities.hashBytesTo32BitsMD5(g, 0, c);
        };
        b._qualifyNamespace = function(e, a, f) {
          var g = e + a, c = b._mangledNamespaceCache[g];
          if (c) {
            return c;
          }
          c = d.StringUtilities.variableLengthEncodeInt32(b._hashNamespace(e, a, f));
          b._mangledNamespaceMap[c] = {kind:e, uri:a, prefix:f};
          return b._mangledNamespaceCache[g] = c;
        };
        b.fromQualifiedName = function(e) {
          var a = d.StringUtilities.fromEncoding(e[0]);
          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 g = a.readU8();
          e = e.strings[a.readU30()];
          return new b(g, 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, g, c) {
          var q = 0, s = a.readU8(), p, m = [], h = 0;
          switch(s) {
            case 7:
            ;
            case 13:
              (q = a.readU30()) ? m = [e.namespaces[q]] : h &= ~b.RUNTIME_NAME;
              (q = a.readU30()) && (p = e.strings[q]);
              break;
            case 15:
            ;
            case 16:
              (q = a.readU30()) ? p = e.strings[q] : h &= ~b.RUNTIME_NAME;
              h |= b.RUNTIME_NAMESPACE;
              break;
            case 17:
            ;
            case 18:
              h |= b.RUNTIME_NAMESPACE;
              h |= b.RUNTIME_NAME;
              break;
            case 9:
            ;
            case 14:
              (q = a.readU30()) ? p = e.strings[q] : h &= ~b.RUNTIME_NAME;
              q = a.readU30();
              m = e.namespaceSets[q];
              break;
            case 27:
            ;
            case 28:
              h |= b.RUNTIME_NAME;
              q = a.readU30();
              m = e.namespaceSets[q];
              break;
            case 29:
              return e = a.readU32(), a.readU32(), a = a.readU32(), q = void 0, f[e] && f[a] ? (q = new b(f[e].namespaces, f[e].name, h), q.typeParameter = f[a]) : g.push({index:c, factoryTypeIndex:e, typeParameterIndex:a, flags:h}), q;
            default:
              d.Debug.unexpected();
          }
          switch(s) {
            case 13:
            ;
            case 16:
            ;
            case 18:
            ;
            case 14:
            ;
            case 28:
              h |= b.ATTRIBUTE;
          }
          return new b(m, p, h);
        };
        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 (r(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 (r(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 (r(e)) {
            return d.toNumber(e);
          }
          if (null !== e && v(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 || r(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 ? r(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, g;
          a = e.lastIndexOf(".");
          0 >= a && (a = e.lastIndexOf(" "));
          0 < a && a < e.length - 1 ? (g = e.substring(a + 1).trim(), a = e.substring(0, a).trim()) : (g = e, a = "");
          return b._simpleNameCache[e] = new b(f.fromSimpleName(a), g, 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.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, n = this.name = f[a.readU30()], g = a.readU30(), c = [], q = [], s = 0;s < g;s++) {
            c[s] = f[a.readU30()];
          }
          for (s = 0;s < g;s++) {
            var p = c[s];
            q[s] = {key:p, value:f[a.readU30()]};
            p && "native" === n && (this[p] = q[s].value);
          }
          this.value = q;
        }
        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";
      })(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 = {}));
      (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 q = function() {
        function e(a, g) {
          var c, q = [0];
          c = a.readU30();
          for (var s = 1;s < c;++s) {
            q.push(a.readS32());
          }
          var p = [0];
          c = a.readU30();
          for (s = 1;s < c;++s) {
            p.push(a.readU32());
          }
          var m = [NaN];
          c = a.readU30();
          for (s = 1;s < c;++s) {
            m.push(a.readDouble());
          }
          k.enterTimeline("Parse Strings");
          var h = [""];
          c = a.readU30();
          for (s = 1;s < c;++s) {
            h.push(a.readUTFString(a.readU30()));
          }
          k.leaveTimeline();
          this.ints = q;
          this.uints = p;
          this.doubles = m;
          this.strings = h;
          k.enterTimeline("Parse Namespaces");
          q = [void 0];
          c = a.readU30();
          for (s = 1;s < c;++s) {
            q.push(f.parse(this, a, g.hash + s));
          }
          k.leaveTimeline();
          k.enterTimeline("Parse Namespace Sets");
          p = [void 0];
          c = a.readU30();
          for (s = 1;s < c;++s) {
            m = a.readU30();
            h = [];
            h.runtimeId = e._nextNamespaceSetID++;
            h.hash = g.hash & 65535 | 262144 | s << 19;
            for (var l = 0;l < m;++l) {
              h.push(q[a.readU30()]);
            }
            p.push(h);
          }
          k.leaveTimeline();
          this.namespaces = q;
          this.namespaceSets = p;
          k.enterTimeline("Parse Multinames");
          q = [void 0];
          p = [];
          c = a.readU30();
          for (s = 1;s < c;++s) {
            q.push(b.parse(this, a, q, p, s));
          }
          for (s = 0;s < p.length;s++) {
            c = p[s], h = q[c.factoryTypeIndex], m = q[c.typeParameterIndex], h = new b(h.namespaces, h.name, c.flags), h.typeParameter = m, q[c.index] = h;
          }
          k.leaveTimeline();
          this.multinames = q;
        }
        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 = q;
    })(k.ABC || (k.ABC = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      function r(a, c, m, g) {
        void 0 === g && (g = null);
        0 !== m.length && (a.enter(c + " {"), m.forEach(function(f, b) {
          f.trace(a, g);
        }), a.leave("}"));
      }
      function v(a, c, m) {
        var g;
        void 0 === g && (g = !1);
        var f = m.position, b = "";
        null === a.operands ? b = "null" : a.operands.forEach(function(e, f) {
          var g = b, h;
          a: {
            h = 0;
            switch(e.size) {
              case 1:
                h = m.readS8();
                break;
              case 0:
                h = m.readU8();
                break;
              case 2:
                h = m.readS16();
                break;
              case 3:
                h = m.readS24();
                break;
              case 4:
                h = m.readU30();
                break;
              case 5:
                h = m.readU32();
            }
            var l = "";
            switch(e.type) {
              case "":
                break;
              case "I":
                l = c.constantPool.ints[h];
                break;
              case "U":
                l = c.constantPool.uints[h];
                break;
              case "D":
                l = c.constantPool.doubles[h];
                break;
              case "S":
                l = c.constantPool.strings[h];
                break;
              case "N":
                l = c.constantPool.namespaces[h];
                break;
              case "CI":
                l = c.classes[h];
                break;
              case "M":
                h = c.constantPool.multinames[h];
                break a;
              default:
                l = "?";
            }
            h = e.name + ":" + h + ("" === l ? "" : " (" + l + ")");
          }
          b = g + h;
          f < a.operands.length - 1 && (b += ", ");
        });
        g && m.seek(f);
        return b;
      }
      function u(a, c) {
        var m = new h(a);
        c.scripts.forEach(function(a) {
          m.traceTraits(a.traits);
        });
      }
      function t(c, s) {
        var m = new d.Metrics.Counter(!0), g = new d.Metrics.Counter(!0), f = new d.Metrics.Counter(!0), b = new d.Metrics.Counter(!0), e = {}, q = {}, n = {};
        s.classes.forEach(function(b) {
          e[b.instanceInfo.name.name] = !0;
        });
        s.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 || g.count(a);
              b.classInfo.traits.forEach(function(b) {
                b.isMethod() ? q[b.name.name] = !0 : n[b.name.name] = !0;
              });
              b.classInfo.instanceInfo.traits.forEach(function(b) {
                !b.isMethod() || b.attributes & 2 ? n[b.name.name] = !0 : q[b.name.name] = !0;
              });
            }
          });
        });
        var h = new d.Metrics.Counter(!0);
        s.methods.forEach(function(g) {
          function c(b) {
            var e = 0;
            switch(b.size) {
              case 1:
                e = p.readS8();
                break;
              case 0:
                e = p.readU8();
                break;
              case 2:
                e = p.readS16();
                break;
              case 3:
                e = p.readS24();
                break;
              case 4:
                e = p.readU30();
                break;
              case 5:
                e = p.readU32();
            }
            var a = "";
            switch(b.type) {
              case "":
                break;
              case "I":
                a = s.constantPool.ints[e];
                break;
              case "U":
                a = s.constantPool.uints[e];
                break;
              case "D":
                a = s.constantPool.doubles[e];
                break;
              case "S":
                a = s.constantPool.strings[e];
                break;
              case "N":
                a = s.constantPool.namespaces[e];
                break;
              case "CI":
                a = s.classes[e];
                break;
              case "M":
                a = s.constantPool.multinames[e];
                break;
              default:
                a = "?";
            }
            return a;
          }
          if (g.code) {
            for (var p = new a.AbcStream(g.code);0 < p.remaining();) {
              g = p.readU8();
              var l = k.opcodeTable[g], d = null;
              if (l) {
                switch(h.count(k.opcodeName(l)), l.operands && (d = l.operands.map(c)), g) {
                  case 65:
                  ;
                  case 67:
                    continue;
                  case 70:
                  ;
                  case 76:
                  ;
                  case 79:
                  ;
                  case 68:
                  ;
                  case 69:
                  ;
                  case 78:
                    !d[0] || d[0].name in q || f.count(d[0].name);
                    break;
                  case 74:
                    !d[0] || d[0].name in e || m.count(d[0].name);
                    break;
                  case 102:
                  ;
                  case 97:
                    !d[0] || d[0].name in n || b.count(d[0].name);
                }
              }
            }
          }
        });
        c.writeLn(JSON.stringify({definedClasses:e, definedMethods:q, definedProperties:n, libraryClasses:m.counts, librarySuperClasses:g.counts, libraryMethods:f.counts, libraryProperties:b.counts, operations:h.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") && r(a, "classes", this.classes);
        0 <= c.value.indexOf("i") && r(a, "instances", this.instances);
        0 <= c.value.indexOf("M") && r(a, "metadata", this.metadata);
        0 <= c.value.indexOf("s") && r(a, "scripts", this.scripts);
        0 <= c.value.indexOf("m") && r(a, "methods", this.methods, this);
        0 <= c.value.indexOf("S") && u(a, this);
        0 <= c.value.indexOf("t") && t(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(c, g) {
            a.writeLn(("" + g).padRight(" ", 3) + (c ? c.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 + " {");
        r(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 + " {");
        r(a, "traits", this.traits);
        a.leave("}");
      };
      a.ScriptInfo.prototype.trace = function(a) {
        a.enter("script " + this + " {");
        r(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 s = 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);
          r(c, "traits", this.traits);
          for (c.enter("code {");0 < m.remaining();) {
            var g = m.readU8(), f = d.AVM2.opcodeTable[g], b;
            b = ("" + m.position).padRight(" ", 6);
            switch(g) {
              case 27:
                b += k.opcodeName(g) + ": defaultOffset: " + m.readS24();
                g = m.readU30();
                b += ", caseCount: " + g;
                for (f = 0;f < g + 1;f++) {
                  b += " offset: " + m.readS24();
                }
                c.writeLn(b);
                break;
              default:
                f && (b += k.opcodeName(g).padRight(" ", 20), f.operands && (0 < f.operands.length && (b += v(f, s, m)), c.writeLn(b)));
            }
          }
          c.leave("}");
        }
        c.leave("}");
      };
      var h = function() {
        function c(a) {
          return void 0 === a ? "undefined" : null === a ? "null" : "string" === typeof a ? '"' + a + '"' : String(a);
        }
        function s(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(g, f, b) {
          var e = this.writer, q = this;
          g.forEach(function(g) {
            var m;
            m = a.Multiname.getAccessModifier(g.name);
            var h = g.name.namespaces[0].uri;
            h && ("http://adobe.com/AS3/2006/builtin" === h && (h = "AS3"), m = "public" === m ? b === h ? "" : h : m);
            f && (m += " static");
            if (g.isSlot() || g.isConst()) {
              q.traceMetadata(g.metadata), m = g.isConst() ? m + " const" : m + " var", m += " " + g.name.getName(), g.typeName && (m += ":" + g.typeName.getName()), g.value && (m += " = " + c(g.value)), e.writeLn(m + ";");
            } else {
              if (g.isMethod() || g.isGetter() || g.isSetter()) {
                q.traceMetadata(g.metadata);
                h = g.methodInfo;
                g.attributes & 2 && (m += " override");
                h.isNative() && (m += " native");
                m = m + " function" + (g.isGetter() ? " get" : g.isSetter() ? " set" : "");
                m += " " + g.name.getName();
                m += "(" + s(h) + ")";
                m += h.returnType ? ":" + h.returnType.getName() : "";
                var d;
                g.holder instanceof a.ClassInfo ? (d = g.holder.instanceInfo.name, d.getName()) : g.holder instanceof a.InstanceInfo && (d = g.holder.name, d.getName());
                h.isNative();
                h.isNative() ? e.writeLn(m + ";") : b ? e.writeLn(m + ";") : e.writeLn(m + ' { notImplemented("' + g.name.getName() + '"); }');
              } else {
                g.isClass() ? (d = g.classInfo.instanceInfo.name, e.enter("package " + d.namespaces[0].uri + " {\n"), q.traceMetadata(g.metadata), q.traceClass(g.classInfo), e.leave("\n}"), q.traceClassStub(g)) : l(g);
              }
            }
          });
        }, 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 g = e.methodInfo, c = e.name.getName();
              b.writeLn("// " + c + " :: " + (g.parameters.length ? s(g) : "void") + " -> " + (g.returnType ? g.returnType.getName() : "any"));
              b.enter((e.isGetter() ? '"get ' + c + '"' : e.isSetter() ? '"set ' + c + '"' : c) + ": function " + c + "(" + s(g, !0) + ") {");
              b.writeLn('  notImplemented("' + n + "." + c + '");');
              b.leave("}" + (a === f.length - 1 ? "" : ",\n"));
            });
          }
          var b = this.writer, e = a.classInfo, c = e.instanceInfo, n = c.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("' + n + '", 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(c.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 g(b, f) {
              var c = b.methodInfo, q = b.name.getName(), m = "// (" + (c.parameters.length ? s(c) : "void") + ") -> " + (c.returnType ? c.returnType.getName() : "any"), p = q;
              b.isGetter() ? p = "get" : b.isSetter() && (p = "set");
              e.enter(p + ": function " + q + "(" + s(c, !0) + ") { " + m);
              e.writeLn('notImplemented("' + n + "." + q + '");');
              a || (b.isGetter() ? e.writeLn("return this._" + q + ";") : b.isSetter() && e.writeLn("this._" + q + " = " + c.parameters[0].name + ";"));
              e.leave("}" + (f ? "," : ""));
            }
            void 0 === a && (a = !1);
            b = f(b);
            var c = [], q = Object.create(null);
            b.methods.forEach(function(b, e) {
              var a = b.name.getName();
              b.isGetter() || b.isSetter() ? (q[a] || (q[a] = []), q[a].push(b)) : c.push(b);
            });
            for (var m = 0;m < c.length;m++) {
              g(c[m], m < c.length - 1);
            }
            for (var p = d.ObjectUtilities.toKeyValueArray(q), h = 0;h < p.length;h++) {
              e.enter(p[h][0] + ": {");
              for (var l = p[h][1], m = 0;m < l.length;m++) {
                g(l[m], m < l.length - 1);
              }
              e.leave("}" + (h < p.length - 1 ? "," : ""));
            }
            b.properties.forEach(function(a, f) {
              var g = a.name.getName(), c = f === b.properties.length - 1;
              a.name.getNamespace().isPublic() && e.writeLn(g + ": " + ("'public " + a.name.name + "'") + (c ? "" : ","));
            });
          }
          var e = this.writer;
          a = a.classInfo;
          var c = a.instanceInfo, n = c.name.getName();
          e.writeLn("Cut and paste the following glue and edit accordingly.");
          e.writeLn("Class " + c);
          e.writeLn("8< --------------------------------------------------------------");
          var m = c.name.namespaces[0].uri;
          e.enter("var " + n + "Definition = (function () {");
          e.enter("return {");
          e.writeLn("// (" + s(c.init, !1) + ")");
          e.writeLn('__class__: "' + m + "." + n + '",');
          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(c.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(g) {
          var f = this.writer, b = g.instanceInfo, e = b.name, c = a.Multiname.getAccessModifier(e);
          b.isFinal() && (c += " final");
          b.isSealed() || (c += " dynamic");
          c += b.isInterface() ? " interface " : " class ";
          c += e.getName();
          b.superName && "Object" !== b.superName.getName() && (c += " extends " + b.superName.getName());
          b.interfaces.length && (c += " implements " + b.interfaces.map(function(b) {
            return b.getName();
          }).join(", "));
          f.enter(c + " {");
          b.isInterface() || f.writeLn("public function " + e.getName() + "(" + s(b.init) + ") {}");
          var n;
          b.isInterface() && (n = e.namespaces[0].uri + ":" + e.name);
          this.traceTraits(g.traits, !0, n);
          this.traceTraits(b.traits, !1, n);
          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, r = d.ArrayUtilities.top, v = 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 u = 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:!0, operands:[{name:"value", size:0, type:""}, {name:"index", size:4, type:"S"}, {name:"object", size:0, type:""}, {name:"argCount", size:4, type:""}]}, {canThrow:!0, operands:[{name:"offset", size:4, type:""}]}, {canThrow:!0, 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 u[a];
    };
    var t = function() {
      function a(c) {
        this.ti = null;
        this.position = 0;
        this.targets = this.target = this.offsets = null;
        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;
        if (c) {
          var g = c.readU8();
          this.op = g;
          var f = k.opcodeTable[g];
          this.canThrow = f.canThrow;
          var b;
          if (27 === g) {
            f = c.readS24();
            this.offsets = [];
            b = c.readU30() + 1;
            for (g = 0;g < b;g++) {
              this.offsets.push(c.readS24());
            }
            this.offsets.push(f);
          } else {
            for (g = 0, b = f.operands.length;g < b;g++) {
              var e = f.operands[g];
              switch(e.size) {
                case 0:
                  this[e.name] = c.readU8();
                  break;
                case 1:
                  this[e.name] = c.readS8();
                  break;
                case 2:
                  this[e.name] = c.readS16();
                  break;
                case 3:
                  this[e.name] = c.readS24();
                  break;
                case 4:
                  this[e.name] = c.readU30();
                  break;
                case 5:
                  this[e.name] = c.readU32();
              }
            }
          }
        } else {
          this.op = 237, this.canThrow = !0;
        }
      }
      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 c = d.AVM2.opcodeTable[this.op], f = u[this.op].padRight(" ", 20), b, e;
        if (27 === this.op) {
          for (f += "targets:", b = 0, e = this.targets.length;b < e;b++) {
            f += (0 < b ? "," : "") + this.targets[b].position;
          }
        } else {
          for (b = 0, e = c.operands.length;b < e;b++) {
            var q = c.operands[b];
            if ("offset" === q.name) {
              f += "target:" + this.target.position;
            } else {
              var f = f + (q.name + ": "), n = this[q.name];
              if (a) {
                switch(q.type) {
                  case "":
                    f += n;
                    break;
                  case "I":
                    f += a.constantPool.ints[n];
                    break;
                  case "U":
                    f += a.constantPool.uints[n];
                    break;
                  case "D":
                    f += a.constantPool.doubles[n];
                    break;
                  case "S":
                    f += a.constantPool.strings[n];
                    break;
                  case "N":
                    f += a.constantPool.namespaces[n];
                    break;
                  case "CI":
                    f += a.classes[n];
                    break;
                  case "M":
                    f += a.constantPool.multinames[n];
                    break;
                  default:
                    f += "?";
                }
              } else {
                f += n;
              }
            }
            b < e - 1 && (f += ", ");
          }
        }
        return f;
      };
      return a;
    }();
    k.Bytecode = t;
    var l = d.BitSets.BITS_PER_WORD, c = d.BitSets.ADDRESS_BITS_PER_WORD, h = d.BitSets.BIT_INDEX_MASK, p = function(a) {
      function p(c, f) {
        a.call(this, c);
        this.blockById = f;
      }
      __extends(p, a);
      p.prototype.forEachBlock = function(a) {
        for (var f = this.blockById, b = this.bits, e = 0, c = b.length;e < c;e++) {
          var n = b[e];
          if (n) {
            for (var p = 0;p < l;p++) {
              n & 1 << p && a(f[e * l + p]);
            }
          }
        }
      };
      p.prototype.choose = function() {
        for (var a = this.blockById, f = this.bits, b = 0, e = f.length;b < e;b++) {
          var c = f[b];
          if (c) {
            for (var n = 0;n < l;n++) {
              if (c & 1 << n) {
                return a[b * l + n];
              }
            }
          }
        }
      };
      p.prototype.members = function() {
        for (var a = this.blockById, f = [], b = this.bits, e = 0, c = b.length;e < c;e++) {
          var n = b[e];
          if (n) {
            for (var p = 0;p < l;p++) {
              n & 1 << p && f.push(a[e * l + p]);
            }
          }
        }
        return f;
      };
      p.prototype.setBlocks = function(a) {
        for (var f = this.bits, b = 0, e = a.length;b < e;b++) {
          var q = a[b].bid;
          f[q >> c] |= 1 << (q & h);
        }
      };
      return p;
    }(d.BitSets.Uint32ArrayBitSet);
    k.BlockSet = p;
    p = 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, c) {
        this.boundBlockSet = function() {
          return new d.AVM2.BlockSet(a, c);
        };
      };
      c.prototype.accessLocal = function(a) {
        0 !== a-- && a < this.methodInfo.parameters.length && (this.methodInfo.parameters[a].isUsed = !0);
      };
      c.prototype.getInvalidTarget = function(a, c) {
        if (a && a[c]) {
          return a[c];
        }
        var f = new t(null);
        f.position = c;
        a && (a[c] = f);
        return f;
      };
      c.prototype.normalizeBytecode = function() {
        for (var c = this.methodInfo, g = [], f = [], b = new a(c.code), e;0 < b.remaining();) {
          var q = b.position;
          e = new t(b);
          switch(e.op) {
            case 2:
            ;
            case 9:
              g[q] = f.length;
              continue;
            case 27:
              e.targets = [];
              for (var n = e.offsets, p = 0, h = n.length;p < h;p++) {
                n[p] += q;
              }
              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:
              e.offset += b.position;
              break;
            case 208:
            ;
            case 209:
            ;
            case 210:
            ;
            case 211:
              this.accessLocal(e.op - 208);
              break;
            case 98:
              this.accessLocal(e.index);
          }
          e.position = f.length;
          g[q] = f.length;
          f.push(e);
        }
        for (var b = {}, s = 0, l = f.length;s < l;s++) {
          switch(e = f[s], e.op) {
            case 27:
              n = e.offsets;
              p = 0;
              for (h = n.length;p < h;p++) {
                q = g[n[p]], e.targets.push(f[q] || this.getInvalidTarget(b, n[p])), n[p] = q;
              }
              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:
              q = g[e.offset], e.target = f[q] || this.getInvalidTarget(b, e.offset), e.offset = q;
          }
        }
        this.bytecodes = f;
        c = c.exceptions;
        p = 0;
        for (h = c.length;p < h;p++) {
          e = c[p], e.start = g[e.start], e.end = g[e.end], e.offset = g[e.target], e.target = f[e.offset], e.target.exception = e;
        }
      };
      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, c = this.methodInfo.exceptions, f = 0 < c.length, b = {}, e, q, n, p;
        p = a[0].makeBlockHead(0);
        q = 0;
        for (n = a.length - 1;q < n;q++) {
          switch(e = a[q], e.op) {
            case 71:
            ;
            case 72:
            ;
            case 3:
              p = a[q + 1].makeBlockHead(p);
              break;
            case 27:
              e = e.targets;
              for (var h = 0, s = e.length;h < s;h++) {
                p = e[h].makeBlockHead(p);
              }
              p = a[q + 1].makeBlockHead(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 = e.target.makeBlockHead(p), p = a[q + 1].makeBlockHead(p);
          }
        }
        e = a[n];
        switch(e.op) {
          case 27:
            e = e.targets;
            h = 0;
            for (s = e.length;h < s;h++) {
              p = e[h].makeBlockHead(p);
            }
            break;
          case 16:
            p = e.target.makeBlockHead(p);
            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:
            p = e.target.makeBlockHead(p), a[q + 1] = this.getInvalidTarget(null, q + 1), p = a[q + 1].makeBlockHead(p);
        }
        if (f) {
          for (h = 0;h < c.length;h++) {
            q = c[h], n = a[q.end + 1], p = a[q.start].makeBlockHead(p), n && (p = n.makeBlockHead(p)), p = q.target.makeBlockHead(p);
          }
        }
        var l = a[0];
        q = 1;
        for (n = a.length;q < n;q++) {
          if (a[q].succs) {
            b[l.bid] = l;
            e = a[q - 1];
            l.end = e;
            var d = a[q];
            switch(e.op) {
              case 71:
              ;
              case 72:
              ;
              case 3:
                break;
              case 27:
                h = 0;
                for (s = e.targets.length;h < s;h++) {
                  l.succs.push(e.targets[h]);
                }
                break;
              case 16:
                l.succs.push(e.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(e.target);
                e.target !== d && l.succs.push(d);
                break;
              default:
                l.succs.push(d);
            }
            if (f) {
              h = l;
              s = [];
              e = 0;
              for (var r = c.length;e < r;e++) {
                var k = c[e];
                h.position >= k.start && h.end.position <= k.end && s.push(k.target);
              }
              e = s;
              l.hasCatches = 0 < e.length;
              l.succs.push.apply(l.succs, e);
            }
            l = d;
          }
        }
        b[l.bid] = l;
        e = a[n - 1];
        switch(e.op) {
          case 27:
            h = 0;
            for (s = e.targets.length;h < s;h++) {
              l.succs.push(e.targets[h]);
            }
            break;
          case 16:
            l.succs.push(e.target);
        }
        l.end = e;
        this.makeBlockSetFactory(p, b);
      };
      c.prototype.normalizeReachableBlocks = function() {
        var a = this.bytecodes[0], c = [], f = {}, b = {}, e = [a];
        for (b[a.bid] = !0;a = r(e);) {
          if (f[a.bid]) {
            if (1 === f[a.bid]) {
              f[a.bid] = 2;
              c.push(a);
              for (var q = a.succs, n = 0, p = q.length;n < p;n++) {
                q[n].preds.push(a);
              }
            }
            b[a.bid] = !1;
            e.pop();
          } else {
            for (f[a.bid] = 1, b[a.bid] = !0, q = a.succs, n = 0, p = q.length;n < p;n++) {
              var h = q[n];
              b[h.bid] && (a.spbacks || (a.spbacks = new this.boundBlockSet), a.spbacks.set(h.bid));
              !f[h.bid] && e.push(h);
            }
          }
        }
        this.blocks = c.reverse();
      };
      c.prototype.computeDominance = function() {
        var a = this.blocks, c = a.length, f = Array(c);
        f[0] = 0;
        for (var b = {}, e = 0;e < c;e++) {
          b[a[e].bid] = e;
        }
        for (var q = !0;q;) {
          for (q = !1, e = 1;e < c;e++) {
            var n = a[e].preds, p = n.length, h = b[n[0].bid];
            if (!(h in f)) {
              for (var s = 1;s < p && !(h = b[n[s].bid], h in f);s++) {
              }
            }
            for (s = 0;s < p;s++) {
              var l = b[n[s].bid];
              if (l !== h && l in f) {
                for (;l !== h;) {
                  for (;l > h;) {
                    l = f[l];
                  }
                  for (;h > l;) {
                    h = f[h];
                  }
                }
                h = l;
              }
            }
            f[e] !== h && (f[e] = h, q = !0);
          }
        }
        a[0].dominator = a[0];
        for (e = 1;e < c;e++) {
          b = a[e], s = a[f[e]], b.dominator = s, s.dominatees.push(b), b.npreds = b.preds.length;
        }
        c = [a[0]];
        for (a[0].level || (a[0].level = 0);b = c.shift();) {
          a = b.dominatees;
          for (s = 0;s < a.length;s++) {
            a[s].level = b.level + 1;
          }
          c.push.apply(c, a);
        }
      };
      c.prototype.markLoops = function() {
        function a(b) {
          var e = 1, f = {}, c = {}, g = [], n = [], q = [], p = b.level + 1;
          b = [b];
          for (var h, m;h = r(b);) {
            if (f[h.bid]) {
              if (v(n) === h) {
                n.pop();
                var s = [];
                do {
                  m = g.pop(), c[m.bid] = !0, s.push(m);
                } while (m !== h);
                (1 < s.length || m.spbacks && m.spbacks.get(m.bid)) && q.push(s);
              }
              b.pop();
            } else {
              f[h.bid] = e++;
              g.push(h);
              n.push(h);
              m = h.succs;
              for (var s = 0, l = m.length;s < l;s++) {
                if (h = m[s], !(h.level < p)) {
                  var d = h.bid;
                  if (!f[d]) {
                    b.push(h);
                  } else {
                    if (!c[d]) {
                      for (;f[v(n).bid] > f[d];) {
                        n.pop();
                      }
                    }
                  }
                }
              }
            }
          }
          return q;
        }
        function c(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.npreds = 0;
          this._dirtyLocals = null;
        }
        if (!this.analyzedControlFlow && !this.analyzeControlFlow()) {
          return!1;
        }
        var f = this.bytecodes, b = this.boundBlockSet;
        c.prototype.getDirtyLocals = function() {
          if (this._dirtyLocals) {
            return this._dirtyLocals;
          }
          var b = this._dirtyLocals = [];
          this.body.members().forEach(function(a) {
            var e = a.position;
            for (a = a.end.position;e <= a;e++) {
              var c = f[e], g = c.op;
              switch(g) {
                case 146:
                ;
                case 148:
                ;
                case 99:
                ;
                case 194:
                ;
                case 195:
                  b[c.index] = !0;
                  break;
                case 50:
                  b[c.index] = !0;
                  b[c.object] = !0;
                  break;
                case 212:
                ;
                case 213:
                ;
                case 214:
                ;
                case 215:
                  b[g - 212] = !0;
              }
            }
          });
          return b;
        };
        var e = function(a) {
          for (var e = new b, f = 0, c = a.length;f < c;f++) {
            var g = a[f], n = g.spbacks;
            if (n) {
              for (var g = g.succs, q = 0, p = g.length;q < p;q++) {
                var h = g[q];
                n.get(h.bid) && e.set(h.dominator.bid);
              }
            }
          }
          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;
        }), q = 0, n = e.length - 1;0 <= n;n--) {
          var p = e[n], h = a(p);
          if (0 !== h.length) {
            for (var s = 0, l = h.length;s < l;s++) {
              for (var d = h[s], k = new c(d, q++), u = 0, t = d.length;u < t;u++) {
                var D = d[u];
                if (D.level === p.level + 1 && !D.loop) {
                  D.loop = k;
                  k.head.set(D.bid);
                  for (var B = D.preds, E = 0, y = B.length;E < y;E++) {
                    k.body.get(B[E].bid) && D.npreds--;
                  }
                  k.npreds += D.npreds;
                }
              }
              u = 0;
              for (t = d.length;u < t;u++) {
                D = d[u], D.level === p.level + 1 && (D.npreds = k.npreds);
              }
              k.head.recount();
            }
          }
        }
        return this.markedLoops = !0;
      };
      return c;
    }();
    k.Analysis = p;
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
var Bytecode = Shumway.AVM2.Bytecode, Analysis = Shumway.AVM2.Analysis;
(function(d) {
  (function(k) {
    var a = d.Options.Option, r = d.Options.OptionSet, v = d.Settings.shumwayOptions.register(new r("AVM2"));
    (function(d) {
      var k = v.register(new r("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 = v.register(new r("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, "Performe dirty local analysis to minimise PHI nodes."));
    })(k.Compiler || (k.Compiler = {}));
    (function(d) {
      d.options = v.register(new r("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 r(b) {
        var e = this.resolutionMap[b.runtimeId];
        if (e) {
          return e;
        }
        var e = this.resolutionMap[b.runtimeId] = d.ObjectUtilities.createMap(), f = this.bindings, c;
        for (c in f.map) {
          var g = c, n = f.map[c].trait;
          if (n.isGetter() || n.isSetter()) {
            g = g.substring(a.Binding.KEY_PREFIX_LENGTH);
          }
          g = W.fromQualifiedName(g);
          g.getNamespace().inNamespaceSet(b) && (e[g.getName()] = W.getQualifiedName(n.name));
        }
        return e;
      }
      function v(b, a, e) {
        ta(a) ? a = String(Q(a)) : "object" === typeof a && (a = String(a));
        return d.isNumeric(a) ? d.toNumber(a) : b ? 1 < b.length ? (b = this.getNamespaceResolutionMap(b)[a]) ? b : W.getPublicQualifiedName(a) : W.qualifyName(b[0], a) : W.getPublicQualifiedName(a);
      }
      function u(b) {
        return this.asGetProperty(void 0, b, 0);
      }
      function t(b, a, e) {
        b = this.resolveMultinameProperty(b, a, e);
        return this.asGetNumericProperty && W.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 h(b, a) {
        return this.asSetProperty(void 0, b, 0, a);
      }
      function p(b, e) {
        e === W.VALUE_OF ? (ha(b, "original_valueOf", b.valueOf), b.valueOf = a.forwardValueOf) : e === W.TO_STRING && (ha(b, "original_toString", b.toString), b.toString = a.forwardToString);
      }
      function s(b, a, e, f) {
        "object" === typeof a && (a = String(a));
        b = this.resolveMultinameProperty(b, a, e);
        if (this.asSetNumericProperty && W.isNumeric(b)) {
          return this.asSetNumericProperty(b, f);
        }
        (a = this.asSlots.byQN[b]) && (a = a.type) && a.coerce && (f = a.coerce(f));
        p(this, b);
        this[b] = f;
      }
      function m(b, a) {
        return this.asDefineProperty(void 0, b, 0, a);
      }
      function g(b, a, e, f) {
        "object" === typeof a && (a = String(a));
        b = this.resolveMultinameProperty(b, a, e);
        Object.defineProperty(this, b, f);
      }
      function f(b, a, e) {
        "object" === typeof a && (a = String(a));
        b = this.resolveMultinameProperty(b, a, e);
        return Object.getOwnPropertyDescriptor(this, b);
      }
      function b(b, a) {
        return this.asCallProperty(void 0, b, 0, !1, a);
      }
      function e(b, a, e, f, c) {
        f = f ? null : this;
        b = this.resolveMultinameProperty(b, a, e);
        this.asGetNumericProperty && W.isNumeric(b) ? (b = this.asGetNumericProperty(b), c = b.asApply(f, c)) : (a = this.asOpenMethods, c = f && a && a[b] ? a[b].apply(f, c) : this[b].asApply(f, c));
        return c;
      }
      function q(b, a, e, f, c) {
        b = b.object.baseClass;
        a = b.traitsPrototype.resolveMultinameProperty(a, e, f);
        return b.traitsPrototype.asOpenMethods[a].apply(this, c);
      }
      function n(b, e, f, c, g) {
        b = b.object.baseClass;
        var n = b.traitsPrototype.resolveMultinameProperty(e, f, c);
        this.asSlots.byQN[n] ? this.asSetProperty(e, f, c, g) : b.traitsPrototype[a.VM_OPEN_SET_METHOD_PREFIX + n].call(this, g);
      }
      function x(b, e, f, c) {
        b = b.object.baseClass;
        var g = b.traitsPrototype.resolveMultinameProperty(e, f, c);
        return this.asSlots.byQN[g] ? this.asGetProperty(e, f, c) : b.traitsPrototype[a.VM_OPEN_GET_METHOD_PREFIX + g].call(this);
      }
      function L(b, a) {
        if (b.classInfo) {
          var e = W.getQualifiedName(b.classInfo.instanceInfo.name);
          if (e === W.String) {
            return String.apply(null, a);
          }
          if (e === W.Boolean) {
            return Boolean.apply(null, a);
          }
          if (e === W.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 = [], c = 0;c < a.length;c++) {
          f[c + 1] = a[c];
        }
        return new (Function.bind.apply(e, f));
      }
      function A(b, e, f, c) {
        b = this.asGetProperty(b, e, f);
        a.traceCallExecution.value && a.callWriter.enter("construct " + e + "(" + (c ? Ba(c) : "") + ") #" + ea.count(e));
        e = L(b, c);
        0 < a.traceCallExecution.value && a.callWriter.leave("return " + Ca(e));
        return e;
      }
      function H(b, a, e) {
        return this.resolveMultinameProperty(b, a, e) in this;
      }
      function K(b, a, e) {
        b = this.resolveMultinameProperty(b, a, e);
        return pa(this, b) || 0 <= this.asBindings.indexOf(b);
      }
      function F(b, a, e) {
        b = this.resolveMultinameProperty(b, a, e);
        return Da(this, b);
      }
      function J(b, a, e) {
        return this.asHasTraitProperty(b, a, e) ? !1 : delete this[this.resolveMultinameProperty(b, a, e)];
      }
      function M(b, a, e) {
        b = this.resolveMultinameProperty(b, a, e);
        return 0 <= this.asBindings.indexOf(b);
      }
      function D(b) {
        return this[b];
      }
      function B(b, a) {
        this[b] = a;
      }
      function E(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 y(b) {
        return this.asEnumerableKeys[b - 1];
      }
      function z(b) {
        return this.asGetPublicProperty(this.asNextName(b));
      }
      function G(b) {
        if (ta(b.object)) {
          b.index = 0, b.object = null;
        } else {
          var a = Ea(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 C() {
        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 = W.stripPublicQualifier(f), void 0 !== f && a.push(f));
        }
        return a;
      }
      function I(b, a) {
        b || P("TypeError", k.Errors.NullPointerError, a);
      }
      function P(b, e, f, c, g, n) {
        e.fqn && (b = e.fqn);
        var q = d.AVM2.formatErrorMessage.apply(null, Array.prototype.slice.call(arguments, 1)), p = a.AVM2.currentDomain(), h = e.code;
        throw new (p.getClass(b).instanceConstructor)(q, h);
      }
      function T(b) {
        return b instanceof k.AS.ASXML || b instanceof k.AS.ASXMLList || b instanceof k.AS.ASQName || b instanceof k.AS.ASNamespace;
      }
      function O(b, a) {
        return b.coerce(a);
      }
      function Q(b) {
        return "string" === typeof b ? b : void 0 == b ? null : b + "";
      }
      function S(b) {
        return b instanceof Boolean ? b.valueOf() : void 0 == b ? null : "string" === typeof b || "number" === typeof b ? b : Object(b);
      }
      function V(b, a) {
        return String(b).localeCompare(String(a));
      }
      function aa(b) {
        return b instanceof k.AS.ASXML || b instanceof k.AS.ASXMLList;
      }
      function $(p) {
        "Object Number Boolean String Array Date RegExp".split(" ").forEach(function(b) {
          Fa(p[b].prototype, a.VM_NATIVE_PROTOTYPE_FLAG, !0);
        });
        ha(p.Object.prototype, "getNamespaceResolutionMap", r);
        ha(p.Object.prototype, "resolveMultinameProperty", v);
        ha(p.Object.prototype, "asGetProperty", t);
        ha(p.Object.prototype, "asGetPublicProperty", u);
        ha(p.Object.prototype, "asGetResolvedStringProperty", l);
        ha(p.Object.prototype, "asSetProperty", s);
        ha(p.Object.prototype, "asSetPublicProperty", h);
        ha(p.Object.prototype, "asDefineProperty", g);
        ha(p.Object.prototype, "asDefinePublicProperty", m);
        ha(p.Object.prototype, "asGetPropertyDescriptor", f);
        ha(p.Object.prototype, "asCallProperty", e);
        ha(p.Object.prototype, "asCallSuper", q);
        ha(p.Object.prototype, "asGetSuper", x);
        ha(p.Object.prototype, "asSetSuper", n);
        ha(p.Object.prototype, "asCallPublicProperty", b);
        ha(p.Object.prototype, "asCallResolvedStringProperty", c);
        ha(p.Object.prototype, "asConstructProperty", A);
        ha(p.Object.prototype, "asHasProperty", H);
        ha(p.Object.prototype, "asHasPropertyInternal", H);
        ha(p.Object.prototype, "asHasOwnProperty", K);
        ha(p.Object.prototype, "asPropertyIsEnumerable", F);
        ha(p.Object.prototype, "asHasTraitProperty", M);
        ha(p.Object.prototype, "asDeleteProperty", J);
        ha(p.Object.prototype, "asHasNext2", G);
        ha(p.Object.prototype, "asNextName", y);
        ha(p.Object.prototype, "asNextValue", z);
        ha(p.Object.prototype, "asNextNameIndex", E);
        ha(p.Object.prototype, "asGetEnumerableKeys", C);
        ha(p.Function.prototype, "asCall", p.Function.prototype.call);
        ha(p.Function.prototype, "asApply", p.Function.prototype.apply);
        "Array Object Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array".split(" ").forEach(function(b) {
          b in p ? (ha(p[b].prototype, "asGetNumericProperty", D), ha(p[b].prototype, "asSetNumericProperty", B)) : console.warn(b + " was not found in globals");
        });
        p.Array.prototype.asGetProperty = function(b, a, e) {
          return "number" === typeof a ? this[a] : t.call(this, b, a, e);
        };
        p.Array.prototype.asSetProperty = function(b, a, e, f) {
          if ("number" === typeof a) {
            this[a] = f;
          } else {
            return s.call(this, b, a, e, f);
          }
        };
      }
      function w(b, e) {
        e && (new a.CatchBindings(new a.Scope(null, this), e)).applyTo(b, this);
      }
      function U(b, a) {
        void 0 === a && (a = 0);
        return Array.prototype.slice.call(b, a);
      }
      function ba(b) {
        return!b.hasBody || b.hasExceptions() && !a.compilerEnableExceptions.value || b.hasSetsDxns() || b.code.length > a.compilerMaximumMethodSize.value ? !1 : !0;
      }
      function R(b) {
        return!ba(b) || b.isClassInitializer || b.isScriptInitializer ? !1 : !0;
      }
      function N(b) {
        if (b.hasExceptions()) {
          return!1;
        }
        b = b.holder;
        b instanceof Y && (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 Z(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 fa(b) {
        var a = b.name ? W.getFullQualifiedName(b.name) : "fn" + xa;
        if (b.holder) {
          var e = "";
          b.holder instanceof Y ? e = "static$" + b.holder.instanceInfo.name.getName() : b.holder instanceof la ? e = b.holder.name.getName() : b.holder instanceof ma && (e = "script");
          a = e + "$" + a;
        }
        a = d.StringUtilities.escapeString(a);
        b.verified && (a += "$V");
        return a;
      }
      function X(b, a, e) {
        var f = !1, c = 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, g = U(arguments, 1);
          f && g.length < c.length && (g = g.concat(c.slice(g.length - c.length)));
          return d.AVM2.Interpreter.interpretMethod(e, b, a, g);
        } : function() {
          var e = this === jsGlobal ? a.global.object : this, g = U(arguments);
          f && g.length < c.length && (g = g.concat(c.slice(arguments.length - c.length)));
          return d.AVM2.Interpreter.interpretMethod(e, b, a, g);
        };
        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 g = fa(b);
        e.displayName = e.debugName = g;
        e.methodInfo = b;
        return jsGlobal[g] = e;
      }
      function ia(b, a, e, f, c) {
        c = Z(b);
        var g;
        c || (g = k.Compiler.compileMethod(b, a, e));
        a = fa(b);
        f || (e = d.AVM2.Compiler.breakFilter.value) && 0 <= a.search(e) && (f = !0);
        e = g.body;
        f && (e = "{ debugger; \n" + e + "}");
        if (!c) {
          var n = "jsGlobal. " + a + " = function " + a + " (" + g.parameters.join(", ") + ") " + e, n = n + ("//# sourceURL=fun-" + a + ".as")
        }
        (new Function("return " + (c || n)))();
        f = jsGlobal[a];
        f.debugName = a;
        f.methodInfo = b;
        return f;
      }
      function ga(b, e, f, c, g) {
        void 0 === g && (g = !1);
        if (b.freeMethod) {
          return f ? a.bindFreeMethodScope(b, e) : b.freeMethod;
        }
        var n;
        if ((n = a.checkMethodOverrides(b)) || (n = a.checkCommonMethodPatterns(b))) {
          return n;
        }
        ca(b);
        1 !== b.abc.applicationDomain.mode && R(b) || N(b) || (g = !0);
        (n = d.AVM2.Compiler.compileFilter.value) && b.name && 0 > W.getQualifiedName(b.name).search(n) && (g = !0);
        g ? b.freeMethod = X(b, e, f) : (xa++, b.freeMethod = ia(b, e, f, c, b.isInstanceInitializer));
        b.freeMethod.methodInfo = b;
        return f ? a.bindFreeMethodScope(b, e) : b.freeMethod;
      }
      function ca(b) {
        if (!b.analysis) {
          b.analysis = new k.Analysis(b);
          b.needsActivation() && (b.activationPrototype = new ya(b), (new a.ActivationBindings(b)).applyTo(b.abc.applicationDomain, b.activationPrototype));
          for (var e = b.exceptions, f = 0, c = e.length;f < c;f++) {
            var g = e[f];
            if (g.varName) {
              var n = Object.create(na.prototype);
              n.kind = 0;
              n.name = g.varName;
              n.typeName = g.typeName;
              n.holder = b;
              g.scopeObject = new w(b.abc.applicationDomain, n);
            } else {
              g.scopeObject = new w(void 0, void 0);
            }
          }
        }
      }
      function da(b, a, e) {
        var f = b.methodInfo, c;
        if (f.isNative()) {
          if ((a = b.metadata) && a.native ? c = d.AVM2.AS.getNative(a.native.value[0].value) : e && (c = d.AVM2.AS.getMethodOrAccessorNative(b, e)), !c) {
            return function(a) {
              return function() {
                d.Debug.warning("Calling undefined native method: " + b.kindName() + " " + a.holder.name + "::" + W.getQualifiedName(a.name));
              };
            }(f);
          }
        } else {
          c = ga(f, a, !1, !1);
        }
        return c;
      }
      a.sealConstTraits = !1;
      a.useAsAdd = !0;
      var ea = new d.Metrics.Counter(!0), W = d.AVM2.ABC.Multiname, ka = d.AVM2.ABC.Namespace, Y = d.AVM2.ABC.ClassInfo, la = d.AVM2.ABC.InstanceInfo, ma = d.AVM2.ABC.ScriptInfo, na = d.AVM2.ABC.Trait, sa = d.IndentingWriter, pa = d.ObjectUtilities.hasOwnProperty, Da = d.ObjectUtilities.propertyIsEnumerable, ta = d.isNullOrUndefined, Ea = d.ObjectUtilities.boxValue, ua = d.ObjectUtilities.defineNonEnumerableGetterOrSetter, ha = d.ObjectUtilities.defineNonEnumerableProperty, Fa = d.ObjectUtilities.defineReadOnlyProperty, 
      Ia = d.ObjectUtilities.defineNonEnumerableGetter, Ca = d.StringUtilities.toSafeString, Ba = 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 xa = 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 sa;
      });
      a.patch = function(b, e) {
        for (var f = 0;f < b.length;f++) {
          var c = b[f];
          if (3 <= a.traceExecution.value) {
            var g = "Patching: ";
            c.name ? g += c.name : c.get ? g += "get " + c.get : c.set && (g += "set " + c.set);
            a.traitsWriter && a.traitsWriter.redLn(g);
          }
          c.get ? ua(c.object, c.get, e, !0) : c.set ? ua(c.object, c.set, e, !1) : ha(c.object, c.name, e);
        }
      };
      a.applyMethodTrait = function(b, e, f, c) {
        var g = f.trait, n = g.isMethod(), q = g.isGetter(), h = n ? a.VM_OPEN_METHOD_PREFIX : q ? a.VM_OPEN_GET_METHOD_PREFIX : a.VM_OPEN_SET_METHOD_PREFIX, m = g.methodInfo.cachedMethodOrTrampoline, s;
        m ? m.isTrampoline && (s = m.patchTargets) : (g.methodInfo.isNative() ? m = da(g, f.scope, f.natives) : (s = [], m = a.makeTrampoline(g, f.scope, f.natives, s, n ? g.methodInfo.parameters.length : 0, String(g.name))), g.methodInfo.cachedMethodOrTrampoline = m);
        s && (s.push({object:e, name:h + b}), n ? s.push({object:e.asOpenMethods, name:b}) : (f = {object:e}, q ? f.get = b : f.set = b, s.push(f)));
        ha(e, h + b, m);
        n ? (e.asOpenMethods[b] = m, c ? (c = g.methodInfo.cachedMemoizer, c || (m = {value:m}, s && s.push({object:m, name:"value"}), c = a.makeMemoizer(b, m), g.methodInfo.cachedMemoizer = c), Ia(e, b, c), p(e, b)) : ha(e, b, m)) : (ua(e, b, m, q), c && ha(e, h + b, m));
      };
      a.getNamespaceResolutionMap = r;
      a.resolveMultinameProperty = v;
      a.asGetPublicProperty = u;
      a.asGetProperty = t;
      a.asGetResolvedStringProperty = l;
      a.asCallResolvedStringProperty = c;
      a.asGetResolvedStringPropertyFallback = function(b) {
        b = W.getNameFromPublicQualifiedName(b);
        return this.asGetProperty([ka.PUBLIC], b, 0);
      };
      a.asSetPublicProperty = h;
      a.forwardValueOf = new Function("", "return this." + W.VALUE_OF + ".apply(this, arguments)//# sourceURL=forward-valueOf.as");
      a.forwardToString = new Function("", "return this." + W.TO_STRING + ".apply(this, arguments)//# sourceURL=forward-toString.as");
      a.asSetProperty = s;
      a.asDefinePublicProperty = m;
      a.asDefineProperty = g;
      a.asGetPropertyDescriptor = f;
      a.asCallPublicProperty = b;
      a.asCallProperty = e;
      a.asCallSuper = q;
      a.asSetSuper = n;
      a.asGetSuper = x;
      a.construct = L;
      a.asConstructProperty = A;
      a.asHasProperty = H;
      a.asHasOwnProperty = K;
      a.asPropertyIsEnumerable = F;
      a.asDeleteProperty = J;
      a.asHasTraitProperty = M;
      a.asGetNumericProperty = D;
      a.asSetNumericProperty = B;
      a.asGetDescendants = function(b, a, e) {
        d.Debug.notImplemented("asGetDescendants");
      };
      a.asNextNameIndex = E;
      a.asNextName = y;
      a.asNextValue = z;
      a.asHasNext2 = G;
      a.asGetEnumerableKeys = C;
      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 (!W.isPublicQualifiedName(f)) {
            var c = b[f];
            b[W.getPublicQualifiedName(f)] = c;
            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)) && P("RangeError", k.Errors.OutOfRangeError, b, a);
      };
      a.asCheckVectorGetNumericProperty = function(b, a) {
        (0 > b || b >= a || !d.isNumeric(b)) && P("RangeError", k.Errors.OutOfRangeError, b, a);
      };
      a.checkNullParameter = I;
      a.checkParameterType = function(b, a, e) {
        I(b, a);
        e.isType(b) || P("TypeError", k.Errors.CheckTypeFailedError, b, e.classInfo.instanceInfo.name.getOriginalName());
      };
      a.throwError = P;
      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 T(b) ? b.equals(a) : T(a) ? a.equals(b) : b == a;
      };
      a.asCoerceByMultiname = function(b, a, e) {
        switch(W.getQualifiedName(a)) {
          case W.Int:
            return e | 0;
          case W.Uint:
            return e >>> 0;
          case W.String:
            return Q(e);
          case W.Number:
            return+e;
          case W.Boolean:
            return!!e;
          case W.Object:
            return S(e);
        }
        return O(b.abc.applicationDomain.getType(a), e);
      };
      a.asCoerce = O;
      a.asCoerceString = Q;
      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 = S;
      a.asDefaultCompareFunction = V;
      a.asCompare = function(b, a, e, f) {
        var c = 0;
        f || (f = V);
        e & 1 && (b = String(b).toLowerCase(), a = String(a).toLowerCase());
        e & 16 ? (b = d.toNumber(b), a = d.toNumber(a), c = b < a ? -1 : b > a ? 1 : 0) : c = f(b, a);
        e & 2 && (c *= -1);
        return c;
      };
      a.asAdd = function(b, a) {
        return "string" === typeof b || "string" === typeof a ? String(b) + String(a) : aa(b) && aa(a) ? d.AVM2.AS.ASXMLList.addXML(b, a) : b + a;
      };
      a.getDescendants = function(b, a) {
        if (!aa(b)) {
          throw "Not XML object in getDescendants";
        }
        return b.descendants(a);
      };
      a.checkFilter = function(b) {
        if (!b.class || !aa(b)) {
          throw "TypeError operand of childFilter not of XML type";
        }
        return b;
      };
      a.initializeGlobalObject = $;
      $(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 = w;
      var qa = 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);
        };
        return b;
      }();
      a.Global = qa;
      ha(qa.prototype, W.getPublicQualifiedName("toString"), function() {
        return this.toString();
      });
      qa = 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 ma) {
            var b = this._target;
            a.ensureScriptIsExecuted(b, "Lazy Initializer");
            return this._resolved = b.global;
          }
          if (this._target instanceof Y) {
            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 = qa;
      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 (W.isPublicQualifiedName(f) && 0 > b.asBindings.indexOf(f)) {
                var c = W.stripPublicQualifier(f);
                a.call(e, c, b[f]);
              }
            }
          }
        }
      };
      a.wrapJSObject = function(b) {
        var a = Object.create(b), e;
        for (e in b) {
          Object.defineProperty(a, W.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);
      };
      qa = function() {
        function b() {
        }
        b.updateTraits = function(a) {
          for (var e = 0;e < a.length;e++) {
            var f = a[e], c = f.name.name, f = f.name.getNamespace();
            f.isDynamic() || (b.hasNonDynamicNamespaces[c] = !0, b.wasResolved[c] && d.Debug.notImplemented("We have to the undo the optimization, " + c + " can now bind to " + f));
          }
        };
        b.loadAbc = function(e) {
          if (a.globalMultinameAnalysis.value) {
            var f = e.scripts, c = e.classes;
            e = e.methods;
            for (var g = 0;g < f.length;g++) {
              b.updateTraits(f[g].traits);
            }
            for (g = 0;g < c.length;g++) {
              b.updateTraits(c[g].traits), b.updateTraits(c[g].instanceInfo.traits);
            }
            for (g = 0;g < e.length;g++) {
              e[g].traits && b.updateTraits(e[g].traits);
            }
          }
        };
        b.resolveMultiname = function(a) {
          var e = a.name;
          if (!b.hasNonDynamicNamespaces[e]) {
            return b.wasResolved[e] = !0, new W([ka.PUBLIC], a.name, 0);
          }
        };
        b.hasNonDynamicNamespaces = Object.create(null);
        b.wasResolved = Object.create(null);
        return b;
      }();
      a.GlobalMultinameResolver = qa;
      var ya = function() {
        return function(b) {
          this.methodInfo = b;
        };
      }();
      a.ActivationInfo = ya;
      a.HasNext2Info = function() {
        return function(b, a) {
          this.object = b;
          this.index = a;
        };
      }();
      a.sliceArguments = U;
      a.canCompile = ba;
      a.shouldCompile = R;
      a.forceCompile = N;
      a.CODE_CACHE = Object.create(null);
      a.searchCodeCache = Z;
      a.createInterpretedFunction = X;
      a.debugName = function(b) {
        return d.isFunction(b) ? b.name : b;
      };
      a.createCompiledFunction = ia;
      a.createFunction = ga;
      a.ensureFunctionIsInitialized = ca;
      a.getTraitFunction = da;
      a.createClass = function(b, e, f) {
        var c = b.instanceInfo, g = b.abc.applicationDomain, n = W.getName(c.name);
        k.enterTimeline("createClass", {className:n, classInfo:b});
        e = c.isInterface() ? d.AVM2.AS.createInterface(b) : d.AVM2.AS.createClass(b, e, f);
        a.traceClasses.value && (g.loadedClasses.push(e), g.traceLoadedClasses());
        if (c.isInterface()) {
          return k.leaveTimeline(), e;
        }
        g.onMessage.notify1("classCreated", e);
        b.classObject = e;
        k.enterTimeline("staticInitializer");
        ga(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 c = a[e];
          c.isConst() && (c = W.getQualifiedName(c.name), function(a, e) {
            Object.defineProperty(b, a, {configurable:!1, enumerable:!1, get:function() {
              return e;
            }, set:function() {
              P("ReferenceError", k.Errors.ConstWriteError, a);
            }});
          }(c, b[c]));
        }
      };
      a.applyType = function(b, a, e) {
        a = a.classInfo.instanceInfo.name.name;
        if ("Vector" === a) {
          e = e[0];
          if (!ta(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 W(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, createFunction = Shumway.AVM2.Runtime.createFunction, createName = Shumway.AVM2.Runtime.createName;
(function(d) {
  (function(k) {
    (function(a) {
      var r = d.AVM2.ABC.Multiname, v = d.ObjectUtilities.boxValue, u = function() {
        function a(l, c, h) {
          void 0 === h && (h = !1);
          this.parent = l;
          this.object = v(c);
          this.global = l ? l.global : this;
          this.isWith = h;
          this.cache = Object.create(null);
        }
        a.prototype.findDepth = function(a) {
          for (var c = this, h = 0;c;) {
            if (c.object === a) {
              return h;
            }
            h++;
            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, h, p, s, m) {
          k.countTimeline("findScopeProperty");
          var g, f;
          f = a ? 1 < a.length ? a.runtimeId + "$" + c : a[0].qualifiedName + "$" + c : c;
          if (!m && (g = this.cache[f])) {
            return g;
          }
          if (this.object.asHasPropertyInternal(a, c, h)) {
            return this.isWith ? this.object : this.cache[f] = this.object;
          }
          if (this.parent) {
            return this.cache[f] = this.parent.findScopeProperty(a, c, h, p, s, m);
          }
          if (m) {
            return null;
          }
          if (g = p.abc.applicationDomain.findDomainProperty(new r(a, c, h), s, !0)) {
            return g;
          }
          s && d.Debug.unexpected("Cannot find property " + c);
          return this.global.object;
        };
        return a;
      }();
      a.Scope = u;
      a.bindFreeMethodScope = function(a, d) {
        var c = a.freeMethod;
        if (a.lastBoundMethod && a.lastBoundMethod.scope === d) {
          return a.lastBoundMethod.boundMethod;
        }
        var h, p = d.global.object;
        if (!a.hasOptional() && !a.needsArguments() && !a.needsRest()) {
          switch(a.parameters.length) {
            case 0:
              h = function() {
                return c.call(this === jsGlobal ? p : this, d);
              };
              break;
            case 1:
              h = function(a) {
                return c.call(this === jsGlobal ? p : this, d, a);
              };
              break;
            case 2:
              h = function(a, h) {
                return c.call(this === jsGlobal ? p : this, d, a, h);
              };
              break;
            case 3:
              h = function(a, h, g) {
                return c.call(this === jsGlobal ? p : this, d, a, h, g);
              };
          }
        }
        h || (h = function() {
          for (var a = [d], p = 0;p < arguments.length;p++) {
            a.push(arguments[p]);
          }
          return c.apply(this === jsGlobal ? d.global.object : this, a);
        });
        h.methodInfo = a;
        h.instanceConstructor = h;
        a.lastBoundMethod = {scope:d, boundMethod:h};
        return h;
      };
    })(k.Runtime || (k.Runtime = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
var Scope = Shumway.AVM2.Runtime.Scope;
(function(d) {
  (function(k) {
    (function(a) {
      var r = d.AVM2.ABC.Multiname, k = d.ObjectUtilities.createMap, u = d.ObjectUtilities.cloneObject, t = d.ObjectUtilities.copyProperties, l = d.ObjectUtilities.defineNonEnumerableProperty, c = d.ObjectUtilities.defineNonEnumerableGetter, h = d.FunctionUtilities.makeForwardingGetter, p = d.ArrayUtilities.pushUnique, s = 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 = s;
      var m = function() {
        return function(b, a, e, f) {
          this.name = b;
          this.isConst = a;
          this.type = e;
          this.trait = f;
        };
      }();
      a.SlotInfo = m;
      var g = function() {
        return function() {
          this.byID = k();
          this.byQN = k();
        };
      }();
      a.SlotInfoMap = g;
      var f = function() {
        function b() {
          this.map = k();
          this.slots = [];
          this.nextSlotId = 1;
        }
        b.prototype.assignNextSlot = function(b) {
          b.slotId ? this.nextSlotId = b.slotId + 1 : b.slotId = this.nextSlotId++;
          this.slots[b.slotId] = b;
        };
        b.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();
          b.writeArray(this.slots);
          b.outdent();
        };
        b.prototype.applyTo = function(b, f, n) {
          void 0 === n && (n = !1);
          n || (l(f, a.VM_SLOTS, new g), l(f, a.VM_BINDINGS, []), l(f, a.VM_OPEN_METHODS, k()), l(f, "bindings", this), l(f, "resolutionMap", []));
          q && q.greenLn("Applying Traits" + (n ? " (Append)" : ""));
          for (var d in this.map) {
            var u = this.map[d];
            n = u.trait;
            var t = r.getQualifiedName(n.name);
            if (n.isSlot() || n.isConst() || n.isClass()) {
              u = void 0;
              if (n.isSlot() || n.isConst()) {
                if (n.hasDefaultValue) {
                  u = n.value;
                } else {
                  if (n.typeName) {
                    var J = b.findClassInfo(n.typeName);
                    J && (u = J.defaultValue);
                  }
                }
              }
              d !== t ? (q && q.yellowLn("Binding Trait: " + d + " -> " + t), c(f, d, h(t)), p(f.asBindings, d)) : (q && q.greenLn("Applying Trait " + n.kindName() + ": " + n), l(f, t, u), p(f.asBindings, t), u = new m(t, n.isConst(), n.typeName ? b.getProperty(n.typeName, !1, !1) : null, n), f.asSlots.byID[n.slotId] = u, f.asSlots.byQN[t] = u);
            } else {
              if (n.isMethod() || n.isGetter() || n.isSetter()) {
                if (n.isGetter() || n.isSetter()) {
                  d = d.substring(s.KEY_PREFIX_LENGTH);
                }
                d !== t ? q && q.yellowLn("Binding Trait: " + d + " -> " + t) : q && q.greenLn("Applying Trait " + n.kindName() + ": " + n);
                p(f.asBindings, d);
                a.applyMethodTrait(d, f, u, !(this instanceof e));
              }
            }
          }
        };
        return b;
      }();
      a.Bindings = f;
      var b = function(b) {
        function a(e) {
          b.call(this);
          this.methodInfo = e;
          e = e.traits;
          for (var f = 0;f < e.length;f++) {
            var c = e[f], g = r.getQualifiedName(c.name);
            this.map[g] = new s(c);
            this.assignNextSlot(c);
          }
        }
        __extends(a, b);
        return a;
      }(f);
      a.ActivationBindings = b;
      b = function(b) {
        function a(e, f) {
          b.call(this);
          var c = r.getQualifiedName(f.name);
          this.map[c] = new s(f);
          this.assignNextSlot(f);
        }
        __extends(a, b);
        return a;
      }(f);
      a.CatchBindings = b;
      var e = function(b) {
        function a(e, f) {
          b.call(this);
          this.scope = f;
          this.scriptInfo = e;
          for (var c = e.traits, g = 0;g < c.length;g++) {
            var q = c[g], p = r.getQualifiedName(q.name), p = s.getKey(p, q), p = this.map[p] = new s(q);
            (q.isSlot() || q.isConst() || q.isClass()) && this.assignNextSlot(q);
            q.isClass() && q.metadata && q.metadata.native && (q.classInfo.native = q.metadata.native);
            if (q.isMethod() || q.isGetter() || q.isSetter()) {
              p.scope = this.scope;
            }
          }
        }
        __extends(a, b);
        return a;
      }(f);
      a.ScriptBindings = e;
      b = function(b) {
        function a(e, f, c) {
          b.call(this);
          this.scope = f;
          this.natives = c;
          this.classInfo = e;
          e = e.traits;
          for (f = 0;f < e.length;f++) {
            c = e[f];
            var g = r.getQualifiedName(c.name), g = s.getKey(g, c), g = this.map[g] = new s(c);
            (c.isSlot() || c.isConst()) && this.assignNextSlot(c);
            if (c.isMethod() || c.isGetter() || c.isSetter()) {
              g.scope = this.scope, g.natives = this.natives;
            }
          }
        }
        __extends(a, b);
        return a;
      }(f);
      a.ClassBindings = b;
      f = function(b) {
        function a(e, f, c, g) {
          b.call(this);
          this.scope = c;
          this.natives = g;
          this.parent = e;
          this.instanceInfo = f;
          this.implementedInterfaces = e ? u(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, c, g, n, q;
          if (b) {
            for (g in b.map) {
              c = b.map[g], n = c.trait, f[g] = c, n.isProtected() && (q = r.getQualifiedName(new r([a.protectedNs], n.name.getName(), 0)), q = s.getKey(q, n), f[q] = c);
            }
          }
          var p = a.traits;
          for (b = 0;b < p.length;b++) {
            n = p[b];
            c = r.getQualifiedName(n.name);
            g = s.getKey(c, n);
            c = new s(n);
            e = f;
            q = c;
            var h = e[g];
            e[g] = q;
            if (n.isProtected()) {
              for (e = this.parent;e && e.instanceInfo.protectedNs;) {
                q = r.getQualifiedName(new r([e.instanceInfo.protectedNs], n.name.getName(), 0)), q = s.getKey(q, n), q in f && (f[q] = c), e = e.parent;
              }
            }
            (n.isSlot() || n.isConst()) && this.assignNextSlot(n);
            if (n.isMethod() || n.isGetter() || n.isSetter()) {
              c.scope = this.scope, c.natives = this.natives;
            }
          }
          n = a.abc.applicationDomain;
          c = a.interfaces;
          for (b = 0;b < c.length;b++) {
            p = n.getProperty(c[b], !0, !0), t(this.implementedInterfaces, p.interfaceBindings.implementedInterfaces), this.implementedInterfaces[r.getQualifiedName(p.classInfo.instanceInfo.name)] = p;
          }
          for (var m in this.implementedInterfaces) {
            p = this.implementedInterfaces[m];
            e = p.interfaceBindings;
            for (var d in e.map) {
              b = e.map[d], a.isInterface() ? f[d] = b : (c = r.getPublicQualifiedName(b.trait.name.getName()), g = s.getKey(c, b.trait), f[d] = f[g]);
            }
          }
        };
        a.prototype.toString = function() {
          return this.instanceInfo.toString();
        };
        return a;
      }(f);
      a.InstanceBindings = f;
      var q = 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__ = g.prototype;
          } else {
            for (f in g.prototype) {
              b[f] = g.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 (!g.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 u(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 t(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 (!F[e.charAt(f)]) {
            throw new SyntaxError("Unknown regex flag " + e.charAt(f));
          }
        }
        return{pattern:a, flags:e};
      }
      function h(b) {
        b = b || {};
        t(b, "String") && (b = g.forEach(b, /[^\s,]+/, function(b) {
          this[b] = !0;
        }, {}));
        return b;
      }
      function p(b) {
        if (!/^[\w$]$/.test(b)) {
          throw Error("Flag must be a single character A-Za-z0-9_$");
        }
        F[b] = !0;
      }
      function s(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 g, 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 = {}, q = {}, n = {}, x = [], L = {"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]/}, A = /\$(?:{([\w$]+)}|([\d$&`']))/g, 
      H = void 0 === b.exec.call(/()??/, "")[1], K = void 0 !== RegExp.prototype.sticky, F = {g:!0, i:!0, m:!0, y:K}, J = {}.toString, M;
      g = function(e, f) {
        var q = {hasNamedCapture:!1, captureNames:[]}, p = "default", h = "", m = 0, s, d;
        if (g.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 (!n[d]) {
          s = c(e, f);
          e = s.pattern;
          for (f = s.flags;m < e.length;) {
            do {
              s = e;
              for (var l = f, r = m, u = p, t = q, A = x.length, K = null, H = void 0, F = void 0;A--;) {
                if (F = x[A], (F.scope === u || "all" === F.scope) && (!F.flag || -1 < l.indexOf(F.flag)) && (H = g.exec(s, F.regex, r, "sticky"))) {
                  K = {matchLength:H[0].length, output:F.handler.call(t, H, u, l), reparse:F.reparse};
                  break;
                }
              }
              (s = K) && s.reparse && (e = e.slice(0, m) + s.output + e.slice(m + s.matchLength));
            } while (s && s.reparse);
            s ? (h += s.output, m += s.matchLength || 1) : (s = g.exec(e, L[p], m, "sticky")[0], h += s, m += s.length, "[" === s && "default" === p ? p = "class" : "]" === s && "class" === p && (p = "default"));
          }
          n[d] = {pattern:b.replace.call(h, /\(\?:\)(?=\(\?:\))|^\(\?:\)|\(\?:\)$/g, ""), flags:b.replace.call(f, /[^gimy]+/g, ""), captures:q.hasNamedCapture ? q.captureNames : null};
        }
        d = n[d];
        return a(new RegExp(d.pattern, d.flags), d.captures, !0);
      };
      g.prototype = RegExp();
      g.version = "3.0.0-pre";
      g.addToken = function(a, e, f) {
        f = f || {};
        var c = f.optionalFlags, n;
        f.flag && p(f.flag);
        if (c) {
          for (c = b.split.call(c, ""), n = 0;n < c.length;++n) {
            p(c[n]);
          }
        }
        x.push({regex:k(a, {add:"g" + (K ? "y" : "")}), handler:e, scope:f.scope || "default", flag:f.flag, reparse:f.reparse});
        g.cache.flush("patterns");
      };
      g.cache = function(b, a) {
        var e = b + "***" + (a || "");
        return q[e] || (q[e] = g(b, a));
      };
      g.cache.flush = function(b) {
        "patterns" === b ? n = {} : q = {};
      };
      g.escape = function(a) {
        return b.replace.call(m(a), /[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
      };
      g.exec = function(b, a, f, c) {
        var g = "g";
        K && (c || a.sticky && !1 !== c) && (g += "y");
        a.xregexp = a.xregexp || {captureNames:null};
        g = a.xregexp[g] || (a.xregexp[g] = k(a, {add:g, remove:!1 === c ? "y" : ""}));
        g.lastIndex = f = f || 0;
        b = e.exec.call(g, b);
        c && b && b.index !== f && (b = null);
        a.global && (a.lastIndex = b ? g.lastIndex : 0);
        return b;
      };
      g.forEach = function(b, a, e, f) {
        for (var c = 0, n = -1;c = g.exec(b, a, c);) {
          e.call(f, c, ++n, b, a), c = c.index + (c[0].length || 1);
        }
        return f;
      };
      g.globalize = function(b) {
        return k(b, {add:"g", addProto:!0});
      };
      g.install = function() {
        var b = {natives:!0}, b = h(b);
        !f.astral && b.astral && (g.cache.flush("patterns"), f.astral = !0);
        !f.natives && b.natives && s(!0);
      };
      g.isInstalled = function(b) {
        return!!f[b];
      };
      g.isRegExp = function(b) {
        return "[object RegExp]" === J.call(b);
      };
      g.match = function(a, e, f) {
        var c = e.global && "one" !== f || "all" === f, g = (c ? "g" : "") + (e.sticky ? "y" : "");
        e.xregexp = e.xregexp || {captureNames:null};
        g = e.xregexp[g || "noGY"] || (e.xregexp[g || "noGY"] = k(e, {add:g, remove:"one" === f ? "g" : ""}));
        a = b.match.call(m(a), g);
        e.global && (e.lastIndex = "one" === f && a ? a.index + a[0].length : 0);
        return c ? a || [] : a && a[0];
      };
      g.matchChain = function(b, a) {
        return function y(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);
              }
              n.push(b[c.backref] || "");
            } else {
              n.push(b[0]);
            }
          }
          var c = a[e].regex ? a[e] : {regex:a[e]}, n = [], q;
          for (q = 0;q < b.length;++q) {
            g.forEach(b[q], c.regex, f);
          }
          return e !== a.length - 1 && n.length ? y(n, e + 1) : n;
        }([b], 0);
      };
      g.replace = function(b, a, f, c) {
        var n = g.isRegExp(a), q = a.global && "one" !== c || "all" === c, p = (q ? "g" : "") + (a.sticky ? "y" : ""), h = a;
        n ? (a.xregexp = a.xregexp || {captureNames:null}, h = a.xregexp[p || "noGY"] || (a.xregexp[p || "noGY"] = k(a, {add:p, remove:"one" === c ? "g" : ""}))) : q && (h = new RegExp(g.escape(String(a)), "g"));
        b = e.replace.call(m(b), h, f);
        n && a.global && (a.lastIndex = 0);
        return b;
      };
      g.replaceEach = function(b, a) {
        var e, f;
        for (e = 0;e < a.length;++e) {
          f = a[e], b = g.replace(b, f[0], f[1], f[2]);
        }
        return b;
      };
      g.split = function(b, a, f) {
        return e.split.call(m(b), a, f);
      };
      g.test = function(b, a, e, f) {
        return!!g.exec(b, a, e, f);
      };
      g.uninstall = function(b) {
        b = h(b);
        f.astral && b.astral && (g.cache.flush("patterns"), f.astral = !1);
        f.natives && b.natives && s(!1);
      };
      g.union = function(a, e) {
        function f(b, a, e) {
          var c = h[q - p];
          if (a) {
            if (++q, c) {
              return "(?<" + c + ">";
            }
          } else {
            if (e) {
              return "\\" + (+e + p);
            }
          }
          return b;
        }
        var c = /(\()(?!\?)|\\([1-9]\d*)|\\[\s\S]|\[(?:[^\\\]]|\\[\s\S])*]/g, n = [], q = 0, p, h, m, s;
        if (!t(a, "Array") || !a.length) {
          throw new TypeError("Must provide a nonempty array of patterns to merge");
        }
        for (s = 0;s < a.length;++s) {
          m = a[s], g.isRegExp(m) ? (p = q, h = m.xregexp && m.xregexp.captureNames || [], n.push(b.replace.call(g(m.source).source, c, f))) : n.push(g.escape(m));
        }
        return g(n.join("|"), e);
      };
      e.exec = function(a) {
        var e = this.lastIndex, f = b.exec.apply(this, arguments), c, g;
        if (f) {
          !H && 1 < f.length && -1 < u(f, "") && (c = k(this, {remove:"g"}), b.replace.call(String(a).slice(f.index), c, 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 (g = 1;g < f.length;++g) {
              (c = this.xregexp.captureNames[g - 1]) && (f[c] = f[g]);
            }
          }
          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 (!g.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 = g.isRegExp(a), c, n, q;
        f ? (a.xregexp && (n = a.xregexp.captureNames), c = a.lastIndex) : a += "";
        q = t(e, "Function") ? b.replace.call(String(this), a, function() {
          var b = arguments, c;
          if (n) {
            for (b[0] = new String(b[0]), c = 0;c < n.length;++c) {
              n[c] && (b[0][n[c]] = b[c + 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), A, function(b, e, f) {
            if (e) {
              f = +e;
              if (f <= a.length - 3) {
                return a[f] || "";
              }
              f = n ? u(n, 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 q;
      };
      e.split = function(a, e) {
        if (!g.isRegExp(a)) {
          return b.split.apply(this, arguments);
        }
        var f = String(this), c = [], n = a.lastIndex, q = 0, p;
        e = (void 0 === e ? -1 : e) >>> 0;
        g.forEach(f, a, function(b) {
          b.index + b[0].length > q && (c.push(f.slice(q, b.index)), 1 < b.length && b.index < f.length && Array.prototype.push.apply(c, b.slice(1)), p = b[0].length, q = b.index + p);
        });
        q === f.length ? b.test.call(a, "") && !p || c.push("") : c.push(f.slice(q));
        a.lastIndex = n;
        return c.length > e ? c.slice(0, e) : c;
      };
      M = g.addToken;
      M(/\\([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"});
      M(/\[(\^?)]/, function(b) {
        return b[1] ? "[\\s\\S]" : "\\b\\B";
      });
      M(/\(\?#[^)]*\)/, function(b, a, e) {
        return l(b.input, b.index + b[0].length, e) ? "" : "(?:)";
      });
      M(/\s+|#.*/, function(b, a, e) {
        return l(b.input, b.index + b[0].length, e) ? "" : "(?:)";
      }, {flag:"x"});
      M(/\./, function() {
        return "[\\s\\S]";
      }, {flag:"s"});
      M(/\\k<([\w$]+)>/, function(b) {
        var a = isNaN(b[1]) ? u(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)) ? "" : "(?:)");
      });
      M(/\\(\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"});
      M(/\(\?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 < u(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 "(";
      });
      M(/\((?!\?)/, function(b, a, e) {
        if (-1 < e.indexOf("n")) {
          return "(?:";
        }
        this.captureNames.push(null);
        return "(";
      }, {optionalFlags:"n"});
      return g;
    }();
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
Shumway.AVM2.XRegExp.install();
(function(d) {
  (function(k) {
    (function(a) {
      function r(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;
        }
      }
      function v(b) {
        for (var a = b.split("."), e = ea, f = 0, c = a.length;f < c;f++) {
          e = e && e[a[f]];
        }
        e || (e = ca[b]);
        return e;
      }
      var u = d.AVM2.ABC.Multiname, t = d.AVM2.Runtime.Scope, l = d.ObjectUtilities.hasOwnProperty, c = d.ObjectUtilities.defineNonEnumerableProperty, h = d.isNumber, p = d.isNullOrUndefined, s = d.ObjectUtilities.isPrototypeWriteable, m = d.ObjectUtilities.getOwnPropertyDescriptor, g = d.Debug.notImplemented, f = d.AVM2.Runtime.asCoerceString, b = d.AVM2.Runtime.createFunction, e = d.AVM2.Runtime, q = d.ObjectUtilities.boxValue, n = d.AVM2.Runtime.ClassBindings, x = d.AVM2.Runtime.InstanceBindings, 
      L = d.AVM2.Runtime.asCompare;
      (function(b) {
        b[b.NONE = 0] = "NONE";
        b[b.OWN_INITIALIZE = 1] = "OWN_INITIALIZE";
        b[b.SUPER_INITIALIZE = 2] = "SUPER_INITIALIZE";
      })(a.InitializationFlags || (a.InitializationFlags = {}));
      var A = function() {
        function b() {
        }
        b.morphIntoASClass = function(b) {
          this.classInfo = b;
          this.__proto__ = K.prototype;
        };
        b.create = function(b, a, e) {
          K.create(b, a, this.instanceConstructor);
        };
        b.initializeFrom = function(b) {
          return F.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() {
          F.verify.call(this);
        };
        b.trace = function(b) {
          F.trace.call(this, b);
        };
        b.getQualifiedClassName = function() {
          return F.getQualifiedClassName.call(this);
        };
        b._setPropertyIsEnumerable = function(b, a, e) {
          a = u.getPublicQualifiedName(a);
          e = m(b, a);
          e.enumerable = !1;
          Object.defineProperty(b, a, e);
        };
        b._dontEnumPrototype = function(b) {
          for (var a in b) {
            if (u.isPublicQualifiedName(a)) {
              var e = m(b, a);
              e.enumerable = !1;
              Object.defineProperty(b, a, e);
            }
          }
        };
        b._init = function() {
          this.dynamicPrototype.asSetPublicProperty("hasOwnProperty", b.prototype.native_hasOwnProperty);
          this.dynamicPrototype.asSetPublicProperty("propertyIsEnumerable", b.prototype.native_propertyIsEnumerable);
          this.dynamicPrototype.asSetPublicProperty("setPropertyIsEnumerable", b.prototype.setPropertyIsEnumerable);
          this.dynamicPrototype.asSetPublicProperty("isPrototypeOf", b.prototype.native_isPrototypeOf);
          this.dynamicPrototype.asSetPublicProperty("toString", b.prototype.toString);
          this.dynamicPrototype.asSetPublicProperty("valueOf", b.prototype.valueOf);
          b._dontEnumPrototype(this.dynamicPrototype);
        };
        b.prototype.native_isPrototypeOf = function(b) {
          g("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.prototype.toString = function() {
          var b = q(this);
          return b instanceof K ? d.StringUtilities.concat3("[class ", b.classInfo.instanceInfo.name.name, "]") : d.StringUtilities.concat3("[object ", b.class.classInfo.instanceInfo.name.name, "]");
        };
        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.initializationFlags = 0;
        b.call = Function.prototype.call;
        b.apply = Function.prototype.apply;
        b.coerce = e.asCoerceObject;
        b.defineProperty = Object.defineProperty;
        return b;
      }();
      a.ASObject = A;
      var H = 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;
        a.initializationFlags = 0;
        return a;
      }(A);
      a.ASNative = H;
      var K = function(b) {
        function a(b) {
          this.classInfo = b;
          this.instanceNatives = this.staticNatives = null;
          this.initializationFlags = 0;
          this.defaultValue = null;
        }
        __extends(a, b);
        a.configureBuiltinPrototype = function(b, a) {
          b.baseClass = a;
          b.dynamicPrototype = b.traitsPrototype = b.instanceConstructor.prototype;
        };
        a.configurePrototype = function(b, a) {
          b.baseClass = 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 c = 0;c < f.length;c++) {
            var g = [f[c].typeScriptPrototype];
            f[c].instanceNatives && d.ArrayUtilities.pushMany(g, f[c].instanceNatives);
            for (var n = 0;n < g.length;n++) {
              var q = g[n], p;
              for (p in q) {
                if (!(0 < c && "toString" === p) && l(q, p) && !l(e, p)) {
                  var h = Object.getOwnPropertyDescriptor(q, p);
                  try {
                    Object.defineProperty(e, p, h);
                  } catch (m) {
                  }
                }
              }
            }
          }
        };
        a.create = function(b, e, f) {
          b.typeScriptPrototype = b.prototype;
          b.instanceConstructor && !s(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;
          c(b.instanceConstructor.prototype, "class", b);
          c(b.dynamicPrototype, u.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, c(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, f) {
            for (var c = 0;c < e.length;c++) {
              var n = e[c], q;
              a: {
                q = b;
                for (var p = n.name.name, h = 0;h < q.length;h++) {
                  var m = q[h];
                  if (0 <= m.indexOf(p)) {
                    var s = "!" === m[m.length - 1];
                    s && (m = m.slice(0, m.length - 1));
                    if (p === m) {
                      q = s;
                      break a;
                    }
                  }
                }
                q = !1;
              }
              if (q) {
                if (n.isConst()) {
                  g("Don't link against const traits.");
                  break;
                }
                q = n.name.name;
                p = u.getQualifiedName(n.name);
                n.isSlot() ? Object.defineProperty(f, q, {get:new Function("", "return this." + p + "//# sourceURL=get-" + p + ".as"), set:new Function("v", "this." + p + " = v;//# sourceURL=set-" + p + ".as")}) : n.isMethod() ? f[q] = f.asOpenMethods[p] : n.isGetter() ? Object.defineProperty(f, q, {get:new Function("", "return this." + p + "//# sourceURL=get-" + p + ".as")}) : g(n);
              }
            }
          }
          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 = q(b);
          if (this.isInterface()) {
            if (null === b || "object" !== typeof b) {
              return!1;
            }
            var a = u.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 c = 0;c < a.length;c++) {
              if (e(a[c], 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 c = 0;c < a.length;c++) {
              for (var g = 0 === c, n = 0;n < a[c].length;n++) {
                var q = a[c][n], p = r(q.name.name);
                if (q.isMethodOrAccessor() && q.methodInfo.isNative()) {
                  var h = g ? e : f;
                  q.isMethod() ? b(h, d.ObjectUtilities.hasOwnProperty, p) : q.isGetter() ? b(h, d.ObjectUtilities.hasOwnGetter, p) : q.isSetter() && b(h, d.ObjectUtilities.hasOwnSetter, p);
                }
              }
            }
            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.labelCounter = 0;
        return a;
      }(A);
      a.ASClass = K;
      var F = K.prototype;
      F.call = Function.prototype.call;
      F.apply = Function.prototype.apply;
      var J = 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(e.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];
        return a;
      }(A);
      a.ASFunction = J;
      var M = function(b) {
        function a(b) {
        }
        __extends(a, b);
        a.instanceConstructor = Boolean;
        a.callableConstructor = a.instanceConstructor;
        a.staticNatives = null;
        a.instanceNatives = null;
        a.coerce = e.asCoerceBoolean;
        return a;
      }(A);
      a.ASBoolean = M;
      M.prototype.toString = Boolean.prototype.toString;
      M.prototype.valueOf = Boolean.prototype.valueOf;
      var D = function(b) {
        function a(b, e) {
          var f = d.FunctionUtilities.bindSafely(e, b);
          c(this, "call", f.call.bind(f));
          c(this, "apply", f.apply.bind(f));
        }
        __extends(a, b);
        a.prototype.toString = function() {
          return "function Function() {}";
        };
        a.staticNatives = null;
        a.instanceNatives = null;
        return a.instanceConstructor = a;
      }(J);
      a.ASMethodClosure = D;
      var B = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        a._numberToString = function(b, a) {
          return Number(b).toString(a | 0);
        };
        a._minValue = function() {
          return Number.MIN_VALUE;
        };
        a.instanceConstructor = Number;
        a.callableConstructor = a.instanceConstructor;
        a.staticNatives = [Math];
        a.instanceNatives = [Number.prototype];
        a.defaultValue = Number(0);
        a.coerce = e.asCoerceNumber;
        return a;
      }(A);
      a.ASNumber = B;
      var E = 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 h(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 = e.asCoerceInt;
        return a;
      }(A);
      a.ASInt = E;
      var y = 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 h(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 = e.asCoerceUint;
        return a;
      }(A);
      a.ASUint = y;
      var z = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        Object.defineProperty(a.prototype, "native_length", {get:function() {
          return this.length;
        }, enumerable:!0, configurable:!0});
        a.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);
        };
        a.prototype.search = function(b) {
          return b instanceof k.XRegExp ? this.search(b) : this.indexOf(f(b));
        };
        a.prototype.toUpperCase = function() {
          var b = String.prototype.toUpperCase.apply(this);
          return b = b.replace(/\u039C/g, String.fromCharCode(181));
        };
        a.prototype.toLocaleUpperCase = function() {
          var b = String.prototype.toLocaleUpperCase.apply(this);
          return b = b.replace(/\u039C/g, String.fromCharCode(181));
        };
        a.instanceConstructor = String;
        a.callableConstructor = a.instanceConstructor;
        a.staticNatives = [String];
        a.instanceNatives = [String.prototype];
        a.coerce = e.asCoerceString;
        return a;
      }(A);
      a.ASString = z;
      a.arraySort = function(b, a) {
        if (0 === a.length) {
          return b.sort();
        }
        var e, f = 0;
        a[0] instanceof Function ? e = a[0] : h(a[0]) && (f = a[0]);
        h(a[1]) && (f = a[1]);
        b.sort(function(b, a) {
          return L(b, a, f, e);
        });
        return b;
      };
      var G = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        a.prototype.toLocaleString = function() {
          for (var b = a.coerce(this), e = "", f = 0, c = b.length;f < c;f++) {
            var g = b[f];
            null !== g && void 0 !== g && (e += g.toLocaleString());
            f + 1 < c && (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] : h(arguments[0]) && (a = arguments[0]);
          h(arguments[1]) && (a = arguments[1]);
          this.sort(function(f, c) {
            return e.asCompare(f, c, a, b);
          });
          return this;
        };
        a.prototype.sortOn = function(b, f) {
          d.isString(b) && (b = [b]);
          p(f) ? f = [] : h(f) && (f = [f]);
          for (var c = b.length - 1;0 <= c;c--) {
            var g = u.getPublicQualifiedName(b[c]);
            if (a.CACHE_NUMERIC_COMPARATORS && f[c] & 16) {
              var n = "var x = +(a." + g + "), y = +(b." + g + ");", n = f[c] & 2 ? n + "return x < y ? 1 : (x > y ? -1 : 0);" : n + "return x < y ? -1 : (x > y ? 1 : 0);", q = a.numericComparatorCache[n];
              q || (q = a.numericComparatorCache[n] = new Function("a", "b", n));
              this.sort(q);
            } else {
              this.sort(function(b, a) {
                return e.asCompare(b[g], a[g], f[c] | 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() {
          var b = Array.prototype, e = a.prototype;
          c(b, "$Bgjoin", b.join);
          c(b, "$BgtoString", b.join);
          c(b, "$BgtoLocaleString", e.toLocaleString);
          c(b, "$Bgpop", b.pop);
          c(b, "$Bgpush", b.push);
          c(b, "$Bgreverse", b.reverse);
          c(b, "$Bgconcat", b.concat);
          c(b, "$Bgsplice", e.splice);
          c(b, "$Bgslice", b.slice);
          c(b, "$Bgshift", b.shift);
          c(b, "$Bgunshift", b.unshift);
          c(b, "$BgindexOf", b.indexOf);
          c(b, "$BglastIndexOf", b.lastIndexOf);
          c(b, "$BgforEach", b.forEach);
          c(b, "$Bgmap", b.map);
          c(b, "$Bgfilter", b.filter);
          c(b, "$Bgsome", b.some);
          c(b, "$Bgevery", e.every);
          c(b, "$Bgsort", e.sort);
          c(b, "$BgsortOn", e.sortOn);
        };
        a.CACHE_NUMERIC_COMPARATORS = !0;
        a.numericComparatorCache = Object.create(null);
        return a;
      }(A);
      a.ASArray = G;
      var C = 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;
      }(H);
      a.ASVector = C;
      var I = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        a.transformJSValueToAS = function(b, e) {
          if ("object" !== typeof b || p(b)) {
            return b;
          }
          for (var f = Object.keys(b), c = Array.isArray(b) ? [] : {}, g = 0;g < f.length;g++) {
            var n = b[f[g]];
            e && (n = a.transformJSValueToAS(n, !0));
            c.asSetPublicProperty(f[g], n);
          }
          return c;
        };
        a.transformASValueToJS = function(b, e) {
          if ("object" !== typeof b || p(b)) {
            return b;
          }
          for (var f = Object.keys(b), c = Array.isArray(b) ? [] : {}, g = 0;g < f.length;g++) {
            var n = f[g], q = n;
            d.isNumeric(n) || (q = u.getNameFromPublicQualifiedName(n));
            n = b[n];
            e && (n = a.transformASValueToJS(n, !0));
            c[q] = n;
          }
          return c;
        };
        a.parseCore = function(b) {
          b = f(b);
          return a.transformJSValueToAS(JSON.parse(b), !0);
        };
        a.stringifySpecializedToString = function(b, e, f, c) {
          return JSON.stringify(a.transformASValueToJS(b, !0), f, c);
        };
        a.instanceConstructor = a;
        a.staticNatives = null;
        a.instanceNatives = null;
        return a;
      }(A);
      a.ASJSON = I;
      var P = function(b) {
        function a(b, e) {
          g("ASError");
        }
        __extends(a, b);
        a.prototype.getStackTrace = function() {
          return null;
        };
        a.instanceConstructor = null;
        a.staticNatives = null;
        a.instanceNatives = null;
        a.getErrorMessage = d.AVM2.getErrorMessage;
        return a;
      }(H);
      a.ASError = P;
      var T = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        return a;
      }(P);
      a.ASDefinitionError = T;
      var O = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        return a;
      }(P);
      a.ASEvalError = O;
      var Q = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        return a;
      }(P);
      a.ASRangeError = Q;
      var S = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        return a;
      }(P);
      a.ASReferenceError = S;
      var V = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        return a;
      }(P);
      a.ASSecurityError = V;
      var aa = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        return a;
      }(P);
      a.ASSyntaxError = aa;
      var $ = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        return a;
      }(P);
      a.ASTypeError = $;
      var w = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        return a;
      }(P);
      a.ASURIError = w;
      var U = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        return a;
      }(P);
      a.ASVerifyError = U;
      var ba = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        return a;
      }(P);
      a.ASUninitializedError = ba;
      var R = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        return a;
      }(P);
      a.ASArgumentError = R;
      var N = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        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 c = e[f];
            d.isNumeric(c) || void 0 === a[c] && (a[c] = "");
          }
          d.AVM2.Runtime.publicizeProperties(a);
          return a;
        };
        a.instanceConstructor = k.XRegExp;
        a.staticNatives = [k.XRegExp];
        a.instanceNatives = [k.XRegExp.prototype];
        return a;
      }(A);
      a.ASRegExp = N;
      var Z = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        a.staticNatives = [Math];
        return a;
      }(H);
      a.ASMath = Z;
      var fa = function(b) {
        function a() {
          b.apply(this, arguments);
        }
        __extends(a, b);
        a.staticNatives = [Date];
        a.instanceNatives = [Date.prototype];
        a.instanceConstructor = Date;
        return a;
      }(H);
      a.ASDate = fa;
      var X = d.ObjectUtilities.createMap(), ia = !1;
      a.initialize = function(b) {
        ia || (X.ObjectClass = A, X.Class = K, X.FunctionClass = J, X.BooleanClass = M, X.MethodClosureClass = D, X.NamespaceClass = a.ASNamespace, X.NumberClass = B, X.IntClass = E, X.UIntClass = y, X.StringClass = z, X.ArrayClass = G, X.VectorClass = C, X.ObjectVectorClass = a.GenericVector, X.IntVectorClass = a.Int32Vector, X.UIntVectorClass = a.Uint32Vector, X.DoubleVectorClass = a.Float64Vector, X.JSONClass = I, X.XMLClass = a.ASXML, X.XMLListClass = a.ASXMLList, X.QNameClass = a.ASQName, X.ErrorClass = 
        P, X.DefinitionErrorClass = T, X.EvalErrorClass = O, X.RangeErrorClass = Q, X.ReferenceErrorClass = S, X.SecurityErrorClass = V, X.SyntaxErrorClass = aa, X.TypeErrorClass = $, X.URIErrorClass = w, X.VerifyErrorClass = U, X.UninitializedErrorClass = ba, X.ArgumentErrorClass = R, X.DateClass = fa, X.MathClass = Z, X.RegExpClass = N, X.ProxyClass = a.flash.utils.OriginalProxy, X.DictionaryClass = a.flash.utils.OriginalDictionary, X.ByteArrayClass = a.flash.utils.OriginalByteArray, X.SystemClass = 
        a.flash.system.OriginalSystem, ia = !0);
      };
      var ga = d.ObjectUtilities.createMap(), ca = d.ObjectUtilities.createMap();
      a.registerNativeClass = function(b, a) {
        ga[b] = a;
      };
      a.registerNativeFunction = function(b, a) {
        ca[b] = a;
      };
      a.createInterface = function(b) {
        var a = b.instanceInfo;
        b = new K(b);
        b.interfaceBindings = new x(null, a, null, null);
        b.verify();
        return b;
      };
      var da = [];
      a.createClass = function(a, e, f) {
        var c = a.instanceInfo, g = a.abc.applicationDomain, q = a.native, p;
        q ? ((p = X[a.native.cls]) || (p = ga[a.native.cls]), p || d.Debug.unexpected("No native class for " + a.native.cls), p.morphIntoASClass(a), da && da.push(p)) : p = new K(a);
        f = new t(f, null);
        f.object = p;
        var h = null, h = c.init.isNative() ? p : b(c.init, f, !1, !1), m = null, s = null;
        q && (m = [p], p.staticNatives && d.ArrayUtilities.pushMany(m, p.staticNatives), s = [p.prototype], p.instanceNatives && d.ArrayUtilities.pushMany(s, p.instanceNatives));
        K.create(p, e, h);
        if ("Class" === a.instanceInfo.name.name) {
          for (q = 0;q < da.length;q++) {
            da[q].__proto__ = K.prototype;
          }
          da = null;
        }
        k.enterTimeline("InstanceBindings");
        p.instanceBindings = new x(e ? e.instanceBindings : null, c, f, s);
        p.instanceConstructor && (k.enterTimeline("applyTo"), p.instanceBindings.applyTo(g, p.traitsPrototype), k.leaveTimeline());
        k.leaveTimeline();
        k.enterTimeline("ClassBindings");
        p.classBindings = new n(a, f, m);
        k.enterTimeline("applyTo");
        p.classBindings.applyTo(g, p);
        p === K ? p.instanceBindings.applyTo(g, A, !0) : K.instanceBindings && K.instanceBindings.applyTo(g, p, !0);
        k.leaveTimeline();
        k.leaveTimeline();
        p.implementedInterfaces = p.instanceBindings.implementedInterfaces;
        k.enterTimeline("Configure");
        K.configureInitializers(p);
        K.linkSymbols(p);
        K.runClassInitializer(p);
        k.leaveTimeline();
        return p;
      };
      a.getMethodOrAccessorNative = function(b, a) {
        for (var e = r(u.getName(b.name)), f = 0;f < a.length;f++) {
          var c = a[f], g = e;
          l(c, "original_" + e) && (g = "original_" + e);
          !l(c, e) && l(c, "native_" + e) && (g = "native_" + e);
          if (l(c, g)) {
            return b.isAccessor() ? (e = m(c, g), e = b.isGetter() ? e.get : e.set) : e = c[g], e;
          }
        }
        d.Debug.warning("No native method for: " + b.kindName() + " " + b.methodInfo.holder + "::" + u.getQualifiedName(b.name) + ", make sure you've got the static keyword for static methods.");
        return null;
      };
      a.escapeNativeName = r;
      var ea;
      (function(b) {
        function a(b) {
          for (var e = {prototype:Object.create(null)}, f = Object.getOwnPropertyNames(b.prototype), c = 0;c < f.length;c++) {
            e.prototype[f[c]] = b.prototype[f[c]];
          }
          return e;
        }
        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.Original = {Date:a(b.Date), Array:a(Array), String:a(b.String), Number:a(b.Number), Boolean:a(b.Boolean)};
        b.print = function(b, a, e, f, c) {
          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 (E.isType(b)) {
            return "int";
          }
          b = q(b);
          return K.isType(b) ? b.getQualifiedClassName() : b.class.getQualifiedClassName();
        };
        b.getQualifiedSuperclassName = function(b) {
          if (p(b)) {
            return "null";
          }
          b = q(b);
          b = K.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);
        };
      })(ea = a.Natives || (a.Natives = {}));
      a.getNative = v;
      ca.unsafeJSNative = v;
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var r = d.AVM2.Runtime.asCoerceString, v = d.ObjectUtilities.defineNonEnumerableProperty, u = d.AVM2.Runtime.throwError, t = d.AVM2.Runtime.asCheckVectorGetNumericProperty, l = d.AVM2.Runtime.asCheckVectorSetNumericProperty, c = function(c) {
        function p(c, p, g) {
          void 0 === c && (c = 0);
          void 0 === p && (p = !1);
          void 0 === g && (g = a.ASObject);
          c >>>= 0;
          this._fixed = !!p;
          this._buffer = Array(c);
          this._defaultValue = (this._type = g) ? g.defaultValue : null;
          this._fill(c, this._defaultValue);
        }
        __extends(p, c);
        p.prototype.newThisType = function() {
          return new p;
        };
        p.defaultCompareFunction = function(a, c) {
          return String(a).localeCompare(String(c));
        };
        p.compare = function(a, c, g, f) {
          var b = 0;
          f || (f = p.defaultCompareFunction);
          g & p.NUMERIC ? (a = d.toNumber(a), c = d.toNumber(c), b = a < c ? -1 : a > c ? 1 : 0) : b = f(a, c);
          g & p.DESCENDING && (b *= -1);
          return b;
        };
        p.applyType = function(c) {
          function h(a, f) {
            Function.prototype.call.call(p.instanceConstructor, this, a, f, c);
          }
          h.prototype = p.prototype;
          h.instanceConstructor = h;
          h.callableConstructor = function(c) {
            if (c instanceof a.Int32Vector) {
              return c;
            }
            var f = c.asGetProperty(void 0, "length");
            if (void 0 !== f) {
              for (var b = new h(f, !1), e = 0;e < f;e++) {
                b.asSetNumericProperty(e, c.asGetPublicProperty(e));
              }
              return b;
            }
            d.Debug.unexpected();
          };
          h.__proto__ = p;
          return h;
        };
        p.prototype._fill = function(a, c) {
          for (var g = 0;g < a;g++) {
            this._buffer[0 + g] = c;
          }
        };
        p.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;
        };
        p.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;
        };
        p.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 && p.NUMERIC ? c & p.DESCENDING ? this._buffer.sort(function(a, f) {
            return asCoerceNumber(f) - asCoerceNumber(a);
          }) : this._buffer.sort(function(a, f) {
            return asCoerceNumber(a) - asCoerceNumber(f);
          }) : c && p.CASEINSENSITIVE ? c & p.DESCENDING ? this._buffer.sort(function(a, f) {
            return r(f).toLowerCase() - r(a).toLowerCase();
          }) : this._buffer.sort(function(a, f) {
            return r(a).toLowerCase() - r(f).toLowerCase();
          }) : c & p.DESCENDING ? this._buffer.sort(function(a, f) {
            return f - a;
          }) : this._buffer.sort();
        };
        p.prototype.every = function(a, c) {
          for (var g = 0;g < this._buffer.length;g++) {
            if (!a.call(c, this.asGetNumericProperty(g), g, this)) {
              return!1;
            }
          }
          return!0;
        };
        p.prototype.filter = function(a, c) {
          for (var g = new p(0, !1, this._type), f = 0;f < this._buffer.length;f++) {
            a.call(c, this.asGetNumericProperty(f), f, this) && g.push(this.asGetNumericProperty(f));
          }
          return g;
        };
        p.prototype.some = function(a, c) {
          2 !== arguments.length ? u("ArgumentError", k.Errors.WrongArgumentCountError) : d.isFunction(a) || u("ArgumentError", k.Errors.CheckTypeFailedError);
          for (var g = 0;g < this._buffer.length;g++) {
            if (a.call(c, this.asGetNumericProperty(g), g, this)) {
              return!0;
            }
          }
          return!1;
        };
        p.prototype.forEach = function(a, c) {
          d.isFunction(a) || u("ArgumentError", k.Errors.CheckTypeFailedError);
          for (var g = 0;g < this._buffer.length;g++) {
            a.call(c, this.asGetNumericProperty(g), g, this);
          }
        };
        p.prototype.join = function(a) {
          void 0 === a && (a = ",");
          for (var c = this._buffer, g = this._buffer.length, f = "", b = 0;b < g - 1;b++) {
            f += c[b] + a;
          }
          0 < g && (f += c[g - 1]);
          return f;
        };
        p.prototype.indexOf = function(a, c) {
          void 0 === c && (c = 0);
          return this._buffer.indexOf(a, c);
        };
        p.prototype.lastIndexOf = function(a, c) {
          void 0 === c && (c = 2147483647);
          return this._buffer.lastIndexOf(a, c);
        };
        p.prototype.map = function(a, c) {
          d.isFunction(a) || u("ArgumentError", k.Errors.CheckTypeFailedError);
          for (var g = new p(0, !1, this._type), f = 0;f < this._buffer.length;f++) {
            g.push(a.call(c, this.asGetNumericProperty(f), f, this));
          }
          return g;
        };
        p.prototype.push = function(a, c, g, f, b, e, q, n) {
          this._checkFixed();
          for (var p = 0;p < arguments.length;p++) {
            this._buffer.push(this._coerce(arguments[p]));
          }
        };
        p.prototype.pop = function() {
          this._checkFixed();
          return 0 === this._buffer.length ? void 0 : this._buffer.pop();
        };
        p.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);
        };
        p.prototype.reverse = function() {
          this._buffer.reverse();
          return this;
        };
        p.prototype._coerce = function(a) {
          return this._type ? this._type.coerce(a) : void 0 === a ? null : a;
        };
        p.prototype.shift = function() {
          this._checkFixed();
          return 0 === this._buffer.length ? void 0 : this._buffer.shift();
        };
        p.prototype.unshift = function() {
          if (arguments.length) {
            this._checkFixed();
            for (var a = 0;a < arguments.length;a++) {
              this._buffer.unshift(this._coerce(arguments[a]));
            }
          }
        };
        p.prototype.slice = function(a, c) {
          void 0 === a && (a = 0);
          void 0 === c && (c = 2147483647);
          var g = this._buffer, f = g.length, b = Math.min(Math.max(a, 0), f), f = Math.min(Math.max(c, b), f), e = new p(f - b, this.fixed, this._type);
          e._buffer = g.slice(b, f);
          return e;
        };
        p.prototype.splice = function(a, c) {
          var g = this._buffer, f = g.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], q = 2;q < e + 2;q++) {
            b[q] = this._coerce(arguments[q]);
          }
          f = new p(f, this.fixed, this._type);
          f._buffer = g.splice.apply(g, b);
          return f;
        };
        Object.defineProperty(p.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(p.prototype, "fixed", {get:function() {
          return this._fixed;
        }, set:function(a) {
          this._fixed = !!a;
        }, enumerable:!0, configurable:!0});
        p.prototype._checkFixed = function() {
          this._fixed && u("RangeError", k.Errors.VectorFixedError);
        };
        p.prototype.asNextName = function(a) {
          return a - 1;
        };
        p.prototype.asNextValue = function(a) {
          return this._buffer[a - 1];
        };
        p.prototype.asNextNameIndex = function(a) {
          a += 1;
          return a <= this._buffer.length ? a : 0;
        };
        p.prototype.asHasProperty = function(a, c, g) {
          if (p.prototype === this || !d.isNumeric(c)) {
            return Object.prototype.asHasProperty.call(this, a, c, g);
          }
          a = d.toNumber(c);
          return 0 <= a && a < this._buffer.length;
        };
        p.prototype.asGetNumericProperty = function(a) {
          t(a, this._buffer.length);
          return this._buffer[a];
        };
        p.prototype.asSetNumericProperty = function(a, c) {
          l(a, this._buffer.length, this._fixed);
          this._buffer[a] = this._coerce(c);
        };
        p.prototype.asHasNext2 = function(a) {
          a.index = this.asNextNameIndex(a.index);
        };
        p.CASEINSENSITIVE = 1;
        p.DESCENDING = 2;
        p.UNIQUESORT = 4;
        p.RETURNINDEXEDARRAY = 8;
        p.NUMERIC = 16;
        p.instanceConstructor = p;
        p.staticNatives = [p];
        p.instanceNatives = [p.prototype];
        p.classInitializer = function() {
          var a = p.prototype;
          v(a, "$Bgjoin", a.join);
          v(a, "$BgtoString", a.join);
          v(a, "$BgtoLocaleString", a.toLocaleString);
          v(a, "$Bgpop", a.pop);
          v(a, "$Bgpush", a.push);
          v(a, "$Bgreverse", a.reverse);
          v(a, "$Bgconcat", a.concat);
          v(a, "$Bgsplice", a.splice);
          v(a, "$Bgslice", a.slice);
          v(a, "$Bgshift", a.shift);
          v(a, "$Bgunshift", a.unshift);
          v(a, "$BgindexOf", a.indexOf);
          v(a, "$BglastIndexOf", a.lastIndexOf);
          v(a, "$BgforEach", a.forEach);
          v(a, "$Bgmap", a.map);
          v(a, "$Bgfilter", a.filter);
          v(a, "$Bgsome", a.some);
          v(a, "$Bgevery", a.every);
          v(a, "$Bgsort", a.sort);
        };
        return p;
      }(a.ASVector);
      a.GenericVector = c;
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var r = d.ObjectUtilities.defineNonEnumerableProperty, v = d.AVM2.Runtime.throwError, u = d.AVM2.Runtime.asCheckVectorGetNumericProperty, t = d.AVM2.Runtime.asCheckVectorSetNumericProperty, l = function(a) {
        function h(a, c) {
          void 0 === a && (a = 0);
          void 0 === c && (c = !1);
          a >>>= 0;
          this._fixed = !!c;
          this._buffer = new Int32Array(Math.max(h.INITIAL_CAPACITY, a + h.EXTRA_CAPACITY));
          this._offset = 0;
          this._length = a;
        }
        __extends(h, a);
        h.prototype.newThisType = function() {
          return new h;
        };
        h.callable = function(a) {
          if (a instanceof h) {
            return a;
          }
          var c = a.asGetProperty(void 0, "length");
          if (void 0 !== c) {
            for (var m = new h(c, !1), g = 0;g < c;g++) {
              m.asSetNumericProperty(g, a.asGetPublicProperty(g));
            }
            return m;
          }
          d.Debug.unexpected();
        };
        h.prototype.internalToString = function() {
          for (var a = "", c = this._offset, h = c + this._length, g = 0;g < this._buffer.length;g++) {
            g === c && (a += "["), g === h && (a += "]"), a += this._buffer[g], g < 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;
        };
        h.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;
        };
        h.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;
        };
        h.prototype._view = function() {
          return this._buffer.subarray(this._offset, this._offset + this._length);
        };
        h.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));
        };
        h.prototype.concat = function() {
          for (var a = this._length, c = 0;c < arguments.length;c++) {
            var m = arguments[c];
            m._buffer instanceof Int32Array || v("TypeError", k.Errors.CheckTypeFailedError, m.constructor.name, "__AS3__.vec.Vector.<int>");
            a += m._length;
          }
          var a = new h(a), g = a._buffer;
          g.set(this._buffer);
          for (var f = this._length, c = 0;c < arguments.length;c++) {
            m = arguments[c], f + m._buffer.length < m._buffer.length ? g.set(m._buffer, f) : g.set(m._buffer.subarray(0, m._length), f), f += m._length;
          }
          return a;
        };
        h.prototype.every = function(a, c) {
          for (var h = 0;h < this._length;h++) {
            if (!a.call(c, this._buffer[this._offset + h], h, this)) {
              return!1;
            }
          }
          return!0;
        };
        h.prototype.filter = function(a, c) {
          for (var m = new h, g = 0;g < this._length;g++) {
            a.call(c, this._buffer[this._offset + g], g, this) && m.push(this._buffer[this._offset + g]);
          }
          return m;
        };
        h.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._length;h++) {
            if (a.call(c, this._buffer[this._offset + h], h, this)) {
              return!0;
            }
          }
          return!1;
        };
        h.prototype.forEach = function(a, c) {
          for (var h = 0;h < this._length;h++) {
            a.call(c, this._buffer[this._offset + h], h, this);
          }
        };
        h.prototype.join = function(a) {
          void 0 === a && (a = ",");
          for (var c = this.length, h = this._buffer, g = this._offset, f = "", b = 0;b < c - 1;b++) {
            f += h[g + b] + a;
          }
          0 < c && (f += h[g + c - 1]);
          return f;
        };
        h.prototype.indexOf = function(a, c) {
          void 0 === c && (c = 0);
          var h = this._length, g = c | 0;
          if (0 > g) {
            g += h, 0 > g && (g = 0);
          } else {
            if (g >= h) {
              return-1;
            }
          }
          for (var f = this._buffer, h = this._length, b = this._offset, h = b + h, g = g + b;g < h;g++) {
            if (f[g] === a) {
              return g - b;
            }
          }
          return-1;
        };
        h.prototype.lastIndexOf = function(a, c) {
          void 0 === c && (c = 2147483647);
          var h = this._length, g = c | 0;
          if (0 > g) {
            if (g += h, 0 > g) {
              return-1;
            }
          } else {
            g >= h && (g = h);
          }
          for (var h = this._buffer, f = this._offset, g = g + f;g-- > f;) {
            if (h[g] === a) {
              return g - f;
            }
          }
          return-1;
        };
        h.prototype.map = function(a, c) {
          d.isFunction(a) || v("ArgumentError", k.Errors.CheckTypeFailedError);
          for (var m = new h, g = 0;g < this._length;g++) {
            m.push(a.call(c, this._buffer[this._offset + g], g, this));
          }
          return m;
        };
        h.prototype.push = function(a, c, h, g, f, b, e, q) {
          this._checkFixed();
          this._ensureCapacity(this._length + arguments.length);
          for (var n = 0;n < arguments.length;n++) {
            this._buffer[this._offset + this._length++] = arguments[n];
          }
        };
        h.prototype.pop = function() {
          this._checkFixed();
          if (0 === this._length) {
            return h.DEFAULT_VALUE;
          }
          this._length--;
          return this._buffer[this._offset + this._length];
        };
        h.prototype.reverse = function() {
          for (var a = this._offset, c = this._offset + this._length - 1, h = this._buffer;a < c;) {
            var g = h[a];
            h[a] = h[c];
            h[c] = g;
            a++;
            c--;
          }
          return this;
        };
        h.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) & h.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;
          });
        };
        h.prototype.shift = function() {
          this._checkFixed();
          if (0 === this._length) {
            return 0;
          }
          this._length--;
          return this._buffer[this._offset++];
        };
        h.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];
            }
          }
        };
        h.prototype.slice = function(a, c) {
          void 0 === a && (a = 0);
          void 0 === c && (c = 2147483647);
          var m = this._buffer, g = this._length, f = Math.min(Math.max(a, 0), g), g = Math.min(Math.max(c, f), g), b = new h(g - f, this.fixed);
          b._buffer.set(m.subarray(this._offset + f, this._offset + g), b._offset);
          return b;
        };
        h.prototype.splice = function(a, c) {
          var m = this._buffer, g = this._length, f = Math.min(Math.max(a, 0), g), b = this._offset + f, e = Math.min(Math.max(c, 0), g - f), f = arguments.length - 2, q, n = new h(e, this.fixed);
          0 < e && (q = m.subarray(b, b + e), n._buffer.set(q, n._offset));
          this._ensureCapacity(g - e + f);
          m.set(m.subarray(b + e, g), b + f);
          this._length += f - e;
          for (g = 0;g < f;g++) {
            m[b + g] = arguments[g + 2];
          }
          return n;
        };
        h.prototype._slide = function(a) {
          this._buffer.set(this._view(), this._offset + a);
          this._offset += a;
        };
        Object.defineProperty(h.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] = h.DEFAULT_VALUE;
            }
          }
          this._length = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(h.prototype, "fixed", {get:function() {
          return this._fixed;
        }, set:function(a) {
          this._fixed = !!a;
        }, enumerable:!0, configurable:!0});
        h.prototype._checkFixed = function() {
          this._fixed && v("RangeError", k.Errors.VectorFixedError);
        };
        h.prototype.asGetNumericProperty = function(a) {
          u(a, this._length);
          return this._buffer[this._offset + a];
        };
        h.prototype.asSetNumericProperty = function(a, c) {
          t(a, this._length, this._fixed);
          a === this._length && (this._ensureCapacity(this._length + 1), this._length++);
          this._buffer[this._offset + a] = c;
        };
        h.prototype.asHasProperty = function(a, c, m) {
          if (h.prototype === this || !d.isNumeric(c)) {
            return Object.prototype.asHasProperty.call(this, a, c, m);
          }
          a = d.toNumber(c);
          return 0 <= a && a < this._length;
        };
        h.prototype.asNextName = function(a) {
          return a - 1;
        };
        h.prototype.asNextValue = function(a) {
          return this._buffer[this._offset + a - 1];
        };
        h.prototype.asNextNameIndex = function(a) {
          a += 1;
          return a <= this._length ? a : 0;
        };
        h.prototype.asHasNext2 = function(a) {
          a.index = this.asNextNameIndex(a.index);
        };
        h.EXTRA_CAPACITY = 4;
        h.INITIAL_CAPACITY = 10;
        h.DEFAULT_VALUE = 0;
        h.DESCENDING = 2;
        h.UNIQUESORT = 4;
        h.RETURNINDEXEDARRAY = 8;
        h.instanceConstructor = h;
        h.staticNatives = [h];
        h.instanceNatives = [h.prototype];
        h.callableConstructor = h.callable;
        h.classInitializer = function() {
          var a = h.prototype;
          r(a, "$Bgjoin", a.join);
          r(a, "$BgtoString", a.join);
          r(a, "$BgtoLocaleString", a.toLocaleString);
          r(a, "$Bgpop", a.pop);
          r(a, "$Bgpush", a.push);
          r(a, "$Bgreverse", a.reverse);
          r(a, "$Bgconcat", a.concat);
          r(a, "$Bgsplice", a.splice);
          r(a, "$Bgslice", a.slice);
          r(a, "$Bgshift", a.shift);
          r(a, "$Bgunshift", a.unshift);
          r(a, "$BgindexOf", a.indexOf);
          r(a, "$BglastIndexOf", a.lastIndexOf);
          r(a, "$BgforEach", a.forEach);
          r(a, "$Bgmap", a.map);
          r(a, "$Bgfilter", a.filter);
          r(a, "$Bgsome", a.some);
          r(a, "$Bgevery", a.every);
          r(a, "$Bgsort", a.sort);
        };
        return h;
      }(a.ASVector);
      a.Int32Vector = l;
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var r = d.ObjectUtilities.defineNonEnumerableProperty, v = d.AVM2.Runtime.throwError, u = d.AVM2.Runtime.asCheckVectorGetNumericProperty, t = d.AVM2.Runtime.asCheckVectorSetNumericProperty, l = function(a) {
        function h(a, c) {
          void 0 === a && (a = 0);
          void 0 === c && (c = !1);
          a >>>= 0;
          this._fixed = !!c;
          this._buffer = new Uint32Array(Math.max(h.INITIAL_CAPACITY, a + h.EXTRA_CAPACITY));
          this._offset = 0;
          this._length = a;
        }
        __extends(h, a);
        h.prototype.newThisType = function() {
          return new h;
        };
        h.callable = function(a) {
          if (a instanceof h) {
            return a;
          }
          var c = a.asGetProperty(void 0, "length");
          if (void 0 !== c) {
            for (var m = new h(c, !1), g = 0;g < c;g++) {
              m.asSetNumericProperty(g, a.asGetPublicProperty(g));
            }
            return m;
          }
          d.Debug.unexpected();
        };
        h.prototype.internalToString = function() {
          for (var a = "", c = this._offset, h = c + this._length, g = 0;g < this._buffer.length;g++) {
            g === c && (a += "["), g === h && (a += "]"), a += this._buffer[g], g < 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;
        };
        h.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;
        };
        h.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;
        };
        h.prototype._view = function() {
          return this._buffer.subarray(this._offset, this._offset + this._length);
        };
        h.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));
        };
        h.prototype.concat = function() {
          for (var a = this._length, c = 0;c < arguments.length;c++) {
            var m = arguments[c];
            m._buffer instanceof Uint32Array || v("TypeError", k.Errors.CheckTypeFailedError, m.constructor.name, "__AS3__.vec.Vector.<uint>");
            a += m._length;
          }
          var a = new h(a), g = a._buffer;
          g.set(this._buffer);
          for (var f = this._length, c = 0;c < arguments.length;c++) {
            m = arguments[c], f + m._buffer.length < m._buffer.length ? g.set(m._buffer, f) : g.set(m._buffer.subarray(0, m._length), f), f += m._length;
          }
          return a;
        };
        h.prototype.every = function(a, c) {
          for (var h = 0;h < this._length;h++) {
            if (!a.call(c, this._buffer[this._offset + h], h, this)) {
              return!1;
            }
          }
          return!0;
        };
        h.prototype.filter = function(a, c) {
          for (var m = new h, g = 0;g < this._length;g++) {
            a.call(c, this._buffer[this._offset + g], g, this) && m.push(this._buffer[this._offset + g]);
          }
          return m;
        };
        h.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._length;h++) {
            if (a.call(c, this._buffer[this._offset + h], h, this)) {
              return!0;
            }
          }
          return!1;
        };
        h.prototype.forEach = function(a, c) {
          for (var h = 0;h < this._length;h++) {
            a.call(c, this._buffer[this._offset + h], h, this);
          }
        };
        h.prototype.join = function(a) {
          void 0 === a && (a = ",");
          for (var c = this.length, h = this._buffer, g = this._offset, f = "", b = 0;b < c - 1;b++) {
            f += h[g + b] + a;
          }
          0 < c && (f += h[g + c - 1]);
          return f;
        };
        h.prototype.indexOf = function(a, c) {
          void 0 === c && (c = 0);
          var h = this._length, g = c | 0;
          if (0 > g) {
            g += h, 0 > g && (g = 0);
          } else {
            if (g >= h) {
              return-1;
            }
          }
          for (var f = this._buffer, h = this._length, b = this._offset, h = b + h, g = g + b;g < h;g++) {
            if (f[g] === a) {
              return g - b;
            }
          }
          return-1;
        };
        h.prototype.lastIndexOf = function(a, c) {
          void 0 === c && (c = 2147483647);
          var h = this._length, g = c | 0;
          if (0 > g) {
            if (g += h, 0 > g) {
              return-1;
            }
          } else {
            g >= h && (g = h);
          }
          for (var h = this._buffer, f = this._offset, g = g + f;g-- > f;) {
            if (h[g] === a) {
              return g - f;
            }
          }
          return-1;
        };
        h.prototype.map = function(a, c) {
          d.isFunction(a) || v("ArgumentError", k.Errors.CheckTypeFailedError);
          for (var m = new h, g = 0;g < this._length;g++) {
            m.push(a.call(c, this._buffer[this._offset + g], g, this));
          }
          return m;
        };
        h.prototype.push = function(a, c, h, g, f, b, e, q) {
          this._checkFixed();
          this._ensureCapacity(this._length + arguments.length);
          for (var n = 0;n < arguments.length;n++) {
            this._buffer[this._offset + this._length++] = arguments[n];
          }
        };
        h.prototype.pop = function() {
          this._checkFixed();
          if (0 === this._length) {
            return h.DEFAULT_VALUE;
          }
          this._length--;
          return this._buffer[this._offset + this._length];
        };
        h.prototype.reverse = function() {
          for (var a = this._offset, c = this._offset + this._length - 1, h = this._buffer;a < c;) {
            var g = h[a];
            h[a] = h[c];
            h[c] = g;
            a++;
            c--;
          }
          return this;
        };
        h.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) & h.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;
          });
        };
        h.prototype.shift = function() {
          this._checkFixed();
          if (0 === this._length) {
            return 0;
          }
          this._length--;
          return this._buffer[this._offset++];
        };
        h.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];
            }
          }
        };
        h.prototype.slice = function(a, c) {
          void 0 === a && (a = 0);
          void 0 === c && (c = 2147483647);
          var m = this._buffer, g = this._length, f = Math.min(Math.max(a, 0), g), g = Math.min(Math.max(c, f), g), b = new h(g - f, this.fixed);
          b._buffer.set(m.subarray(this._offset + f, this._offset + g), b._offset);
          return b;
        };
        h.prototype.splice = function(a, c) {
          var m = this._buffer, g = this._length, f = Math.min(Math.max(a, 0), g), b = this._offset + f, e = Math.min(Math.max(c, 0), g - f), f = arguments.length - 2, q, n = new h(e, this.fixed);
          0 < e && (q = m.subarray(b, b + e), n._buffer.set(q, n._offset));
          this._ensureCapacity(g - e + f);
          m.set(m.subarray(b + e, g), b + f);
          this._length += f - e;
          for (g = 0;g < f;g++) {
            m[b + g] = arguments[g + 2];
          }
          return n;
        };
        h.prototype._slide = function(a) {
          this._buffer.set(this._view(), this._offset + a);
          this._offset += a;
        };
        Object.defineProperty(h.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] = h.DEFAULT_VALUE;
            }
          }
          this._length = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(h.prototype, "fixed", {get:function() {
          return this._fixed;
        }, set:function(a) {
          this._fixed = !!a;
        }, enumerable:!0, configurable:!0});
        h.prototype._checkFixed = function() {
          this._fixed && v("RangeError", k.Errors.VectorFixedError);
        };
        h.prototype.asGetNumericProperty = function(a) {
          u(a, this._length);
          return this._buffer[this._offset + a];
        };
        h.prototype.asSetNumericProperty = function(a, c) {
          t(a, this._length, this._fixed);
          a === this._length && (this._ensureCapacity(this._length + 1), this._length++);
          this._buffer[this._offset + a] = c;
        };
        h.prototype.asHasProperty = function(a, c, m) {
          if (h.prototype === this || !d.isNumeric(c)) {
            return Object.prototype.asHasProperty.call(this, a, c, m);
          }
          a = d.toNumber(c);
          return 0 <= a && a < this._length;
        };
        h.prototype.asNextName = function(a) {
          return a - 1;
        };
        h.prototype.asNextValue = function(a) {
          return this._buffer[this._offset + a - 1];
        };
        h.prototype.asNextNameIndex = function(a) {
          a += 1;
          return a <= this._length ? a : 0;
        };
        h.prototype.asHasNext2 = function(a) {
          a.index = this.asNextNameIndex(a.index);
        };
        h.EXTRA_CAPACITY = 4;
        h.INITIAL_CAPACITY = 10;
        h.DEFAULT_VALUE = 0;
        h.DESCENDING = 2;
        h.UNIQUESORT = 4;
        h.RETURNINDEXEDARRAY = 8;
        h.instanceConstructor = h;
        h.staticNatives = [h];
        h.instanceNatives = [h.prototype];
        h.callableConstructor = h.callable;
        h.classInitializer = function() {
          var a = h.prototype;
          r(a, "$Bgjoin", a.join);
          r(a, "$BgtoString", a.join);
          r(a, "$BgtoLocaleString", a.toLocaleString);
          r(a, "$Bgpop", a.pop);
          r(a, "$Bgpush", a.push);
          r(a, "$Bgreverse", a.reverse);
          r(a, "$Bgconcat", a.concat);
          r(a, "$Bgsplice", a.splice);
          r(a, "$Bgslice", a.slice);
          r(a, "$Bgshift", a.shift);
          r(a, "$Bgunshift", a.unshift);
          r(a, "$BgindexOf", a.indexOf);
          r(a, "$BglastIndexOf", a.lastIndexOf);
          r(a, "$BgforEach", a.forEach);
          r(a, "$Bgmap", a.map);
          r(a, "$Bgfilter", a.filter);
          r(a, "$Bgsome", a.some);
          r(a, "$Bgevery", a.every);
          r(a, "$Bgsort", a.sort);
        };
        return h;
      }(a.ASVector);
      a.Uint32Vector = l;
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var r = d.ObjectUtilities.defineNonEnumerableProperty, v = d.AVM2.Runtime.throwError, u = d.AVM2.Runtime.asCheckVectorGetNumericProperty, t = d.AVM2.Runtime.asCheckVectorSetNumericProperty, l = function(a) {
        function h(a, c) {
          void 0 === a && (a = 0);
          void 0 === c && (c = !1);
          a >>>= 0;
          this._fixed = !!c;
          this._buffer = new Float64Array(Math.max(h.INITIAL_CAPACITY, a + h.EXTRA_CAPACITY));
          this._offset = 0;
          this._length = a;
        }
        __extends(h, a);
        h.prototype.newThisType = function() {
          return new h;
        };
        h.callable = function(a) {
          if (a instanceof h) {
            return a;
          }
          var c = a.asGetProperty(void 0, "length");
          if (void 0 !== c) {
            for (var m = new h(c, !1), g = 0;g < c;g++) {
              m.asSetNumericProperty(g, a.asGetPublicProperty(g));
            }
            return m;
          }
          d.Debug.unexpected();
        };
        h.prototype.internalToString = function() {
          for (var a = "", c = this._offset, h = c + this._length, g = 0;g < this._buffer.length;g++) {
            g === c && (a += "["), g === h && (a += "]"), a += this._buffer[g], g < 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;
        };
        h.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;
        };
        h.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;
        };
        h.prototype._view = function() {
          return this._buffer.subarray(this._offset, this._offset + this._length);
        };
        h.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));
        };
        h.prototype.concat = function() {
          for (var a = this._length, c = 0;c < arguments.length;c++) {
            var m = arguments[c];
            m._buffer instanceof Float64Array || v("TypeError", k.Errors.CheckTypeFailedError, m.constructor.name, "__AS3__.vec.Vector.<Number>");
            a += m._length;
          }
          var a = new h(a), g = a._buffer;
          g.set(this._buffer);
          for (var f = this._length, c = 0;c < arguments.length;c++) {
            m = arguments[c], f + m._buffer.length < m._buffer.length ? g.set(m._buffer, f) : g.set(m._buffer.subarray(0, m._length), f), f += m._length;
          }
          return a;
        };
        h.prototype.every = function(a, c) {
          for (var h = 0;h < this._length;h++) {
            if (!a.call(c, this._buffer[this._offset + h], h, this)) {
              return!1;
            }
          }
          return!0;
        };
        h.prototype.filter = function(a, c) {
          for (var m = new h, g = 0;g < this._length;g++) {
            a.call(c, this._buffer[this._offset + g], g, this) && m.push(this._buffer[this._offset + g]);
          }
          return m;
        };
        h.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._length;h++) {
            if (a.call(c, this._buffer[this._offset + h], h, this)) {
              return!0;
            }
          }
          return!1;
        };
        h.prototype.forEach = function(a, c) {
          for (var h = 0;h < this._length;h++) {
            a.call(c, this._buffer[this._offset + h], h, this);
          }
        };
        h.prototype.join = function(a) {
          void 0 === a && (a = ",");
          for (var c = this.length, h = this._buffer, g = this._offset, f = "", b = 0;b < c - 1;b++) {
            f += h[g + b] + a;
          }
          0 < c && (f += h[g + c - 1]);
          return f;
        };
        h.prototype.indexOf = function(a, c) {
          void 0 === c && (c = 0);
          var h = this._length, g = c | 0;
          if (0 > g) {
            g += h, 0 > g && (g = 0);
          } else {
            if (g >= h) {
              return-1;
            }
          }
          for (var f = this._buffer, h = this._length, b = this._offset, h = b + h, g = g + b;g < h;g++) {
            if (f[g] === a) {
              return g - b;
            }
          }
          return-1;
        };
        h.prototype.lastIndexOf = function(a, c) {
          void 0 === c && (c = 2147483647);
          var h = this._length, g = c | 0;
          if (0 > g) {
            if (g += h, 0 > g) {
              return-1;
            }
          } else {
            g >= h && (g = h);
          }
          for (var h = this._buffer, f = this._offset, g = g + f;g-- > f;) {
            if (h[g] === a) {
              return g - f;
            }
          }
          return-1;
        };
        h.prototype.map = function(a, c) {
          d.isFunction(a) || v("ArgumentError", k.Errors.CheckTypeFailedError);
          for (var m = new h, g = 0;g < this._length;g++) {
            m.push(a.call(c, this._buffer[this._offset + g], g, this));
          }
          return m;
        };
        h.prototype.push = function(a, c, h, g, f, b, e, q) {
          this._checkFixed();
          this._ensureCapacity(this._length + arguments.length);
          for (var n = 0;n < arguments.length;n++) {
            this._buffer[this._offset + this._length++] = arguments[n];
          }
        };
        h.prototype.pop = function() {
          this._checkFixed();
          if (0 === this._length) {
            return h.DEFAULT_VALUE;
          }
          this._length--;
          return this._buffer[this._offset + this._length];
        };
        h.prototype.reverse = function() {
          for (var a = this._offset, c = this._offset + this._length - 1, h = this._buffer;a < c;) {
            var g = h[a];
            h[a] = h[c];
            h[c] = g;
            a++;
            c--;
          }
          return this;
        };
        h.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) & h.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;
          });
        };
        h.prototype.shift = function() {
          this._checkFixed();
          if (0 === this._length) {
            return 0;
          }
          this._length--;
          return this._buffer[this._offset++];
        };
        h.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];
            }
          }
        };
        h.prototype.slice = function(a, c) {
          void 0 === a && (a = 0);
          void 0 === c && (c = 2147483647);
          var m = this._buffer, g = this._length, f = Math.min(Math.max(a, 0), g), g = Math.min(Math.max(c, f), g), b = new h(g - f, this.fixed);
          b._buffer.set(m.subarray(this._offset + f, this._offset + g), b._offset);
          return b;
        };
        h.prototype.splice = function(a, c) {
          var m = this._buffer, g = this._length, f = Math.min(Math.max(a, 0), g), b = this._offset + f, e = Math.min(Math.max(c, 0), g - f), f = arguments.length - 2, q, n = new h(e, this.fixed);
          0 < e && (q = m.subarray(b, b + e), n._buffer.set(q, n._offset));
          this._ensureCapacity(g - e + f);
          m.set(m.subarray(b + e, g), b + f);
          this._length += f - e;
          for (g = 0;g < f;g++) {
            m[b + g] = arguments[g + 2];
          }
          return n;
        };
        h.prototype._slide = function(a) {
          this._buffer.set(this._view(), this._offset + a);
          this._offset += a;
        };
        Object.defineProperty(h.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] = h.DEFAULT_VALUE;
            }
          }
          this._length = a;
        }, enumerable:!0, configurable:!0});
        Object.defineProperty(h.prototype, "fixed", {get:function() {
          return this._fixed;
        }, set:function(a) {
          this._fixed = !!a;
        }, enumerable:!0, configurable:!0});
        h.prototype._checkFixed = function() {
          this._fixed && v("RangeError", k.Errors.VectorFixedError);
        };
        h.prototype.asGetNumericProperty = function(a) {
          u(a, this._length);
          return this._buffer[this._offset + a];
        };
        h.prototype.asSetNumericProperty = function(a, c) {
          t(a, this._length, this._fixed);
          a === this._length && (this._ensureCapacity(this._length + 1), this._length++);
          this._buffer[this._offset + a] = c;
        };
        h.prototype.asHasProperty = function(a, c, m) {
          if (h.prototype === this || !d.isNumeric(c)) {
            return Object.prototype.asHasProperty.call(this, a, c, m);
          }
          a = d.toNumber(c);
          return 0 <= a && a < this._length;
        };
        h.prototype.asNextName = function(a) {
          return a - 1;
        };
        h.prototype.asNextValue = function(a) {
          return this._buffer[this._offset + a - 1];
        };
        h.prototype.asNextNameIndex = function(a) {
          a += 1;
          return a <= this._length ? a : 0;
        };
        h.prototype.asHasNext2 = function(a) {
          a.index = this.asNextNameIndex(a.index);
        };
        h.EXTRA_CAPACITY = 4;
        h.INITIAL_CAPACITY = 10;
        h.DEFAULT_VALUE = 0;
        h.DESCENDING = 2;
        h.UNIQUESORT = 4;
        h.RETURNINDEXEDARRAY = 8;
        h.instanceConstructor = h;
        h.staticNatives = [h];
        h.instanceNatives = [h.prototype];
        h.callableConstructor = h.callable;
        h.classInitializer = function() {
          var a = h.prototype;
          r(a, "$Bgjoin", a.join);
          r(a, "$BgtoString", a.join);
          r(a, "$BgtoLocaleString", a.toLocaleString);
          r(a, "$Bgpop", a.pop);
          r(a, "$Bgpush", a.push);
          r(a, "$Bgreverse", a.reverse);
          r(a, "$Bgconcat", a.concat);
          r(a, "$Bgsplice", a.splice);
          r(a, "$Bgslice", a.slice);
          r(a, "$Bgshift", a.shift);
          r(a, "$Bgunshift", a.unshift);
          r(a, "$BgindexOf", a.indexOf);
          r(a, "$BglastIndexOf", a.lastIndexOf);
          r(a, "$BgforEach", a.forEach);
          r(a, "$Bgmap", a.map);
          r(a, "$Bgfilter", a.filter);
          r(a, "$Bgsome", a.some);
          r(a, "$Bgevery", a.every);
          r(a, "$Bgsort", a.sort);
        };
        return h;
      }(a.ASVector);
      a.Float64Vector = l;
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      function r(b) {
        return b instanceof a.ASXML || b instanceof a.ASXMLList;
      }
      function v(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 += v(c));
              }
              return e;
            }
            return s(b);
        }
      }
      function u(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 t(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 h(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 p(b) {
        for (var a = 1, e;;) {
          e = "_ns" + a;
          if (!b.some(function(b) {
            return b.prefix == e;
          })) {
            break;
          }
          a++;
        }
        return e;
      }
      function s(b, e, f) {
        if (null === b || void 0 === b) {
          throw new TypeError;
        }
        if (!(b instanceof S)) {
          return b instanceof V ? b._children.map(function(b) {
            return s(b, e);
          }).join(S.prettyPrinting ? "\n" : "") : u(String(b));
        }
        var g = S.prettyPrinting;
        f |= 0;
        var n = g ? h(f) : "";
        switch(b._kind) {
          case 3:
            return g ? n + u(c(b._value)) : u(b._value);
          case 2:
            return n + t(b._value);
          case 4:
            return n + "\x3c!--" + b._value + "--\x3e";
          case 5:
            return n + "<?" + b._name.localName + " " + b._value + "?>";
        }
        e = e || [];
        for (var q = [], 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 x = new a.ASNamespace(d, l);
            q.push(x);
          }
        }
        var r = e.concat(q), x = b._name.getNamespace(r);
        void 0 === x.prefix && (m = p(r), m = new a.ASNamespace(m, x.uri), q.push(m), r.push(m));
        var k = (x.prefix ? x.prefix + ":" : "") + b._name.localName, n = n + ("<" + k);
        b._attributes && b._attributes.forEach(function(b) {
          b = b._name.getNamespace(r);
          if (void 0 === b.prefix) {
            var e = p(r);
            b = new a.ASNamespace(e, b.uri);
            q.push(b);
            r.push(b);
          }
        });
        for (m = 0;m < q.length;m++) {
          x = q[m], n += " " + (x.prefix ? "xmlns:" + x.prefix : "xmlns") + '="' + t(x.uri) + '"';
        }
        b._attributes && b._attributes.forEach(function(b) {
          var a = b._name, f = a.getNamespace(e);
          n += " " + (f.prefix ? f.prefix + ":" + a.localName : a.localName) + '="' + t(b._value) + '"';
        });
        if (0 === b.length()) {
          return n += "/>";
        }
        var n = n + ">", L = 1 < b._children.length || 1 === b._children.length && 3 !== b._children[0]._kind, A = g && L ? f + S.prettyIndent : 0;
        b._children.forEach(function(b, a) {
          g && L && (n += "\n");
          var e = s(b, r, A);
          n += e;
        });
        g && L && (n += "\n" + h(f));
        return n += "</" + 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 S) {
          return b;
        }
        if (b instanceof V) {
          return 1 !== b._children.length && k.Runtime.throwError("TypeError", k.Errors.XMLMarkupMustBeWellFormed), b._children[0];
        }
        b = C.parseFromString(H(b));
        var a = b.length();
        if (0 === a) {
          return x(3);
        }
        if (1 === a) {
          return b._children[0]._parent = null, b._children[0];
        }
        k.Runtime.throwError("TypeError", k.Errors.XMLMarkupMustBeWellFormed);
      }
      function g(b, a) {
        null === b && k.Runtime.throwError("TypeError", k.Errors.ConvertNullToObjectError);
        void 0 === b && k.Runtime.throwError("TypeError", k.Errors.ConvertUndefinedToObjectError);
        if (b instanceof S) {
          a.append(b);
        } else {
          var e = m('<parent xmlns="' + t(S.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 T) {
            return new a.ASQName(b.uri, b.localName, !0);
          }
          if (L.isQName(b)) {
            return T.fromMultiname(b);
          }
        }
        b = v(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 T) {
            return b;
          }
          if (L.isQName(b)) {
            return T.fromMultiname(b);
          }
          var e;
          e = b instanceof S || b instanceof V ? v(b) : b instanceof L ? 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 T && !!(b.name.flags & 1);
      }
      function q(b, e, f) {
        return b && 1 === b.length && b[0] instanceof I && ("string" === typeof e || void 0 === e) ? new a.ASQName(b[0], e || "*", f) : e;
      }
      function n(b) {
        try {
          new a.ASQName(b);
        } catch (e) {
          return!1;
        }
        return!0;
      }
      function x(b, e, f, c) {
        var g = new a.ASXML;
        void 0 === b && (b = 3);
        void 0 === e && (e = "");
        void 0 === f && (f = "");
        g.init(b, e, f, c);
        return g;
      }
      var L = d.AVM2.ABC.Multiname, A = d.Debug.notImplemented, H = d.AVM2.Runtime.asCoerceString, K = d.ObjectUtilities.defineNonEnumerableProperty, F = d.ObjectUtilities.createPublicAliases, J = Object.prototype.asGetProperty, M = Object.prototype.asSetProperty, D = Object.prototype.asCallProperty, B = Object.prototype.asHasProperty, E = Object.prototype.asHasOwnProperty, y = Object.prototype.asDeleteProperty, z = Object.prototype.asGetEnumerableKeys;
      a.escapeElementValue = u;
      a.escapeAttributeValue = t;
      var G = [];
      a.isXMLName = n;
      d.AVM2.AS.Natives.isXMLName = n;
      var C = 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 g() {
            for (var b = s.length - 1;0 <= b;--b) {
              if ("preserve" === s[b].space) {
                return!0;
              }
            }
            return!1;
          }
          function n() {
            for (var b = s.length - 1;0 <= b;--b) {
              if ("xmlns" in s[b]) {
                return s[b].xmlns;
              }
            }
            return "";
          }
          function q(b) {
            for (var a = s.length - 1;0 <= a;--a) {
              if (b in s[a].lookup) {
                return s[a].lookup[b];
              }
            }
          }
          function h(b, a) {
            var e = b.indexOf(":");
            if (0 <= e) {
              var f = b.substring(0, e), c = q(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:n()} : {name:b, localName:b, prefix:"", namespace:""};
          }
          function m(b, a) {
            function e() {
              for (;c < b.length && l(b, c);) {
                ++c;
              }
            }
            for (var c = a, g, n = [];c < b.length && !l(b, c) && ">" !== b[c] && "/" !== b[c];) {
              ++c;
            }
            g = b.substring(a, c);
            for (e();c < b.length && ">" !== b[c] && "/" !== b[c] && "?" !== b[c];) {
              e();
              for (var q = "", h = "";c < b.length && !l(b, c) && "=" !== b[c];) {
                q += b[c], ++c;
              }
              e();
              if ("=" !== b[c]) {
                throw "'=' expected";
              }
              ++c;
              e();
              h = b[c];
              if ('"' !== h && "'" !== h) {
                throw "Quote expected";
              }
              var p = b.indexOf(h, ++c);
              if (0 > p) {
                throw "Unexpected EOF[6]";
              }
              h = b.substring(c, p);
              n.push({name:q, value:f(h)});
              c = p + 1;
              e();
            }
            return{name:g, attributes:n, parsed:c - a};
          }
          function p(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 d = 0, s = [{namespaces:[], lookup:{xmlns:"http://www.w3.org/2000/xmlns/", xml:"http://www.w3.org/XML/1998/namespace"}, inScopes:S.defaultNamespace ? [{uri:S.defaultNamespace, prefix:""}] : [], space:"default", xmlns:S.defaultNamespace || ""}];d < a.length;) {
            var x = d;
            if ("<" === a[d]) {
              switch(++x, a[x]) {
                case "/":
                  ++x;
                  d = a.indexOf(">", x);
                  if (0 > d) {
                    throw "Unexpected EOF[1]";
                  }
                  x = h(a.substring(x, d), !0);
                  e.endElement(x);
                  s.pop();
                  x = d + 1;
                  break;
                case "?":
                  ++x;
                  d = p(a, x);
                  if ("?>" != a.substring(x + d.parsed, x + d.parsed + 2)) {
                    throw "Unexpected EOF[2]";
                  }
                  e.pi(d.name, d.value);
                  x += d.parsed + 2;
                  break;
                case "!":
                  if ("--" === a.substring(x + 1, x + 3)) {
                    d = a.indexOf("--\x3e", x + 3);
                    if (0 > d) {
                      throw "Unexpected EOF[3]";
                    }
                    e.comment(a.substring(x + 3, d));
                    x = d + 3;
                  } else {
                    if ("[CDATA[" === a.substring(x + 1, x + 8)) {
                      d = a.indexOf("]]\x3e", x + 8);
                      if (0 > d) {
                        throw "Unexpected EOF[4]";
                      }
                      e.cdata(a.substring(x + 8, d));
                      x = d + 3;
                    } else {
                      if ("DOCTYPE" === a.substring(x + 1, x + 8)) {
                        var r = a.indexOf("[", x + 8), k = !1, d = a.indexOf(">", x + 8);
                        if (0 > d) {
                          throw "Unexpected EOF[5]";
                        }
                        if (0 < r && d > r) {
                          d = a.indexOf("]>", x + 8);
                          if (0 > d) {
                            throw "Unexpected EOF[7]";
                          }
                          k = !0;
                        }
                        e.doctype(a.substring(x + 8, d + (k ? 1 : 0)));
                        x = d + (k ? 2 : 1);
                      } else {
                        throw "Unknown !tag";
                      }
                    }
                  }
                  break;
                default:
                  r = m(a, x);
                  k = !1;
                  if ("/>" === a.substring(x + r.parsed, x + r.parsed + 2)) {
                    k = !0;
                  } else {
                    if (">" !== a.substring(x + r.parsed, x + r.parsed + 1)) {
                      throw "Unexpected EOF[2]";
                    }
                  }
                  for (var L = {namespaces:[], lookup:Object.create(null)}, u = r.attributes, d = 0;d < u.length;++d) {
                    var t = u[d], A = t.name;
                    if ("xmlns:" === A.substring(0, 6)) {
                      A = A.substring(6), t = t.value, q(A) !== t && (L.lookup[A] = c(t), L.namespaces.push({uri:t, prefix:A})), delete u[d];
                    } else {
                      if ("xmlns" === A) {
                        t = t.value, n() !== t && (L.xmlns = c(t), L.namespaces.push({uri:t, prefix:""})), delete u[d];
                      } else {
                        if ("xml:" === A.substring(0, 4)) {
                          var v = A.substring(4);
                          if ("space" !== v && "lang" !== v && "base" !== v && "id" !== v) {
                            throw "Invalid xml attribute: " + A;
                          }
                          L[v] = c(t.value);
                        } else {
                          if ("xml" === A.substring(0, 3)) {
                            throw "Invalid xml attribute";
                          }
                        }
                      }
                    }
                  }
                  var K = [];
                  L.namespaces.forEach(function(b) {
                    b.prefix && L.lookup[b.prefix] !== b.uri || K.push(b);
                  });
                  s[s.length - 1].inScopes.forEach(function(b) {
                    (!b.prefix || b.prefix in L.lookup) && (b.prefix || "xmlns" in L) || K.push(b);
                  });
                  L.inScopes = K;
                  s.push(L);
                  A = [];
                  for (d = 0;d < u.length;++d) {
                    (t = u[d]) && A.push({name:h(t.name, !1), value:t.value});
                  }
                  e.beginElement(h(r.name, !0), A, K, k);
                  x += r.parsed + (k ? 2 : 1);
                  k && s.pop();
              }
            } else {
              for (;x++ < a.length && "<" !== a[x];) {
              }
              e.text(f(a.substring(d, x)), g());
            }
            d = x;
          }
        }
        this.parseFromString = function(e, f) {
          var g = x(1, "", "", ""), n = [];
          b(e, {beginElement:function(b, e, f, c) {
            var q = g;
            n.push(q);
            g = x(1, b.namespace, b.localName, b.prefix);
            for (b = 0;b < e.length;++b) {
              var h = e[b], m = x(2, h.name.namespace, h.name.localName, h.name.prefix);
              m._value = h.value;
              m._parent = g;
              g._attributes.push(m);
            }
            for (b = 0;b < f.length;++b) {
              e = f[b], e = new a.ASNamespace(e.prefix, e.uri), g._inScopeNamespaces.push(e);
            }
            q.insert(q.length(), g);
            c && (g = n.pop());
          }, endElement:function(b) {
            g = n.pop();
          }, text:function(b, a) {
            S.ignoreWhitespace && (b = c(b));
            if (!(0 === b.length || a && S.ignoreWhitespace)) {
              var e = x(3, "", "", void 0);
              e._value = b;
              g.insert(g.length(), e);
            }
          }, cdata:function(b) {
            var a = x(3, "", "", void 0);
            a._value = b;
            g.insert(g.length(), a);
          }, comment:function(b) {
            if (!S.ignoreComments) {
              var a = x(4, "", "", void 0);
              a._value = b;
              g.insert(g.length(), a);
            }
          }, pi:function(b, a) {
            if (!S.ignoreProcessingInstructions) {
              var e = x(5, "", b, void 0);
              e._value = a;
              g.insert(g.length(), e);
            }
          }, doctype:function(b) {
          }});
          return g;
        };
      }, I = 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 T && null !== f.uri ? f = f.uri : (f = v(f), c = "" === f ? "" : void 0)) : (f = a, f = d.isObject(f) && f instanceof T && null !== f.uri ? f.uri : v(f), "" === f ? void 0 === b || "" === v(b) ? c = "" : k.Runtime.throwError("TypeError", k.Errors.XMLNamespaceWithPrefixAndNoURI, b) : c = void 0 === b ? void 0 : !1 === n(b) ? void 0 : v(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() {
          var b = e.prototype;
          K(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 = I;
      var P;
      (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";
      })(P || (P = {}));
      var T = function(b) {
        function e(b, f, c) {
          var g, n;
          0 === arguments.length ? g = "" : 1 === arguments.length ? g = b : (n = b, g = f);
          if (d.isObject(g) && g instanceof e) {
            if (2 > arguments.length) {
              return g;
            }
            g = g.localName;
          }
          g = void 0 === g || 0 === arguments.length ? "" : v(g);
          if (void 0 === n || 2 > arguments.length) {
            n = "*" === g ? null : new a.ASNamespace("", S.defaultNamespace);
          }
          var q = g;
          null !== n && (n = n instanceof I ? n : new a.ASNamespace(n));
          var h = c ? 1 : 2;
          "*" === g && (h |= 4);
          null === n && (h |= 8);
          this.name = new L([n ? n._ns : null], q, h);
        }
        __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.toString = function() {
          var b = this.uri;
          return b ? b + "::" + this.name.name : this.name.name;
        };
        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.instanceConstructor = e;
        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 = T;
      var O;
      (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";
      })(O || (O = {}));
      (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 Q = [null, "element", "attribute", "text", "comment", "processing-instruction"], S = 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);
            r(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 V ? 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() === H(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 g = 0;
          a: for (;g < a.length;g++) {
            for (var n = a[g], q = 0;q < e.length;q++) {
              var h = e[q];
              if (h._name.equals(n._name) && h._value === n._value) {
                continue a;
              }
            }
            return!1;
          }
          for (g = 0;g < f.length;g++) {
            if (!f[g].equals(b[g])) {
              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() : v(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 : E.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 g = f[c];
              b[g.prefix] || (b[g.prefix] = g, e.push(g));
            }
            a = a._parent;
          }
          return e;
        };
        c.prototype.insertChildAfter = function(b, a) {
          this instanceof c || k.Runtime.throwError("TypeError", k.Errors.CheckTypeFailedError, this, "XML");
          A("public.XML::insertChildAfter");
        };
        c.prototype.insertChildBefore = function(b, a) {
          this instanceof c || k.Runtime.throwError("TypeError", k.Errors.CheckTypeFailedError, this, "XML");
          A("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 = H(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");
          A("public.XML::namespaceDeclarations");
        };
        c.prototype.nodeKind = function() {
          this instanceof c || k.Runtime.throwError("TypeError", k.Errors.CheckTypeFailedError, this, "XML");
          return Q[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 g = f[c];
            5 !== g._kind || "*" !== b && g._name.localName !== a || e._children.push(g);
          }
          return e;
        };
        c.prototype.prependChild = function(b) {
          A("public.XML::prependChild");
        };
        c.prototype.removeNamespace = function(b) {
          A("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 = v(a);
            var c = x();
            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) {
          A("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 T(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) {
          A("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 s(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 = r(c) && 3 !== c._kind && 2 !== c._kind ? c._deepCopy() : v(c), e = b(e), f) {
              if (n(e.name)) {
                if (c instanceof a.ASXMLList) {
                  if (0 === c._children.length) {
                    c = "";
                  } else {
                    f = v(c._children[0]);
                    for (var g = 1;g < c._children.length;g++) {
                      f += " " + v(c._children[g]);
                    }
                    c = f;
                  }
                } else {
                  c = H(c);
                }
                f = null;
                for (var q = this._attributes, h = this._attributes = [], g = 0;q && g < q.length;g++) {
                  var m = q[g];
                  if (m._name.equals(e)) {
                    if (f) {
                      m._parent = null;
                      continue;
                    } else {
                      f = m;
                    }
                  }
                  h.push(m);
                }
                f || (f = x(2, e.uri, e.localName), f._parent = this, h.push(f));
                f._value = c;
              }
            } else {
              f = !r(c) && "*" !== e.localName;
              q = e.flags & 4;
              h = e.flags & 8;
              for (m = this.length() - 1;0 <= m;m--) {
                (q || 1 === this._children[m]._kind && this._children[m]._name.localName === e.localName) && (h || 1 === this._children[m]._kind && this._children[m]._name.uri === e.uri) && (void 0 !== g && this.deleteByIndex(g), g = m);
              }
              void 0 === g && (g = this.length(), f && (q = null === e.uri ? new a.ASQName(new a.ASNamespace("", S.defaultNamespace), e) : new a.ASQName(e), e = x(1, q.uri, q.localName, q.prefix), e._parent = this, q = q.getNamespace(), this.replace(String(g), e), e.addInScopeNamespace(q)));
              f ? (this._children[g]._children = [], f = v(c), "" !== f && this._children[g].replace("0", f)) : this.replace(String(g), c);
            }
          }
        };
        c.prototype.asSetProperty = function(b, a, e, f) {
          if (c.isTraitsOrDynamicPrototype(this)) {
            return M.call(this, b, a, e, f);
          }
          e = !!(e & L.ATTRIBUTE);
          this.setProperty(q(b, a, e), e, f);
        };
        c.prototype.getProperty = function(e, f) {
          if (d.isIndex(e) || !L.isQName(e) && d.isNumeric(e)) {
            return 0 === (e | 0) ? this : null;
          }
          var c = b(e), g = a.ASXMLList.createList(this, this._name);
          g._targetObject = this;
          g._targetProperty = c;
          var n = 0, q = c.name.flags, h = q & 4, m = q & 8;
          if (f || q & 1) {
            for (q = 0;this._attributes && q < this._attributes.length;q++) {
              var p = this._attributes[q];
              !h && p._name.localName !== c.localName || !m && p._name.uri !== c.uri || (g._children[n++] = p);
            }
            return g;
          }
          for (q = 0;this._children && q < this._children.length;q++) {
            p = this._children[q], (h || 1 === p._kind && p._name.localName === c.localName) && (m || 1 === p._kind && p._name.uri === c.uri) && (g._children[n++] = p);
          }
          return g;
        };
        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 & L.ATTRIBUTE);
          return this.getProperty(q(b, a, e), e);
        };
        c.prototype.hasProperty = function(a, e, f) {
          if (f) {
            return e = L.isQName(a) ? a : this.resolveMultinameProperty(a.namespaces, a.name, a.flags), !!this[L.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 g = this._attributes[e];
              if (f || g._name.localName === a.localName && (c || g._name.uri === a.uri)) {
                return!0;
              }
            }
            return!1;
          }
          for (e = 0;e < this._children.length;e++) {
            if (g = this._children[e], (f || 1 === g._kind && g._name.localName === a.localName) && (c || 1 === g._kind && g._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, g = f.uri, n = f.name.flags, q = n & 4, h = n & 8;
          if (e) {
            if (n = this._attributes) {
              for (var m = this._attributes = [], p = 0;p < n.length;p++) {
                var l = n[p], x = l._name;
                !q && x.localName !== c || !h && x.uri !== g ? m.push(l) : l._parent = null;
              }
            }
          } else {
            if (this._children.some(function(b, a) {
              return(q || 1 === b._kind && b._name.localName === f.localName) && (h || 1 === b._kind && b._name.uri === f.uri);
            })) {
              return!0;
            }
          }
        };
        c.prototype.asHasProperty = function(b, a, e) {
          if (c.isTraitsOrDynamicPrototype(this)) {
            return B.call(this, b, a, e);
          }
          var f = !!(e & L.ATTRIBUTE);
          a = q(b, a, f);
          if (this.hasProperty(a, f, !1)) {
            return!0;
          }
          b = L.isQName(a) ? a : this.resolveMultinameProperty(b, a, e);
          return!!this[L.getQualifiedName(b)];
        };
        c.prototype._asDeleteProperty = function(b, a, e) {
          if (c.isTraitsOrDynamicPrototype(this)) {
            return y.call(this, b, a, e);
          }
          var f = !!(e & L.ATTRIBUTE);
          a = q(b, a, f);
          if (this.deleteProperty(a, f)) {
            return!0;
          }
          b = L.isQName(a) ? a : this.resolveMultinameProperty(b, a, e);
          return delete this[L.getQualifiedName(b)];
        };
        c.prototype.asHasPropertyInternal = function(b, a, e) {
          return this.asHasProperty(b, a, e);
        };
        c.prototype.asCallProperty = function(b, a, e, f, g) {
          if (c.isTraitsOrDynamicPrototype(this) || f) {
            return D.call(this, b, a, e, f, g);
          }
          var n;
          n = this.resolveMultinameProperty(b, a, e);
          if (n = this.asOpenMethods[n] || this[n]) {
            return n.apply(f ? null : this, g);
          }
          if (this.hasSimpleContent()) {
            return Object(v(this)).asCallProperty(b, a, e, f, g);
          }
          throwError("TypeError", k.Errors.CallOfNonFunctionError, "value");
        };
        c.prototype._delete = function(b, a) {
          A("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 V) {
              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 V) {
              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, g = b.uri, n = e & 4;
          e & 1 ? this._attributes.forEach(function(b, e) {
            if (n || c === b._name.localName && g === b._name.uri) {
              a._children[f++] = b;
            }
          }) : this._children.forEach(function(b, e) {
            if (n || c === b._name.localName && g === 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() {
          var b = c.prototype;
          K(b, "asDeleteProperty", b._asDeleteProperty);
          K(b, "$BgvalueOf", Object.prototype.$BgvalueOf);
          K(b, "$BghasOwnProperty", b.native_hasOwnProperty);
          K(b, "$BgpropertyIsEnumerable", b.native_propertyIsEnumerable);
          F(c, ["settings", "setSettings", "defaultSettings"]);
          F(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 = O.ALL;
        c._prettyIndent = 2;
        return c;
      }(a.ASNative);
      a.ASXML = S;
      var V = 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 {
              g(b, this);
            }
          }
        }
        __extends(c, f);
        c.addXML = function(b, e) {
          var f;
          b instanceof S ? (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 += v(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 = H(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), g = this._children, n = 0;n < g.length;n++) {
            var q = g[n];
            if (1 === q._kind && q.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 g = this._children[c];
            1 === g._kind && g.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 g = this._children, n = 0;n < g.length;n++) {
            g[n].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 s(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), g = 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, n = 0;n < e.length;n++) {
                  g._children.push(e[n]);
                }
              }
            }
          });
          return g;
        };
        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 & L.ATTRIBUTE);
          return this.getProperty(q(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 & L.ATTRIBUTE);
          return this.hasProperty(q(b, a, e), e);
        };
        c.prototype.asHasPropertyInternal = function(b, a, e) {
          e = !!(e & L.ATTRIBUTE);
          return this.hasProperty(q(b, a, e), e);
        };
        c.prototype.resolveValue = function() {
          return this;
        };
        c.prototype.setProperty = function(b, f, c) {
          if (d.isIndex(b)) {
            b |= 0;
            var g = null;
            if (this._targetObject && (g = this._targetObject.resolveValue(), null === g)) {
              return;
            }
            f = this.length();
            if (b >= f) {
              if (g instanceof a.ASXMLList) {
                if (1 !== g.length()) {
                  return;
                }
                g = g._children[0];
              }
              if (g && 1 !== g._kind) {
                return;
              }
              var n = new a.ASXML;
              n._parent = g;
              n._name = this._targetProperty;
              if (e(this._targetProperty)) {
                if (g.hasProperty(this._targetProperty, !0, !1)) {
                  return;
                }
                n._kind = 2;
              } else {
                d.isNullOrUndefined(this._targetProperty) || "*" === this._targetProperty.localName ? (n._name = null, n._kind = 3) : n._kind = 1;
              }
              b = f;
              if (2 !== n._kind) {
                if (null !== g) {
                  var q;
                  if (0 < b) {
                    var h = this._children[b - 1];
                    for (q = 0;q < g.length - 1 && g._children[q] !== h;q++) {
                    }
                  } else {
                    q = g.length() - 1;
                  }
                  g._children[q + 1] = n;
                  n._parent = g;
                }
                c instanceof a.ASXML ? n._name = c._name : c instanceof a.ASXMLList && (n._name = c._targetProperty);
                this.append(n);
              }
            }
            r(c) && 3 !== c._kind && 2 !== c._kind || (c += "");
            q = this._children[b];
            n = q._kind;
            g = q._parent;
            if (2 === n) {
              var m = g._children.indexOf(q);
              g.setProperty(q._name, !0, !1);
              this._children[b] = g._children[m];
            } else {
              if (c instanceof a.ASXMLList) {
                m = c._shallowCopy();
                c = m.length();
                if (null !== g) {
                  for (n = g._children.indexOf(q), g.replace(n, m), q = 0;q < c;q++) {
                    m.setProperty(q, !1, g._children[n + q]);
                  }
                }
                if (0 === c) {
                  for (q = b + 1;q < f;q++) {
                    this._children[q - 1] = this._children[q];
                  }
                  this._children.length--;
                } else {
                  for (q = f - 1;q > b;q--) {
                    this._children[q + c - 1] = this._children[q];
                  }
                }
                for (q = 0;q < c;q++) {
                  this._children[b + q] = m._children[q];
                }
              } else {
                c instanceof a.ASXML || 3 <= n ? (null !== g && (n = g._children.indexOf(q), g.replace(n, m), c = g._children[n]), "string" === typeof c ? (m = new a.ASXML(c), this._children[b] = m) : this._children[b] = c) : q.setProperty("*", !1, c);
              }
            }
          } else {
            if (0 === this._children.length) {
              g = this.resolveValue();
              if (null === g || 1 !== g._children.length) {
                return;
              }
              this.append(g._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 M.call(this, b, a, e, f);
          }
          e = !!(e & L.ATTRIBUTE);
          a = q(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 & L.ATTRIBUTE);
          a = q(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, g) {
          if (c.isTraitsOrDynamicPrototype(this) || f) {
            return D.call(this, b, a, e, f, g);
          }
          var n;
          n = this.resolveMultinameProperty(b, a, e);
          if (n = this.asOpenMethods[n] || this[n]) {
            return n.apply(f ? null : this, g);
          }
          if (1 === this.length()) {
            return this._children[0].asCallProperty(b, a, e, f, g);
          }
          throwError("TypeError", k.Errors.CallOfNonFunctionError, "value");
        };
        c.instanceConstructor = c;
        c.classInitializer = function() {
          var b = c.prototype;
          K(b, "asDeleteProperty", b._asDeleteProperty);
          K(b, "$BgvalueOf", Object.prototype.$BgvalueOf);
          K(b, "$BghasOwnProperty", b.native_hasOwnProperty);
          K(b, "$BgpropertyIsEnumerable", b.native_propertyIsEnumerable);
          F(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;
          g(b, e);
          return e;
        };
        return c;
      }(a.ASNative);
      a.ASXMLList = V;
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      function r(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 g = b.classInfo ? b : Object.getPrototypeOf(b).class, q = g === b && !(a & 512), h = g.classInfo, m = {};
        m[n] = e ? "int" : f ? "builtin.as$0::MethodClosure" : c(h.instanceInfo.name);
        m[l("isDynamic")] = q || !(h.instanceInfo.flags & 1) && !f;
        m[l("isFinal")] = q || !!(h.instanceInfo.flags & 2) || f;
        m[l("isStatic")] = q;
        if (a & 256) {
          var p = m[l("traits")] = s(g, h, q, a)
        }
        f && (p[l("bases")].unshift("Function"), p[l("accessors")][1][l("declaredBy")] = "builtin.as$0::MethodClosure");
        return m;
      }
      function v(b, e) {
        for (var f = 0, c = e[l("bases")], g = 0;c && g < c.length;g++) {
          var n = new a.ASXML('<extendsClass type="' + a.escapeAttributeValue(c[g]) + '"/>');
          b.appendChild(n);
          f++;
        }
        c = e[l("interfaces")];
        for (g = 0;c && g < c.length;g++) {
          n = new a.ASXML('<implementsInterface type="' + a.escapeAttributeValue(c[g]) + '"/>'), b.appendChild(n), f++;
        }
        null !== e[l("constructor")] && (n = new a.ASXML("<constructor/>"), u(n, e[l("constructor")]), b.appendChild(n), f++);
        c = e[l("variables")];
        for (g = 0;c && g < c.length;g++) {
          var q = c[g], n = "readonly" === q[l("access")] ? "constant" : "variable", n = new a.ASXML("<" + n + ' name="' + a.escapeAttributeValue(q[l("name")]) + '" type="' + q[l("type")] + '"/>');
          null !== q[l("uri")] && n.setProperty("uri", !0, q[l("uri")]);
          null !== q[l("metadata")] && t(n, q[l("metadata")]);
          b.appendChild(n);
          f++;
        }
        c = e[l("accessors")];
        for (g = 0;c && g < c.length;g++) {
          q = c[g], n = new a.ASXML('<accessor name="' + a.escapeAttributeValue(q[l("name")]) + '" access="' + q[l("access")] + '" type="' + a.escapeAttributeValue(q[l("type")]) + '" declaredBy="' + a.escapeAttributeValue(q[l("declaredBy")]) + '"/>'), null !== q[l("uri")] && n.setProperty("uri", !0, q[l("uri")]), null !== q[l("metadata")] && t(n, q[l("metadata")]), b.appendChild(n), f++;
        }
        c = e[l("methods")];
        for (g = 0;c && g < c.length;g++) {
          q = c[g], n = new a.ASXML('<method name="' + a.escapeAttributeValue(q[l("name")]) + '" declaredBy="' + a.escapeAttributeValue(q[l("declaredBy")]) + '" returnType="' + a.escapeAttributeValue(q[l("returnType")]) + '"/>'), u(n, q[l("parameters")]), null !== q[l("uri")] && n.setProperty("uri", !0, q[l("uri")]), null !== q[l("metadata")] && t(n, q[l("metadata")]), b.appendChild(n), f++;
        }
        t(b, e[l("metadata")]);
        return 0 < f;
      }
      function u(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 t(b, e) {
        if (e) {
          for (var f = 0;f < e.length;f++) {
            for (var c = e[f], g = new a.ASXML('<metadata name="' + a.escapeAttributeValue(c[l("name")]) + '"/>'), c = c[l("value")], n = 0;n < c.length;n++) {
              var q = c[n], q = new a.ASXML('<arg key="' + a.escapeAttributeValue(q[l("key")]) + '" value="' + a.escapeAttributeValue(q[l("value")]) + '"/>');
              g.appendChild(q);
            }
            b.appendChild(g);
          }
        }
      }
      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 h(b) {
        if (!b) {
          return null;
        }
        var a = [], e;
        for (e in b) {
          "native" !== e && a.push(p(b[e]));
        }
        return a;
      }
      function p(b) {
        var a = {};
        a[n] = b.name;
        a[A] = b.value.map(function(b) {
          var a = {};
          a[A] = b.value;
          a[H] = b.key;
          return a;
        });
        return a;
      }
      function s(g, m, p, d) {
        function s(a) {
          for (var g = a.length;g--;) {
            var m = a[g], l = m.name.getNamespace();
            if (!(!l.isPublic() && !m.name.uri || d & 1 && l.uri)) {
              var r = c(m.name);
              if (S[r] !== V[r]) {
                l = Q[r], l[e] = "readwrite", 2 === m.kind && (l[x] = m.methodInfo.returnType ? c(m.methodInfo.returnType) : "*");
              } else {
                if (!Q[r]) {
                  switch(l = {}, Q[r] = l, m.kind) {
                    case 6:
                    ;
                    case 0:
                      if (!(d & 8)) {
                        continue;
                      }
                      l[n] = r;
                      l[q] = void 0 === m.name.uri ? null : m.name.uri;
                      l[x] = m.typeName ? c(m.typeName) : "*";
                      l[e] = "readwrite";
                      l[b] = d & 64 ? h(m.metadata) : null;
                      t.push(l);
                      break;
                    case 1:
                      if (!k) {
                        continue;
                      }
                      l[L] = m.methodInfo.returnType ? c(m.methodInfo.returnType) : "*";
                      l[b] = d & 64 ? h(m.metadata) : null;
                      l[n] = r;
                      l[q] = void 0 === m.name.uri ? null : m.name.uri;
                      for (var r = l[K] = [], m = m.methodInfo.parameters, u = 0;u < m.length;u++) {
                        var v = m[u], H = {};
                        H[x] = v.type ? c(v.type) : "*";
                        H[F] = "value" in v;
                        r.push(H);
                      }
                      l[f] = aa;
                      O.push(l);
                      break;
                    case 2:
                    ;
                    case 3:
                      if (!(d & 16) || p) {
                        continue;
                      }
                      l[n] = r;
                      2 === m.kind ? (l[x] = m.methodInfo.returnType ? c(m.methodInfo.returnType) : "*", S[r] = l) : (u = m.methodInfo.parameters[0].type, l[x] = u ? c(u) : "*", V[r] = l);
                      l[e] = 2 === m.kind ? "readonly" : "writeonly";
                      l[b] = d & 64 ? h(m.metadata) : null;
                      l[q] = void 0 === m.name.uri ? null : m.name.uri;
                      l[f] = aa;
                      A.push(l);
                  }
                }
              }
            }
          }
        }
        var r = d & 2, k = d & 32 && !p, u = {}, t = u[l("variables")] = d & 8 ? [] : null, A = u[l("accessors")] = d & 16 ? [] : null, v = null;
        d & 64 && (v = p ? [] : h(m.metadata) || []);
        u[b] = v;
        u[l("constructor")] = null;
        if (d & 4) {
          if (m = u[l("interfaces")] = [], !p) {
            for (var H in g.implementedInterfaces) {
              v = g.implementedInterfaces[H].getQualifiedClassName(), m.push(v);
            }
          }
        } else {
          u[l("interfaces")] = null;
        }
        var O = u[l("methods")] = k ? [] : null;
        H = u[l("bases")] = r ? [] : null;
        var Q = {}, S = {}, V = {};
        for (m = !1;g;) {
          var aa = c(g.classInfo.instanceInfo.name);
          r && m && !p ? H.push(aa) : m = !0;
          if (d & 1024 && g === a.ASObject) {
            break;
          }
          p ? s(g.classInfo.traits) : s(g.classInfo.instanceInfo.traits);
          g = g.baseClass;
        }
        p && (d & 16 && (g = {}, g[n] = "prototype", g[x] = "*", g[e] = "readonly", g[b] = null, g[q] = null, g[f] = "Class", A.push(g)), r && (H.pop(), H.push("Class", "Object"), g = a.ASClass));
        return u;
      }
      var m = d.AVM2.ABC.Multiname, g;
      (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";
      })(g || (g = {}));
      var f = l("declaredBy"), b = l("metadata"), e = l("access"), q = l("uri"), n = l("name"), x = l("type"), L = l("returnType"), A = l("value"), H = l("key"), K = l("parameters"), F = l("optional");
      a.describeTypeJSON = r;
      a.describeType = function(b, e) {
        var f = r(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 g = f[l("traits")][l("bases")];
        g.length && c.setProperty("base", !0, g[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());
        v(c, f[l("traits")]);
        if (f = r(b, e | 512)) {
          g = new a.ASXML("<factory/>"), g.setProperty("type", !0, f[l("name")]), v(g, f[l("traits")]) && c.appendChild(g);
        }
        return c;
      };
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(d) {
        (function(d) {
          var r = Object.prototype.asGetProperty, k = Object.prototype.asSetProperty, l = Object.prototype.asHasProperty, c = Object.prototype.asDeleteProperty, h = Object.prototype.asGetEnumerableKeys, p = function(a) {
            function m(a) {
            }
            __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.init = function(a) {
              this.weakKeys = !!a;
              this.map = new WeakMap;
              a || (this.keys = []);
              this.primitiveMap = Object.create(null);
            };
            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 r.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 k.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 h.call(this);
              }
              var a = [], f;
              for (f in this.primitiveMap) {
                a.push(f);
              }
              return this.weakKeys ? a : a.concat(this.keys);
            };
            m.protocol = m.prototype;
            return m;
          }(a.ASNative);
          d.Dictionary = p;
          d.OriginalDictionary = p;
        })(d.utils || (d.utils = {}));
      })(a.flash || (a.flash = {}));
    })(d.AS || (d.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var r = d.Debug.notImplemented, k = d.AVM2.ABC.Namespace;
      (function(d) {
        (function(d) {
          var l = Object.prototype.asGetProperty, c = Object.prototype.asSetProperty, h = Object.prototype.asCallProperty, p = Object.prototype.asHasProperty, s = Object.prototype.asHasOwnProperty, m = Object.prototype.asHasTraitProperty, g = Object.prototype.asDeleteProperty, f = function(b) {
            function a() {
              b.apply(this, arguments);
            }
            __extends(a, b);
            a.prototype.asGetProperty = function(b, a, e) {
              return m.call(this, b, a, e) ? l.call(this, b, a, e) : h.call(this, [k.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) {
              m.call(this, b, a, e) ? c.call(this, b, a, e, f) : h.call(this, [k.PROXY], "setProperty", 0, !1, [a, f]);
            };
            a.prototype.asCallProperty = function(b, a, e, f, c) {
              return m.call(this, b, a, e) ? h.call(this, b, a, e, !1, c) : h.call(this, [k.PROXY], "callProperty", 0, !1, [a].concat(c));
            };
            a.prototype.asHasProperty = function(b, a, e) {
              return m.call(this, b, a, e) ? p.call(this, b, a, e) : h.call(this, [k.PROXY], "hasProperty", 0, !1, [a]);
            };
            a.prototype.asHasOwnProperty = function(b, a, e) {
              return m.call(this, b, a, e) ? s.call(this, b, a, e) : h.call(this, [k.PROXY], "hasProperty", 0, !1, [a]);
            };
            a.prototype.asDeleteProperty = function(b, a, e) {
              return m.call(this, b, a, e) ? g.call(this, b, a, e) : h.call(this, [k.PROXY], "deleteProperty", 0, !1, [a]);
            };
            a.prototype.asNextName = function(b) {
              r("Proxy asNextName");
            };
            a.prototype.asNextValue = function(b) {
              r("Proxy asNextValue");
            };
            a.prototype.asNextNameIndex = function(b) {
              r("Proxy asNextNameIndex");
            };
            a.protocol = a.prototype;
            return a;
          }(a.ASNative);
          d.Proxy = f;
          d.OriginalProxy = f;
        })(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 r = d.Debug.notImplemented, v = d.Debug.unexpected, u = 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() {
              r("public flash.net.ObjectEncoding::get dynamicPropertyWriter");
              return null;
            }, set:function(a) {
              r("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(r) {
        (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.readObject = function() {
              switch(this._objectEncoding) {
                case r.net.ObjectEncoding.AMF0:
                  return k.AMF0.read(this);
                case r.net.ObjectEncoding.AMF3:
                  return k.AMF3.read(this);
                default:
                  v("Object Encoding");
              }
            };
            c.prototype.writeObject = function(a) {
              switch(this._objectEncoding) {
                case r.net.ObjectEncoding.AMF0:
                  return k.AMF0.write(this, a);
                case r.net.ObjectEncoding.AMF3:
                  return k.AMF3.write(this, a);
                default:
                  v("Object Encoding");
              }
            };
            c.instanceConstructor = u;
            c.staticNatives = [u];
            c.instanceNatives = [u.prototype];
            c.callableConstructor = null;
            c.initializer = function(a) {
              var h, g = 0;
              a ? (a instanceof ArrayBuffer ? h = a.slice() : Array.isArray(a) ? h = (new Uint8Array(a)).buffer : "buffer" in a ? a.buffer instanceof ArrayBuffer ? h = (new Uint8Array(a)).buffer : a.buffer instanceof Uint8Array ? (h = a.buffer.byteOffset, h = a.buffer.buffer.slice(h, h + a.buffer.length)) : h = a.buffer.slice() : d.Debug.unexpected("Source type."), g = h.byteLength) : h = new ArrayBuffer(c.INITIAL_SIZE);
              this._buffer = h;
              this._length = g;
              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 = r.net.ObjectEncoding.DEFAULT;
            return c;
          }(a.ASNative);
          l.ByteArray = c;
          c.prototype.asGetNumericProperty = u.prototype.getValue;
          c.prototype.asSetNumericProperty = u.prototype.setValue;
          l.OriginalByteArray = c;
        })(r.utils || (r.utils = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var r = d.Debug.notImplemented, k = d.Debug.somewhatImplemented, u = d.AVM2.Runtime.asCoerceString;
      (function(t) {
        (function(l) {
          var c = function(a) {
            function c() {
            }
            __extends(c, a);
            Object.defineProperty(c, "enabled", {get:function() {
              r("public flash.system.IME::static get enabled");
            }, set:function(a) {
              r("public flash.system.IME::static set enabled");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c, "conversionMode", {get:function() {
              r("public flash.system.IME::static get conversionMode");
            }, set:function(a) {
              u(a);
              r("public flash.system.IME::static set conversionMode");
            }, enumerable:!0, configurable:!0});
            c.setCompositionString = function(a) {
              u(a);
              r("public flash.system.IME::static setCompositionString");
            };
            c.doConversion = function() {
              r("public flash.system.IME::static doConversion");
            };
            c.compositionSelectionChanged = function(a, c) {
              r("public flash.system.IME::static compositionSelectionChanged");
            };
            c.compositionAbandoned = function() {
              r("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() {
              r("public flash.system.System::get ime");
            }, enumerable:!0, configurable:!0});
            c.setClipboard = function(a) {
              a = u(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;
        })(t.system || (t.system = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var r = d.AVM2.ABC.Multiname, v = d.AVM2.ABC.ClassInfo, u = d.AVM2.ABC.ScriptInfo, t = d.AVM2.ABC.InstanceInfo, l = d.AVM2.ABC.Info, c = d.AVM2.ABC.MethodInfo, h = d.Debug.notImplemented, p = d.ArrayUtilities.popManyIntoVoid, s = function() {
        return function(b) {
          void 0 === b && (b = "");
          this.message = b;
          this.name = "VerifierError";
        };
      }();
      a.VerifierError = s;
      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 g = function() {
        function a() {
        }
        a.from = function(e, c) {
          var f = a._cache[e.hash];
          f || (f = a._cache[e.hash] = new b(e, c));
          return f;
        };
        a.fromSimpleName = function(b, e) {
          return a.fromName(r.fromSimpleName(b), e);
        };
        a.fromName = function(b, e) {
          if (void 0 === b) {
            return a.Undefined;
          }
          var c = r.isQName(b) ? r.getFullQualifiedName(b) : void 0;
          if (c) {
            var f = a._cache.byQN[c];
            if (f) {
              return f;
            }
          }
          if (c === r.getPublicQualifiedName("void")) {
            return a.Void;
          }
          f = (f = e.findClassInfo(b)) ? a.from(f, e) : a.Any;
          b.hasTypeParameter() && (f = new n(f, a.fromName(b.typeParameter, e)));
          return a._cache.byQN[c] = f;
        };
        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 n;
        };
        a.prototype.isMethodType = function() {
          return this instanceof e;
        };
        a.prototype.isMultinameType = function() {
          return this instanceof q;
        };
        a.prototype.isConstantType = function() {
          return this instanceof x;
        };
        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 = g;
      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 g.Any;
        };
        return a;
      }(g);
      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 = g.from(b.instanceInfo, this.domain));
        };
        a.prototype.classType = function() {
          var b = this.info;
          return this._cachedType || (this._cachedType = g.from(b.classInfo, this.domain));
        };
        a.prototype.super = function() {
          if (this.info instanceof v) {
            return g.Class;
          }
          var b = this.info;
          return b.superName ? g.fromName(b.superName, this.domain).instanceType() : null;
        };
        a.prototype.findTraitByName = function(b, a, e) {
          var f = !e, c;
          if (r.isQName(a)) {
            for (a = r.getQualifiedName(a), n = 0;n < b.length;n++) {
              if (c = b[n], r.getQualifiedName(c.name) === a && !(e && c.isGetter() || f && c.isSetter())) {
                return c;
              }
            }
          } else {
            for (var g, n = 0;n < a.namespaces.length;n++) {
              if (f = a.getQName(n), a.namespaces[n].isDynamic()) {
                g = f;
              } else {
                if (c = this.findTraitByName(b, f, e)) {
                  return c;
                }
              }
            }
            if (g) {
              return this.findTraitByName(b, g, 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 g.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 g.Object;
            }
          }
          return g.Any;
        };
        a.prototype.isScriptInfo = function() {
          return this.info instanceof u;
        };
        a.prototype.isClassInfo = function() {
          return this.info instanceof v;
        };
        a.prototype.isMethodInfo = function() {
          return this.info instanceof c;
        };
        a.prototype.isInstanceInfo = function() {
          return this.info instanceof t;
        };
        a.prototype.isInstanceOrClassInfo = function() {
          return this.isInstanceInfo() || this.isClassInfo();
        };
        a.prototype.applyType = function(b) {
          return new n(this, b);
        };
        a.prototype._getInfoName = function() {
          if (this.info instanceof u) {
            return "SI";
          }
          if (this.info instanceof v) {
            return "CI:" + this.info.instanceInfo.name.name;
          }
          if (this.info instanceof t) {
            return "II:" + this.info.name.name;
          }
          if (this.info instanceof c) {
            return "MI";
          }
        };
        a.prototype.toString = function() {
          switch(this) {
            case g.Int:
              return "I";
            case g.Uint:
              return "U";
            case g.Array:
              return "A";
            case g.Object:
              return "O";
            case g.String:
              return "S";
            case g.Number:
              return "N";
            case g.Boolean:
              return "B";
            case g.Function:
              return "F";
          }
          return this._getInfoName();
        };
        return a;
      }(g);
      a.TraitsType = b;
      var e = function(b) {
        function a(e, f) {
          b.call(this, g.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 = g.fromName(this.methodInfo.returnType, this.domain));
        };
        return a;
      }(b);
      a.MethodType = e;
      var q = 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;
      }(g);
      a.MultinameType = q;
      var n = 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 = n;
      var x = 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;
      }(g);
      a.ConstantType = x;
      var L = 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 = L;
      var A = 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;
          g.initializeTypes(e);
          d.AVM2.Verifier.traceLevel.value && (this.writer = new d.IndentingWriter);
          this.multinames = b.abc.constantPool.multinames;
          this.returnType = g.Undefined;
        }
        a.prototype.verify = function() {
          this.writer && this.methodInfo.trace(this.writer);
          this._verifyBlocks(this._prepareEntryState());
        };
        a.prototype._prepareEntryState = function() {
          var b = new L, a = this.methodInfo;
          this.thisType = a.holder ? g.from(a.holder, this.domain) : g.Any;
          b.local.push(this.thisType);
          for (var e = a.parameters, f = 0;f < e.length;f++) {
            b.local.push(g.fromName(e[f].type, this.domain).instanceType());
          }
          e = a.localCount - a.parameters.length - 1;
          if (a.needsRest() || a.needsArguments()) {
            b.local.push(g.Array), e -= 1;
          }
          for (f = 0;f < e;f++) {
            b.local.push(g.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 g = c.pop(), n = g.verifierEntryState.clone();
            this._verifyBlock(g, n);
            g.succs.forEach(function(b) {
              c.contains(b) ? (a && a.writeLn("Forward Merged Block: " + b.bid + " " + n.toString() + " with " + b.verifierEntryState.toString()), b.verifierEntryState.merge(n), a && a.writeLn("Merged State: " + b.verifierEntryState)) : b.verifierEntryState ? b.verifierEntryState.isSubset(n) || (a && a.writeLn("Backward Merged Block: " + g.bid + " with " + b.bid + " " + n.toString() + " with " + b.verifierEntryState.toString()), b.verifierEntryState.merge(n), c.push(b), a && a.writeLn("Merged State: " + 
              b.verifierEntryState)) : (b.verifierEntryState = n, 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 U.ti || (U.ti = new m);
          }
          function n(b) {
            c().type = b;
            $.push(b);
            O.pushCount++;
            b === g.Any && O.pushAnyCount++;
          }
          function l(b) {
            return $.pop();
          }
          function L() {
            h("Bytecode not implemented in verifier: " + U);
          }
          function u() {
            var b = O.multinames[U.index];
            if (b.isRuntime()) {
              var a;
              a = b.isRuntimeName() ? l() : x.from(b.name);
              var e;
              e = b.isRuntimeNamespace() ? [l()] : x.fromArray(b.namespaces);
              return new q(e, a, b.flags);
            }
            return x.from(b);
          }
          function t(b) {
            return b.isMultinameType() && b.asMultinameType().name.isNumeric() || b.isConstantType() && r.isNumeric(b.value) ? !0 : !1;
          }
          function A(b, a) {
            if (b.isTraitsType() || b.isParameterizedType()) {
              var f = b.getTrait(a, !1, !0);
              if (f) {
                Q && Q.debugLn("getProperty(" + a + ") -> " + f);
                c().trait = f;
                if (f.isSlot() || f.isConst()) {
                  return g.fromName(f.typeName, O.domain).instanceType();
                }
                if (f.isGetter()) {
                  return g.fromName(f.methodInfo.returnType, O.domain).instanceType();
                }
                if (f.isClass()) {
                  return g.from(f.classInfo, O.domain);
                }
                if (f.isMethod()) {
                  return new e(f.methodInfo, O.domain);
                }
              } else {
                if (t(a) && b.isParameterizedType()) {
                  return f = b.asParameterizedType().parameter, Q && Q.debugLn("getProperty(" + a + ") -> " + f), f;
                }
                b !== g.Array && Q && Q.warnLn("getProperty(" + a + ")");
              }
            }
            return g.Any;
          }
          function v(b, a, e) {
            if (b.isTraitsType() || b.isParameterizedType()) {
              (e = b.getTrait(a, !0, !0)) ? (Q && Q.debugLn("setProperty(" + a + ") -> " + e), c().trait = e) : t(a) && b.isParameterizedType() || b !== g.Array && Q && Q.warnLn("setProperty(" + a + ")");
            }
          }
          function H(b, a) {
            if (b.isMultinameType()) {
              return g.Any;
            }
            for (var e = O.savedScope, f = w.length - 1;f >= -e.length;f--) {
              var n = 0 <= f ? w[f] : e[e.length + f];
              if (n.isTraitsType()) {
                if (n.getTrait(b, !1, !0)) {
                  c().scopeDepth = w.length - f - 1;
                  if (n.isClassInfo() || n.isScriptInfo()) {
                    c().object = k.Runtime.LazyInitializer.create(n.info);
                  }
                  Q && Q.debugLn("findProperty(" + b + ") -> " + n);
                  return n;
                }
              } else {
                return Q && Q.warnLn("findProperty(" + b + ")"), g.Any;
              }
            }
            if (e = O.domain.findDefiningScript(b.value, !1)) {
              return c().object = k.Runtime.LazyInitializer.create(e.script), n = g.from(e.script, O.domain), Q && Q.debugLn("findProperty(" + b + ") -> " + n), n;
            }
            if (b.isConstantType() && "unsafeJSNative" === b.value.name) {
              return g.Any;
            }
            Q && Q.warnLn("findProperty(" + b + ")");
            return g.Any;
          }
          function K(a) {
            if (a instanceof b && (a = a.getTraitAt(U.index), Q && Q.debugLn("accessSlot() -> " + a), a)) {
              c().trait = a;
              if (a.isSlot()) {
                return g.fromName(a.typeName, O.domain).instanceType();
              }
              if (a.isClass()) {
                return g.from(a.classInfo, O.domain);
              }
            }
            return g.Any;
          }
          function T(b) {
            if (b.isTraitsType() || b.isParameterizedType()) {
              return b === g.Function || b === g.Class || b === g.Object ? g.Object : b.instanceType();
            }
            Q && Q.warnLn("construct(" + b + ")");
            return g.Any;
          }
          for (var O = this, Q = this.writer, S = this.methodInfo, V = S.analysis.bytecodes, aa = f.local, $ = f.stack, w = f.scope, U, ba = this.savedScope[0], R, N, Z, fa = a.position, X = a.end.position;fa <= X;fa++) {
            if (U = V[fa], R = U.op, 240 !== R && 241 !== R) {
              switch(Q && 1 < d.AVM2.Verifier.traceLevel.value && Q.writeLn(("stateBefore: " + f.toString() + " $$[" + this.savedScope.join(", ") + "]").padRight(" ", 100) + " : " + fa + ", " + U.toString(S.abc)), R) {
                case 1:
                  break;
                case 3:
                  l();
                  break;
                case 4:
                  Z = u();
                  N = l();
                  c().baseClass = k.Runtime.LazyInitializer.create(this.thisType.asTraitsType().super().classType().info);
                  n(A(N.super(), Z));
                  break;
                case 5:
                  R = l();
                  Z = u();
                  N = l();
                  c().baseClass = k.Runtime.LazyInitializer.create(this.thisType.asTraitsType().super().classType().info);
                  v(N.super(), Z, R);
                  break;
                case 6:
                  L();
                  break;
                case 7:
                  L();
                  break;
                case 8:
                  f.local[U.index] = g.Undefined;
                  break;
                case 10:
                  L();
                  break;
                case 11:
                  L();
                  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(g.Int);
                  break;
                case 29:
                  w.pop();
                  break;
                case 30:
                ;
                case 35:
                  l(g.Int);
                  l();
                  n(g.Any);
                  break;
                case 31:
                  n(g.Boolean);
                  break;
                case 50:
                  n(g.Boolean);
                  break;
                case 32:
                  n(g.Null);
                  break;
                case 33:
                  n(g.Undefined);
                  break;
                case 34:
                  L();
                  break;
                case 36:
                  n(g.Int);
                  break;
                case 37:
                  n(g.Int);
                  break;
                case 44:
                  n(g.String);
                  break;
                case 45:
                  n(g.Int);
                  break;
                case 46:
                  n(g.Uint);
                  break;
                case 47:
                  n(g.Number);
                  break;
                case 38:
                  n(g.Boolean);
                  break;
                case 39:
                  n(g.Boolean);
                  break;
                case 40:
                  n(g.Number);
                  break;
                case 41:
                  l();
                  break;
                case 42:
                  R = l();
                  n(R);
                  n(R);
                  break;
                case 43:
                  N = l();
                  Z = l();
                  n(N);
                  n(Z);
                  break;
                case 28:
                  l();
                  w.push(g.Any);
                  break;
                case 48:
                  w.push(l());
                  break;
                case 49:
                  L();
                  break;
                case 53:
                ;
                case 54:
                ;
                case 55:
                  n(g.Int);
                  break;
                case 56:
                ;
                case 57:
                  n(g.Number);
                  break;
                case 58:
                ;
                case 59:
                ;
                case 60:
                  l(g.Int);
                  break;
                case 61:
                ;
                case 62:
                  l(g.Number);
                  break;
                case 64:
                  n(g.Function);
                  break;
                case 65:
                  p($, U.argCount);
                  N = l();
                  l();
                  n(g.Any);
                  break;
                case 67:
                  throw new s("callmethod");;
                case 68:
                  L();
                  break;
                case 69:
                ;
                case 78:
                ;
                case 79:
                ;
                case 70:
                ;
                case 76:
                  p($, U.argCount);
                  Z = u();
                  N = l();
                  if (69 === R || 78 === R) {
                    N = this.thisType.super(), c().baseClass = k.Runtime.LazyInitializer.create(this.thisType.asTraitsType().super().classType().info);
                  }
                  N = A(N, Z);
                  if (79 === R || 78 === R) {
                    break;
                  }
                  N = N.isMethodType() ? N.asMethodType().returnType().instanceType() : N.isTraitsType() && N.isClassInfo() ? N.instanceType() : g.Any;
                  n(N);
                  break;
                case 71:
                  this.returnType.merge(g.Undefined);
                  break;
                case 72:
                  N = l();
                  S.returnType && (Z = g.fromName(S.returnType, this.domain).instanceType(), Z.isSubtypeOf(N) && (c().noCoercionNeeded = !0));
                  break;
                case 73:
                  p($, U.argCount);
                  $.pop();
                  this.thisType.isInstanceInfo() && this.thisType.super() === g.Object ? c().noCallSuperNeeded = !0 : c().baseClass = k.Runtime.LazyInitializer.create(this.thisType.asTraitsType().super().classType().info);
                  break;
                case 66:
                  p($, U.argCount);
                  n(T(l()));
                  break;
                case 74:
                  p($, U.argCount);
                  Z = u();
                  n(T(A($.pop(), Z)));
                  break;
                case 75:
                  L();
                  break;
                case 77:
                  L();
                  break;
                case 80:
                ;
                case 81:
                ;
                case 82:
                  break;
                case 83:
                  R = l();
                  N = l();
                  N === g.Any ? n(g.Any) : n(N.applyType(R));
                  break;
                case 84:
                  L();
                  break;
                case 85:
                  p($, 2 * U.argCount);
                  n(g.Object);
                  break;
                case 86:
                  p($, U.argCount);
                  n(g.Array);
                  break;
                case 87:
                  n(g.from(this.methodInfo, this.domain));
                  break;
                case 88:
                  n(g.Any);
                  break;
                case 89:
                  u();
                  l();
                  n(g.XMLList);
                  break;
                case 90:
                  n(g.Any);
                  break;
                case 93:
                  n(H(u(), !0));
                  break;
                case 94:
                  n(H(u(), !1));
                  break;
                case 95:
                  L();
                  break;
                case 96:
                  Z = u();
                  n(A(H(Z, !0), Z));
                  break;
                case 104:
                ;
                case 97:
                  R = l();
                  Z = u();
                  N = l();
                  v(N, Z, R);
                  break;
                case 98:
                  n(aa[U.index]);
                  break;
                case 99:
                  aa[U.index] = l();
                  break;
                case 100:
                  n(ba);
                  c().object = k.Runtime.LazyInitializer.create(ba.asTraitsType().info);
                  break;
                case 101:
                  n(w[U.index]);
                  break;
                case 102:
                  Z = u();
                  N = l();
                  n(A(N, Z));
                  break;
                case 103:
                  L();
                  break;
                case 105:
                  L();
                  break;
                case 106:
                  u();
                  l();
                  n(g.Boolean);
                  break;
                case 107:
                  L();
                  break;
                case 108:
                  n(K(l()));
                  break;
                case 109:
                  R = l();
                  N = l();
                  K(N);
                  break;
                case 110:
                  L();
                  break;
                case 111:
                  L();
                  break;
                case 112:
                  l();
                  n(g.String);
                  break;
                case 113:
                  l();
                  n(g.String);
                  break;
                case 114:
                  l();
                  n(g.String);
                  break;
                case 131:
                ;
                case 115:
                  l();
                  n(g.Int);
                  break;
                case 136:
                ;
                case 116:
                  l();
                  n(g.Uint);
                  break;
                case 132:
                ;
                case 117:
                  l();
                  n(g.Number);
                  break;
                case 129:
                ;
                case 118:
                  l();
                  n(g.Boolean);
                  break;
                case 119:
                  L();
                  break;
                case 120:
                  break;
                case 121:
                  l();
                  n(g.Number);
                  break;
                case 122:
                  L();
                  break;
                case 123:
                  L();
                  break;
                case 128:
                  N = l();
                  Z = g.fromName(this.multinames[U.index], this.domain).instanceType();
                  Z.isSubtypeOf(N) && (c().noCoercionNeeded = !0);
                  n(Z);
                  break;
                case 130:
                  break;
                case 133:
                  l();
                  n(g.String);
                  break;
                case 134:
                  N = l();
                  Z = g.fromName(this.multinames[U.index], this.domain).instanceType();
                  Z.isSubtypeOf(N) && (c().noCoercionNeeded = !0);
                  n(Z);
                  break;
                case 135:
                  N = l();
                  l();
                  N === g.Class ? n(N) : N.isTraitsType() ? n(N.instanceType()) : n(g.Any);
                  break;
                case 137:
                  L();
                  break;
                case 144:
                ;
                case 145:
                ;
                case 147:
                  l();
                  n(g.Number);
                  break;
                case 146:
                ;
                case 148:
                  aa[U.index] = g.Number;
                  break;
                case 149:
                  l();
                  n(g.String);
                  break;
                case 150:
                  l();
                  n(g.Boolean);
                  break;
                case 160:
                  Z = l();
                  N = l();
                  N.isNumeric() && Z.isNumeric() ? n(g.Number) : N === g.String || Z === g.String ? n(g.String) : n(g.Any);
                  break;
                case 161:
                ;
                case 162:
                ;
                case 163:
                ;
                case 164:
                  l();
                  l();
                  n(g.Number);
                  break;
                case 168:
                ;
                case 169:
                ;
                case 170:
                ;
                case 165:
                ;
                case 166:
                ;
                case 167:
                  l();
                  l();
                  n(g.Int);
                  break;
                case 151:
                  l();
                  n(g.Int);
                  break;
                case 171:
                ;
                case 172:
                ;
                case 173:
                ;
                case 174:
                ;
                case 175:
                ;
                case 176:
                ;
                case 177:
                ;
                case 180:
                  l();
                  l();
                  n(g.Boolean);
                  break;
                case 178:
                  l();
                  n(g.Boolean);
                  break;
                case 179:
                  l();
                  l();
                  n(g.Boolean);
                  break;
                case 194:
                ;
                case 195:
                  aa[U.index] = g.Int;
                  break;
                case 193:
                ;
                case 192:
                ;
                case 196:
                  l();
                  n(g.Int);
                  break;
                case 197:
                ;
                case 198:
                ;
                case 199:
                  l();
                  l();
                  n(g.Int);
                  break;
                case 208:
                ;
                case 209:
                ;
                case 210:
                ;
                case 211:
                  n(aa[R - 208]);
                  break;
                case 212:
                ;
                case 213:
                ;
                case 214:
                ;
                case 215:
                  aa[R - 212] = l();
                  break;
                case 239:
                  break;
                case 242:
                  break;
                case 243:
                  break;
                default:
                  console.info("Not Implemented: " + U);
              }
            }
          }
        };
        return a;
      }(), H = function() {
        function b() {
        }
        b.prototype._prepareScopeObjects = function(b, a) {
          var e = b.abc.applicationDomain;
          return a.getScopeObjects().map(function(b) {
            return b instanceof l ? g.from(b, e) : b instanceof d.AVM2.Runtime.Global ? g.from(b.scriptInfo, e) : b instanceof d.AVM2.AS.ASClass ? g.from(b.classInfo, e) : b instanceof d.AVM2.Runtime.ActivationInfo ? g.from(b.methodInfo, e) : b.class ? g.from(b.class.classInfo.instanceInfo, e) : g.Any;
          });
        };
        b.prototype.verifyMethod = function(b, a) {
          var e = this._prepareScopeObjects(b, a);
          (new A(b, b.abc.applicationDomain, e)).verify();
        };
        return b;
      }();
      a.Verifier = H;
    })(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 u(a) {
          var n, p = d.StringUtilities;
          if (a instanceof e) {
            return a.value instanceof t ? a.value.name : a.value;
          }
          if (a instanceof f) {
            return a.name;
          }
          if (a instanceof g) {
            return n = p.concat3("|", a.id, "|"), n;
          }
          if (a instanceof h) {
            return n = p.concat3("{", a.id, "}"), n;
          }
          if (a instanceof b) {
            return 3 === a.type ? (n = p.concat5("[", a.id, "->", a.argument.id, "]"), n) : (n = p.concat3("(", a.id, ")"), n);
          }
          if (a instanceof m) {
            return n = p.concat3("(", a.id, ")"), n;
          }
          if (a instanceof c) {
            return a.id;
          }
          l(a + " " + typeof a);
        }
        var t = 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 u(this);
            }
            var a = [];
            this.visitInputs(function(b) {
              a.push(u(b));
            });
            b = u(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 g = this[c];
              g instanceof b && g === a && (this[c] = e, f++);
              g instanceof Array && (f += g.replace(a, e));
            }
            return f;
          };
          b._nextID = [];
          return b;
        }();
        a.Node = c;
        c.prototype.nodeName = "Node";
        var h = function(b) {
          function a() {
            b.call(this);
          }
          __extends(a, b);
          return a;
        }(c);
        a.Control = h;
        h.prototype.nodeName = "Control";
        var p = 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;
        }(h);
        a.Region = p;
        p.prototype.nodeName = "Region";
        p = 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;
        }(p);
        a.Start = p;
        p.prototype.nodeName = "Start";
        p = function(b) {
          function a(e) {
            b.call(this);
            this.control = e;
          }
          __extends(a, b);
          a.prototype.visitInputs = function(b) {
            b(this.control);
          };
          return a;
        }(h);
        a.End = p;
        p.prototype.nodeName = "End";
        var s = 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;
        }(p);
        a.Stop = s;
        s.prototype.nodeName = "Stop";
        s = 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;
        }(p);
        a.If = s;
        s.prototype.nodeName = "If";
        s = 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;
        }(p);
        a.Switch = s;
        s.prototype.nodeName = "Switch";
        p = function(b) {
          function a(e) {
            b.call(this, e);
          }
          __extends(a, b);
          a.prototype.visitInputs = function(b) {
            b(this.control);
          };
          return a;
        }(p);
        a.Jump = p;
        p.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";
        p = function(b) {
          function a() {
            b.call(this);
          }
          __extends(a, b);
          return a;
        }(m);
        a.Store = p;
        p.prototype.nodeName = "Store";
        p = 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 = p;
        p.prototype.nodeName = "StoreDependent";
        s = function(b) {
          function a(e, f, c, g, n, h) {
            b.call(this, e, f);
            this.callee = c;
            this.object = g;
            this.args = n;
            this.flags = 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);
            this.object && b(this.object);
            k(this.args, b);
          };
          return a;
        }(p);
        a.Call = s;
        s.prototype.nodeName = "Call";
        s = function(b) {
          function a(e, f, c, g) {
            b.call(this, e, f);
            this.callee = c;
            this.args = 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);
            k(this.args, b);
          };
          return a;
        }(p);
        a.New = s;
        s.prototype.nodeName = "New";
        s = function(b) {
          function a(e, f, c, g) {
            b.call(this, e, f);
            this.object = c;
            this.name = 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);
          };
          return a;
        }(p);
        a.GetProperty = s;
        s.prototype.nodeName = "GetProperty";
        s = function(b) {
          function a(e, f, c, g, n) {
            b.call(this, e, f);
            this.object = c;
            this.name = g;
            this.value = n;
          }
          __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;
        }(p);
        a.SetProperty = s;
        s.prototype.nodeName = "SetProperty";
        s = function(b) {
          function a(e, f, c, g) {
            b.call(this, e, f);
            this.object = c;
            this.name = 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);
          };
          return a;
        }(p);
        a.DeleteProperty = s;
        s.prototype.nodeName = "DeleteProperty";
        p = function(b) {
          function a(e, f, c, g, n, h) {
            b.call(this, e, f);
            this.object = c;
            this.name = g;
            this.args = n;
            this.flags = 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);
            k(this.args, b);
          };
          return a;
        }(p);
        a.CallProperty = p;
        p.prototype.nodeName = "CallProperty";
        var g = 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 = g;
        g.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";
        p = 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 = p;
        p.prototype.nodeName = "Copy";
        p = 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 = p;
        p.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";
        p = function(b) {
          function a(e, f, c, g) {
            b.call(this);
            this.control = e;
            this.condition = f;
            this.left = c;
            this.right = g;
          }
          __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 = p;
        p.prototype.nodeName = "Latch";
        p = 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 = p;
        p.linkOpposites(p.SEQ, p.SNE);
        p.linkOpposites(p.EQ, p.NE);
        p.linkOpposites(p.TRUE, p.FALSE);
        p = 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 = p;
        p.prototype.nodeName = "Binary";
        p = 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 = p;
        p.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";
        p = function(b) {
          function a(e) {
            b.call(this);
            this.name = e;
          }
          __extends(a, b);
          return a;
        }(m);
        a.GlobalProperty = p;
        p.prototype.nodeName = "GlobalProperty";
        p = 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 = p;
        p.prototype.nodeName = "This";
        p = 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 = p;
        p.prototype.nodeName = "Throw";
        p = 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 = p;
        p.prototype.nodeName = "Arguments";
        p = 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 = p;
        p.prototype.nodeName = "Parameter";
        p = 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 = p;
        p.prototype.nodeName = "NewArray";
        p = 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 = p;
        p.prototype.nodeName = "NewObject";
        p = 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 = p;
        p.prototype.mustFloat = !0;
        p.prototype.nodeName = "KeyValuePair";
        a.nameOf = u;
      })(a.IR || (a.IR = {}));
    })(k.Compiler || (k.Compiler = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(a) {
        function v(b) {
          return b.id;
        }
        function u(b) {
          return b instanceof a.Phi;
        }
        function t(b) {
          return b instanceof a.Constant && b.value instanceof f;
        }
        function l(b) {
          return u(b) || b instanceof a.Store || s(b, 3);
        }
        function c(b) {
          return b instanceof a.Constant;
        }
        function h(b) {
          return b instanceof a.Control;
        }
        function p(b) {
          return b instanceof a.Value;
        }
        function s(b, e) {
          return b instanceof a.Projection && (!e || b.type === e);
        }
        function m(b) {
          return b instanceof a.Projection ? b.project() : b;
        }
        var g = d.Debug.unexpected, f = d.AVM2.ABC.Multiname, b = d.ArrayUtilities.top, e = d.ArrayUtilities.pushUnique, q = d.ArrayUtilities.unique;
        a.isNotPhi = function(b) {
          return!u(b);
        };
        a.isPhi = u;
        a.isScope = function(b) {
          return u(b) || b instanceof a.ASScope || s(b, 4);
        };
        a.isMultinameConstant = t;
        a.isMultiname = function(b) {
          return t(b) || b instanceof a.ASMultiname;
        };
        a.isStore = l;
        a.isConstant = c;
        a.isControlOrNull = function(b) {
          return h(b) || null === b;
        };
        a.isStoreOrNull = function(b) {
          return l(b) || null === b;
        };
        a.isControl = h;
        a.isValueOrNull = function(b) {
          return p(b) || null === b;
        };
        a.isValue = p;
        a.isProjection = s;
        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 n = 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 = n;
        var x = function() {
          function e(b) {
            this.exit = this.exit = b;
          }
          e.prototype.buildCFG = function() {
            return A.fromDFG(this);
          };
          e.preOrderDepthFirstSearch = function(b, a, e) {
            var f = [];
            b = [b];
            for (var c = b.push.bind(b), g;g = b.pop();) {
              1 !== f[g.id] && (f[g.id] = 1, e(g), b.push(g), a(g, c));
            }
          };
          e.postOrderDepthFirstSearch = function(a, e, f) {
            function c(b) {
              g[b.id] || n.push(b);
            }
            for (var g = [], n = [a];a = b(n);) {
              g[a.id] ? (1 === g[a.id] && (g[a.id] = 2, f(a)), n.pop()) : (g[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], g;g = f.pop();) {
              e[g.id] || (e[g.id] = 1, b && b(g), f.push(g), g.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);
              n[b.id] || (n[b.id] = !0, b.block && q.push(b.block), g.push(b), b.visitInputsNoConstants(c));
            }
            var g = [], n = {}, q = [];
            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;");
            q.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("}");
            });
            g.forEach(function(a) {
              b.writeLn("N" + a.id + ' [label = "' + a.toString() + '", color = "' + e(a) + '"];');
            });
            g.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 = x;
        var L = 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(v).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 = L;
        var A = function() {
          function b() {
            this.nextBlockID = 0;
            this.blocks = [];
          }
          b.fromDFG = function(e) {
            function f(b) {
              b instanceof a.Projection && (b = b.project());
              if (!g[b.id]) {
                g[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 n = 0;n < e.predecessors.length;n++) {
                  var q = e.predecessors[n], h, m = !1;
                  q instanceof a.Projection ? (h = q.project(), m = 1 === q.type) : h = q;
                  h instanceof a.Region && (h = new a.Jump(q), h = new a.Projection(h, 1), e.predecessors[n] = h, h = h.project(), m = !0);
                  f(h);
                  var d = h.control.block;
                  h instanceof a.Switch ? d.pushSuccessorAt(b, q.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 g = [];
            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 n(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) {
              g("Must have an exit block.");
            } else {
              if (1 === b.length && b[0] !== this.root) {
                this.exit = b[0];
              } else {
                for (this.exit = new n(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 n(f.nextBlockID++);
              a.name = b;
              g.push(a);
              return a;
            }
            var f = this, c = f.blockNames || (f.blockNames = {}), g = 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 g = c;
                  e(a).pushSuccessor(e(g), !0);
                } else {
                  e(c);
                }
                a = c;
              }
            });
            this.root = c[a];
          };
          b.prototype.buildBlock = function(b, a) {
            var e = new n(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 g = c.successors, n = 0, q = g.length;n < q;n++) {
                var h = g[n];
                f.get(h.id) || e(h);
              }
              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, g = e.length;c < g;c++) {
                var n = e[c].id, q = b.id, h = n;
                if (!(0 > a[n])) {
                  n = a[n];
                  for (f.clearAll();0 <= n;) {
                    f.set(n), n = a[n];
                  }
                  for (;0 <= q && !f.get(q);) {
                    q = a[q];
                  }
                }
                a[h] = q;
              }
            });
            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]);
            }
            return a;
          };
          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 g = 0, n = 0, q = c.successors.length;n < q;n++) {
                g |= b(c.successors[n]);
              }
              c.isLoopHeader && (g &= ~c.loops);
              c.loops = g;
              a.clear(c.id);
              return g;
            }
            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 L;
            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 = q(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) {
              u(b.def) && a.push(b.def);
            });
            for (var f = 0, c = 0, g = !0;g;) {
              c++, g = !1, a.forEach(function(a) {
                var c = b(a, a.args);
                if (c !== a) {
                  var n = e[a.id];
                  if (0 === n.uses.length) {
                    a = !1;
                  } else {
                    for (var q = 0, h = n.uses, m = 0, d = h.length;m < d;m++) {
                      q += h[m].replaceInput(a, c);
                    }
                    n.uses = [];
                    a = !0;
                  }
                  a && (g = !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 g = 0;g < c.length;g++) {
                  1 < c[g].predecessors.length && e.push({from:b[f], to:c[g]});
                }
              }
            }
            for (var b = e.length, n;n = e.pop();) {
              var f = n.from.successors.indexOf(n.to), c = n.to.predecessors.indexOf(n.from), g = n.to, q = g.region, h = new a.Region(q.predecessors[c]), m = new a.Jump(h), h = this.buildBlock(h, m);
              q.predecessors[c] = new a.Projection(m, 1);
              n = n.from;
              n.successors[f] = h;
              h.pushPredecessor(n);
              h.pushSuccessor(g);
              g.predecessors[c] = h;
            }
            return b;
          };
          b.prototype.allocateVariables = function() {
            function b(e) {
              !(s(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 g = e[c], n = g.phis, g = g.predecessors;
              if (n) {
                for (var q = 0;q < n.length;q++) {
                  for (var h = n[q], m = h.args, d = 0;d < g.length;d++) {
                    var l = g[d], p = m[d];
                    p.abstract || s(p, 3) || (l = f[l.id] || (f[l.id] = []), p = p.variable || p, h.variable !== p && l.push(new a.Move(h.variable, p)));
                  }
                }
              }
            }
            var x = this.blocks;
            f.forEach(function(b, e) {
              for (var f = x[e], c = 0;b.length;) {
                for (var g = 0;g < b.length;g++) {
                  for (var n = b[g], q = 0;q < b.length;q++) {
                    if (g !== q && b[q].from === n.to) {
                      n = null;
                      break;
                    }
                  }
                  n && (b.splice(g--, 1), f.append(n));
                }
                if (b.length) {
                  for (n = b[0], q = new a.Variable("t" + c++), x[e].append(new a.Move(q, n.to)), g = 1;g < b.length;g++) {
                    b[g].from === n.to && (b[g].from = q);
                  }
                }
              }
            });
          };
          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) {
              q[a.id] = !0;
              b(a) || a.control.block.append(a);
            }
            function f(b, a) {
              b.control = a;
              e(b);
            }
            function g(b) {
              var h = [];
              b.visitInputs(function(b) {
                c(b) || p(b) && h.push(m(b));
              });
              for (var d = 0;d < h.length;d++) {
                var l = h[d];
                u(l) || q[l.id] || g(l);
              }
              if (b.control) {
                b instanceof a.End || b instanceof a.Phi || b instanceof a.Start || q[b.id] || e(b);
              } else {
                if (h.length) {
                  l = h[0].control;
                  for (d = 1;d < h.length;d++) {
                    var s = h[d].control;
                    l.block.dominatorDepth < s.block.dominatorDepth && (l = s);
                  }
                  f(b, l);
                } else {
                  f(b, n.root.region);
                }
              }
            }
            var n = this, q = [], h = [];
            this.dfg.forEachInPreOrderDepthFirstSearch(function(e) {
              e instanceof a.Region || e instanceof a.Jump || (e.control && h.push(e), u(e) && e.args.forEach(function(a) {
                b(a) && (a.mustNotFloat = !0);
              }));
            });
            for (var d = 0;d < h.length;d++) {
              var l = h[d];
              if (l instanceof a.Phi) {
                var s = l.control.block;
                (s.phis || (s.phis = [])).push(l);
              }
              l.control && g(l);
            }
            h.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, g = 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 === g ? "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 = A;
        x = 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 = x;
      })(a.IR || (a.IR = {}));
    })(k.Compiler || (k.Compiler = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      function r(b) {
        return b instanceof w && d.isString(b.value);
      }
      function v(b) {
        return b instanceof w && d.isNumeric(b.value) ? !0 : b.ty && b.ty.isNumeric();
      }
      function u(b, a) {
        return v(b) && v(a) || t(b) && t(a) ? !0 : !1;
      }
      function t(b) {
        return r(b) ? !0 : b.ty && b.ty.isString();
      }
      function l(b) {
        return new w(b);
      }
      function c(b) {
        switch(b) {
          case 161:
            return N.SUB;
          case 162:
            return N.MUL;
          case 163:
            return N.DIV;
          case 164:
            return N.MOD;
          case 165:
            return N.LSH;
          case 166:
            return N.RSH;
          case 167:
            return N.URSH;
          case 168:
            return N.AND;
          case 169:
            return N.OR;
          case 170:
            return N.XOR;
          case 20:
            return N.NE;
          case 26:
            return N.SNE;
          case 19:
          ;
          case 171:
            return N.EQ;
          case 25:
          ;
          case 172:
            return N.SEQ;
          case 21:
          ;
          case 173:
            return N.LT;
          case 22:
          ;
          case 174:
            return N.LE;
          case 23:
          ;
          case 175:
            return N.GT;
          case 24:
          ;
          case 176:
            return N.GE;
          case 144:
            return N.NEG;
          case 196:
            return N.NEG;
          case 197:
            return N.ADD;
          case 198:
            return N.SUB;
          case 199:
            return N.MUL;
          case 17:
            return N.TRUE;
          case 18:
            return N.FALSE;
          case 150:
            return N.FALSE;
          case 151:
            return N.BITWISE_NOT;
          default:
            D("Invalid operator op: " + b);
        }
      }
      function h(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 p(b) {
        b = new a.IR.GlobalProperty(b);
        b.mustFloat = !0;
        return b;
      }
      function s(b, a) {
        var e = new $(b, a);
        da && (e = da.fold(e));
        return e;
      }
      function m(b, a, e) {
        var f = new aa(b, a, e);
        if (b === N.EQ || b === N.NE) {
          if (a.ty && a.ty.isStrictComparableWith(e.ty)) {
            f.operator = b === N.EQ ? N.SEQ : N.SNE;
          } else {
            if (!a.ty || a.ty.canBeXML() || !e.ty || e.ty.canBeXML()) {
              f = new U(null, null, p("asEquals"), null, [a, e], 0), b === N.NE && (f = s(N.FALSE, f));
            }
          }
        }
        da && (f = da.fold(f));
        return f;
      }
      function g(b) {
        return m(N.OR, b, l(0));
      }
      function f(b) {
        return m(N.URSH, b, l(0));
      }
      function b(b) {
        return v(b) ? b : s(N.PLUS, b);
      }
      function e(b) {
        return s(N.FALSE, s(N.FALSE, b));
      }
      function q(b) {
        b.shouldNotFloat = !0;
        return b;
      }
      function n(b, a) {
        return new U(null, null, b, null, a, 4);
      }
      function x(b, a) {
        return n(p(b), [a]);
      }
      function L(b) {
        return r(b) ? b : n(p("String"), [b]);
      }
      function A(b) {
        return r(b) ? b : ga(b) ? new w(y.asCoerceString(b.value)) : n(p("asCoerceString"), [b]);
      }
      function H(b) {
        return ga(b) ? new w(y.escapeXMLAttribute(b.value)) : n(p("escapeXMLAttribute"), [b]);
      }
      function K(b) {
        return ga(b) ? new w(y.escapeXMLElement(b.value)) : n(p("escapeXMLElement"), [b]);
      }
      var F = d.AVM2.ABC.Multiname, J = d.AVM2.ABC.InstanceInfo, M = d.Debug.notImplemented, D = d.Debug.assertUnreachable, B = d.ArrayUtilities.top, E = d.ArrayUtilities.unique, y = d.AVM2.Runtime, z = d.AVM2.Runtime.GlobalMultinameResolver, G = a.IR.Node, C = a.IR.Start, I = a.IR.Region, P = a.IR.Null, T = a.IR.Undefined, O = a.IR.True, Q = a.IR.False, S = a.IR.This, V = a.IR.Projection, aa = a.IR.Binary, $ = a.IR.Unary, w = a.IR.Constant, U = a.IR.Call, ba = a.IR.Phi, R = a.IR.Stop, N = a.IR.Operator, 
      Z = a.IR.Parameter, fa = a.IR.NewArray, X = a.IR.NewObject, ia = a.IR.KeyValuePair, ga = a.IR.isConstant, ca = new d.IndentingWriter, da = new a.IR.PeepholeOptimizer, ea = 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 = T;
          this.loads = [];
          this.saved = T;
        }
        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 = E(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;
      }(), W = x.bind(null, "asCoerceObject"), ka = Object.create(null);
      ka[F.Int] = g;
      ka[F.Uint] = f;
      ka[F.Number] = b;
      ka[F.String] = A;
      ka[F.Object] = W;
      ka[F.Boolean] = e;
      var Y = Object.create(null);
      Y[F.Int] = g;
      Y[F.Uint] = f;
      Y[F.Number] = x.bind(null, "Number");
      Y[F.String] = x.bind(null, "String");
      Y[F.Object] = x.bind(null, "Object");
      Y[F.Boolean] = x.bind(null, "Boolean");
      var la = x.bind(null, "Object"), ma = function() {
        function x(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;
        }
        x.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 fa(this.region, [this.state.stack.pop()]), b.shouldFloat = !0) : b = l(b.namespaces);
          return new a.IR.ASMultiname(b, e, f);
        };
        x.prototype.setIfStops = function(b) {
          b = new a.IR.If(this.region, b);
          this.stops = [{control:new V(b, 2), target:this.bytecodes[this.bc.position + 1], state:this.state}, {control:new V(b, 1), target:this.bc.target, state:this.state}];
        };
        x.prototype.setJumpStop = function() {
          this.stops = [{control:this.region, target:this.bc.target, state:this.state}];
        };
        x.prototype.setThrowStop = function() {
          this.stops = [];
        };
        x.prototype.setReturnStop = function() {
          this.stops = [];
        };
        x.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 V(b, 0, l(e)), target:this.bc.targets[e], state:this.state});
            }
          } else {
            b = m(N.SEQ, b, l(0)), b = new a.IR.If(this.region, b), this.stops = [{control:new V(b, 2), target:this.bc.targets[1], state:this.state}, {control:new V(b, 1), target:this.bc.targets[0], state:this.state}];
          }
        };
        x.prototype.savedScope = function() {
          return this.state.saved;
        };
        x.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 = h(this.state, e, "parent");
            }
            return e;
          }
          return 0 < a.length ? B(a) : this.savedScope();
        };
        x.prototype.getGlobalScope = function() {
          var b = this.bc.ti;
          return b && b.object ? l(b.object) : new a.IR.ASGlobal(null, this.savedScope());
        };
        x.prototype.getScopeObject = function(b) {
          return b instanceof a.IR.ASScope ? b.object : h(this.state, b, "object");
        };
        x.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;
        };
        x.prototype.coerce = function(b, a) {
          var e = ka[F.getQualifiedName(b)];
          return e ? e(a) : a;
        };
        x.prototype.store = function(b) {
          var a = this.state;
          a.store = new V(b, 3);
          b.loads = a.loads.slice(0);
          a.loads.length = 0;
          return b;
        };
        x.prototype.load = function(b) {
          this.state.loads.push(b);
          return b;
        };
        x.prototype.call = function(b, a, e) {
          return this.store(new U(this.region, this.state.store, b, a, e, 4));
        };
        x.prototype.callCall = function(b, a, e) {
          return this.store(new U(this.region, this.state.store, b, a, e, 16));
        };
        x.prototype.callProperty = function(b, e, f, c) {
          var g = this.bc.ti, n = this.region, q = this.state;
          if (g && g.trait) {
            if (g.trait.isMethod()) {
              return e = g.trait.holder instanceof J && g.trait.holder.isInterface() ? F.getPublicQualifiedName(F.getName(g.trait.name)) : F.getQualifiedName(g.trait.name), e = y.VM_OPEN_METHOD_PREFIX + e, this.store(new a.IR.CallProperty(n, q.store, b, l(e), f, 4));
            }
            if (g.trait.isClass()) {
              if (e = Y[F.getQualifiedName(g.trait.name)]) {
                return e(f[0]);
              }
              e = F.getQualifiedName(g.trait.name);
              return this.store(new a.IR.CallProperty(n, q.store, b, l(e), f, 16));
            }
          }
          return(g = this.resolveMultinameGlobally(e)) ? this.store(new a.IR.ASCallProperty(n, q.store, b, l(F.getQualifiedName(g)), f, 6, c)) : this.store(new a.IR.ASCallProperty(n, q.store, b, e, f, 4, c));
        };
        x.prototype.getProperty = function(b, e, f) {
          var c = this.bc.ti, g = this.region, n = 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(g, n.store, b, l(F.getQualifiedName(c.trait.name)));
            return c.trait.isGetter() ? this.store(b) : this.load(b);
          }
          if (v(e.name)) {
            return this.store(new a.IR.ASGetProperty(g, n.store, b, e, 1));
          }
          if (c = this.resolveMultinameGlobally(e)) {
            return this.store(new a.IR.ASGetProperty(g, n.store, b, l(F.getQualifiedName(c)), 2 | (f ? 8 : 0)));
          }
          k.countTimeline("Compiler: Slow ASGetProperty");
          return this.store(new a.IR.ASGetProperty(g, n.store, b, e, f ? 8 : 0));
        };
        x.prototype.setProperty = function(b, e, f) {
          var c = this.bc.ti, g = this.region, n = this.state;
          if (c && c.trait) {
            (e = c.trait.typeName ? ka[F.getQualifiedName(c.trait.typeName)] : null) && (f = e(f)), this.store(new a.IR.SetProperty(g, n.store, b, l(F.getQualifiedName(c.trait.name)), f));
          } else {
            if (v(e.name)) {
              return this.store(new a.IR.ASSetProperty(g, n.store, b, e, f, 1));
            }
            this.resolveMultinameGlobally(e);
            return this.store(new a.IR.ASSetProperty(g, n.store, b, e, f, 0));
          }
        };
        x.prototype.callSuper = function(b, e, f, c) {
          var g = this.bc.ti, n = this.region, q = this.state;
          return g && g.trait && g.trait.isMethod() && g.baseClass ? (b = y.VM_OPEN_METHOD_PREFIX + F.getQualifiedName(g.trait.name), g = this.getJSProperty(l(g.baseClass), "traitsPrototype." + b), this.call(g, e, c)) : this.store(new a.IR.ASCallSuper(n, q.store, e, f, c, 4, b));
        };
        x.prototype.getSuper = function(b, e, f) {
          var c = this.bc.ti, g = this.region, n = this.state;
          return c && c.trait && c.trait.isGetter() && c.baseClass ? (b = y.VM_OPEN_GET_METHOD_PREFIX + F.getQualifiedName(c.trait.name), c = this.getJSProperty(l(c.baseClass), "traitsPrototype." + b), this.call(c, e, [])) : this.store(new a.IR.ASGetSuper(g, n.store, e, f, b));
        };
        x.prototype.setSuper = function(b, e, f, c) {
          var g = this.bc.ti, n = this.region, q = this.state;
          return g && g.trait && g.trait.isSetter() && g.baseClass ? (b = y.VM_OPEN_SET_METHOD_PREFIX + F.getQualifiedName(g.trait.name), g = this.getJSProperty(l(g.baseClass), "traitsPrototype." + b), this.call(g, e, [c])) : this.store(new a.IR.ASSetSuper(n, q.store, e, f, c, b));
        };
        x.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);
        };
        x.prototype.getSlot = function(b, e) {
          var f = this.bc.ti, c = this.region, g = this.state;
          if (f) {
            var n = f.trait;
            if (n) {
              if (n.isConst() && f.trait.hasDefaultValue) {
                return l(n.value);
              }
              f = F.getQualifiedName(n.name);
              return this.store(new a.IR.GetProperty(c, g.store, b, l(f)));
            }
          }
          return this.store(new a.IR.ASGetSlot(null, g.store, b, e));
        };
        x.prototype.setSlot = function(b, e, f) {
          var c = this.bc.ti, g = this.region, n = this.state;
          if (c && (c = c.trait)) {
            e = F.getQualifiedName(c.name);
            this.store(new a.IR.SetProperty(g, n.store, b, l(e), f));
            return;
          }
          this.store(new a.IR.ASSetSlot(g, n.store, b, e, f));
        };
        x.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 F(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.");
            }
          }
        };
        x.prototype.getJSProperty = function(b, a) {
          return h(this.state, b, a);
        };
        x.prototype.setJSProperty = function(b, e, f) {
          this.store(new a.IR.SetProperty(null, this.state.store, b, l(e), f));
        };
        x.prototype.simplifyName = function(b) {
          return b instanceof w && b.value instanceof F && F.isQName(b.value) ? l(F.getQualifiedName(b.value)) : b;
        };
        x.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);
        };
        x.prototype.truthyCondition = function(b) {
          var a = this.state.stack, e;
          b.isBinary && (e = a.pop());
          a = a.pop();
          b = e ? m(b, a, e) : s(b, a);
          da && (b = da.fold(b, !0));
          return b;
        };
        x.prototype.negatedTruthyCondition = function(b) {
          b = s(N.FALSE, this.truthyCondition(b));
          da && (b = da.fold(b, !0));
          return b;
        };
        x.prototype.pushExpression = function(b, a) {
          var e = this.state.stack, f;
          b.isBinary ? (f = e.pop(), e = e.pop(), a && (f = g(f), e = g(e)), this.push(m(b, e, f))) : (e = e.pop(), a && (e = g(e)), this.push(s(b, e)));
        };
        x.prototype.push = function(b) {
          var a = this.bc;
          a.ti && !b.ty && (b.ty = a.ti.type);
          this.state.stack.push(b);
        };
        x.prototype.pushLocal = function(b) {
          this.push(this.state.local[b]);
        };
        x.prototype.popLocal = function(b) {
          var a = this.state;
          a.local[b] = q(a.stack.pop());
        };
        x.prototype.build = function() {
          function h() {
            return v.pop();
          }
          function s(b) {
            return d.ArrayUtilities.popMany(v, b);
          }
          var x = this.block, r = this.state, t = this.state.local, v = this.state.stack, E = this.state.scope, B = this.region, D = this.bytecodes, y, J, z, w = this.push.bind(this);
          this.stops = null;
          this.traceBuilder && (ca.writeLn("Processing Region: " + B + ", Block: " + x.bid), ca.enter(("> state: " + B.entryState.toString()).padRight(" ", 100)));
          for (var G = x.position, I = x.end.position;G <= I;G++) {
            this.bc = x = D[G];
            var C = x.op;
            r.index = G;
            switch(C) {
              case 3:
                this.store(new a.IR.Throw(B, h()));
                this.builder.stopPoints.push({region:B, store:r.store, value:T});
                this.setThrowStop();
                break;
              case 98:
                this.pushLocal(x.index);
                break;
              case 208:
              ;
              case 209:
              ;
              case 210:
              ;
              case 211:
                this.pushLocal(C - 208);
                break;
              case 99:
                this.popLocal(x.index);
                break;
              case 212:
              ;
              case 213:
              ;
              case 214:
              ;
              case 215:
                this.popLocal(C - 212);
                break;
              case 28:
              ;
              case 48:
                E.push(new a.IR.ASScope(this.topScope(), h(), 28 === C));
                break;
              case 29:
                E.pop();
                break;
              case 100:
                w(this.getGlobalScope());
                break;
              case 101:
                w(this.getScopeObject(r.scope[x.index]));
                break;
              case 94:
              ;
              case 93:
                w(this.findProperty(this.popMultiname(), 93 === C));
                break;
              case 102:
                z = this.popMultiname();
                J = h();
                w(this.getProperty(J, z, !1));
                break;
              case 89:
                z = this.popMultiname();
                J = h();
                w(this.getDescendants(J, z));
                break;
              case 96:
                z = this.popMultiname();
                w(this.getProperty(this.findProperty(z, !0), z, !1));
                break;
              case 104:
              ;
              case 97:
                y = h();
                z = this.popMultiname();
                J = h();
                this.setProperty(J, z, y);
                break;
              case 106:
                z = this.popMultiname();
                J = h();
                w(this.store(new a.IR.ASDeleteProperty(B, r.store, J, z)));
                break;
              case 108:
                J = h();
                w(this.getSlot(J, l(x.index)));
                break;
              case 109:
                y = h();
                J = h();
                this.setSlot(J, l(x.index), y);
                break;
              case 4:
                z = this.popMultiname();
                J = h();
                w(this.getSuper(this.savedScope(), J, z));
                break;
              case 5:
                y = h();
                z = this.popMultiname();
                J = h();
                this.setSuper(this.savedScope(), J, z, y);
                break;
              case 241:
              ;
              case 240:
                break;
              case 64:
                w(n(this.builder.createFunctionCallee, [l(this.abc.methods[x.index]), this.topScope(), l(!0)]));
                break;
              case 65:
                y = s(x.argCount);
                J = h();
                z = h();
                w(this.callCall(z, J, y));
                break;
              case 70:
              ;
              case 79:
              ;
              case 76:
                y = s(x.argCount);
                z = this.popMultiname();
                J = h();
                y = this.callProperty(J, z, y, 76 === C);
                79 !== C && w(y);
                break;
              case 69:
              ;
              case 78:
                z = this.popMultiname();
                y = s(x.argCount);
                J = h();
                y = this.callSuper(this.savedScope(), J, z, y);
                78 !== C && w(y);
                break;
              case 66:
                y = s(x.argCount);
                J = h();
                w(this.store(new a.IR.ASNew(B, r.store, J, y)));
                break;
              case 73:
                y = s(x.argCount);
                J = h();
                this.constructSuper(this.savedScope(), J, y);
                break;
              case 74:
                y = s(x.argCount);
                z = this.popMultiname();
                J = h();
                z = this.getProperty(J, z, !1);
                w(this.store(new a.IR.ASNew(B, r.store, z, y)));
                break;
              case 128:
                if (x.ti && x.ti.noCoercionNeeded) {
                  k.countTimeline("Compiler: NoCoercionNeeded");
                  break;
                } else {
                  k.countTimeline("Compiler: CoercionNeeded");
                }
                y = h();
                w(this.coerce(this.constantPool.multinames[x.index], y));
                break;
              case 131:
              ;
              case 115:
                w(g(h()));
                break;
              case 136:
              ;
              case 116:
                w(f(h()));
                break;
              case 132:
              ;
              case 117:
                w(b(h()));
                break;
              case 129:
              ;
              case 118:
                w(e(h()));
                break;
              case 120:
                w(this.call(p("checkFilter"), null, [h()]));
                break;
              case 130:
                break;
              case 133:
                w(A(h()));
                break;
              case 112:
                w(L(h()));
                break;
              case 114:
                w(H(h()));
                break;
              case 113:
                w(K(h()));
                break;
              case 134:
                if (x.ti && x.ti.noCoercionNeeded) {
                  k.countTimeline("Compiler: NoCoercionNeeded");
                  break;
                } else {
                  k.countTimeline("Compiler: CoercionNeeded");
                }
                y = h();
                J = this.constantPool.multinames[x.index];
                z = new a.IR.ASMultiname(l(J.namespaces), l(J.name), l(J.flags));
                J = this.getProperty(this.findProperty(z, !1), z);
                w(this.call(p("asAsType"), null, [J, y]));
                break;
              case 135:
                J = h();
                y = h();
                w(this.call(p("asAsType"), null, [J, y]));
                break;
              case 72:
              ;
              case 71:
                y = T;
                72 === C && (y = h(), this.methodInfo.returnType && (x.ti && x.ti.noCoercionNeeded || (y = this.coerce(this.methodInfo.returnType, y))));
                this.builder.stopPoints.push({region:B, store:r.store, value:y});
                this.setReturnStop();
                break;
              case 30:
              ;
              case 35:
                y = h();
                J = h();
                w(new a.IR.CallProperty(B, r.store, J, l(30 === C ? "asNextName" : "asNextValue"), [y], 4));
                break;
              case 50:
                y = new a.IR.ASNewHasNext2;
                this.setJSProperty(y, "object", t[x.object]);
                this.setJSProperty(y, "index", t[x.index]);
                this.store(new a.IR.CallProperty(B, r.store, la(t[x.object]), l("asHasNext2"), [y], 4));
                t[x.object] = this.getJSProperty(y, "object");
                w(t[x.index] = this.getJSProperty(y, "index"));
                break;
              case 32:
                w(P);
                break;
              case 33:
                w(T);
                break;
              case 38:
                w(O);
                break;
              case 39:
                w(Q);
                break;
              case 40:
                w(l(NaN));
                break;
              case 34:
                M(String(x));
                break;
              case 36:
              ;
              case 37:
                w(l(x.value));
                break;
              case 44:
                w(l(this.constantPool.strings[x.index]));
                break;
              case 45:
                w(l(this.constantPool.ints[x.index]));
                break;
              case 46:
                w(l(this.constantPool.uints[x.index]));
                break;
              case 47:
                w(l(this.constantPool.doubles[x.index]));
                break;
              case 41:
                h();
                break;
              case 42:
                y = q(h());
                w(y);
                w(y);
                break;
              case 43:
                r.stack.push(h(), h());
                break;
              case 239:
              ;
              case 240:
              ;
              case 241:
                break;
              case 16:
                this.setJumpStop();
                break;
              case 12:
                this.setIfStops(this.negatedTruthyCondition(N.LT));
                break;
              case 15:
                this.setIfStops(this.negatedTruthyCondition(N.GE));
                break;
              case 14:
                this.setIfStops(this.negatedTruthyCondition(N.GT));
                break;
              case 13:
                this.setIfStops(this.negatedTruthyCondition(N.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(C)));
                break;
              case 27:
                this.setSwitchStops(h());
                break;
              case 160:
                J = h();
                y = h();
                z = u(y, J) ? N.ADD : d.AVM2.Runtime.useAsAdd ? N.AS_ADD : N.ADD;
                w(m(z, y, J));
                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(C));
                break;
              case 196:
              ;
              case 197:
              ;
              case 198:
              ;
              case 199:
                this.pushExpression(c(C), !0);
                break;
              case 145:
              ;
              case 192:
              ;
              case 147:
              ;
              case 193:
                w(l(1));
                145 === C || 147 === C ? w(b(h())) : w(g(h()));
                145 === C || 192 === C ? this.pushExpression(N.ADD) : this.pushExpression(N.SUB);
                break;
              case 146:
              ;
              case 194:
              ;
              case 148:
              ;
              case 195:
                w(l(1));
                146 === C || 148 === C ? w(b(t[x.index])) : w(g(t[x.index]));
                146 === C || 194 === C ? this.pushExpression(N.ADD) : this.pushExpression(N.SUB);
                this.popLocal(x.index);
                break;
              case 177:
                J = h();
                y = h();
                w(this.call(this.getJSProperty(J, "isInstanceOf"), null, [y]));
                break;
              case 178:
                y = h();
                z = this.popMultiname();
                J = this.getProperty(this.findProperty(z, !1), z);
                w(this.call(p("asIsType"), null, [J, y]));
                break;
              case 179:
                J = h();
                y = h();
                w(this.call(p("asIsType"), null, [J, y]));
                break;
              case 180:
                J = h();
                y = h();
                z = new a.IR.ASMultiname(T, y, l(0));
                w(this.store(new a.IR.ASHasProperty(B, r.store, J, z)));
                break;
              case 149:
                w(this.call(p("asTypeOf"), null, [h()]));
                break;
              case 8:
                w(T);
                this.popLocal(x.index);
                break;
              case 83:
                y = s(x.argCount);
                J = h();
                z = p("applyType");
                w(this.call(z, null, [this.methodInfoConstant, J, new fa(B, y)]));
                break;
              case 86:
                y = s(x.argCount);
                w(new fa(B, y));
                break;
              case 85:
                J = [];
                for (z = 0;z < x.argCount;z++) {
                  y = h();
                  var da = h(), da = l(F.getPublicQualifiedName(da.value));
                  J.push(new ia(da, y));
                }
                w(new X(B, J));
                break;
              case 87:
                w(new a.IR.ASNewActivation(l(this.methodInfo)));
                break;
              case 88:
                z = p("createClass");
                w(this.call(z, null, [l(this.abc.classes[x.index]), h(), this.topScope()]));
                break;
              default:
                M(String(x));
            }
            239 !== C && 241 !== C && 240 !== C && this.traceBuilder && ca.writeLn(("state: " + r.toString()).padRight(" ", 100) + " : " + G + ", " + x.toString(this.abc));
          }
          this.traceBuilder && ca.leave(("< state: " + r.toString()).padRight(" ", 100));
        };
        return x;
      }(), na = function() {
        function b(a, e, f) {
          this.abc = a.abc;
          this.methodInfoConstant = new w(a);
          this.scope = e;
          this.methodInfo = a;
          this.hasDynamicScope = f;
          this.traceBuilder = 3 < d.AVM2.Compiler.traceLevel.value;
          this.createFunctionCallee = p("createFunction");
          this.stopPoints = [];
          this.bytecodes = this.methodInfo.analysis.bytecodes;
        }
        b.prototype.buildStart = function(b) {
          var e = this.methodInfo, f = b.entryState = new ea(0);
          f.local.push(new S(b));
          for (var c = this.hasDynamicScope ? 1 : 0, g = e.parameters.length, n = 0;n < g;n++) {
            f.local.push(new Z(b, c + n, e.parameters[n].name));
          }
          for (n = g;n < e.localCount;n++) {
            f.local.push(T);
          }
          f.store = new V(b, 3);
          b.scope = this.hasDynamicScope ? new Z(b, 0, y.SAVED_SCOPE_NAME) : new w(this.scope);
          f.saved = new V(b, 4);
          n = new a.IR.Arguments(b);
          if (e.needsRest() || e.needsArguments()) {
            var q = l(c + (e.needsRest() ? g : 0));
            f.local[g + 1] = new U(b, f.store, p("sliceArguments"), null, [n, q], 4);
          }
          q = h(f, n, "length");
          for (n = 0;n < g;n++) {
            var m = e.parameters[n], d = n + 1, s = f.local[d];
            if (void 0 !== m.value) {
              var x;
              x = new a.IR.Binary(N.LT, q, l(c + n + 1));
              s = new a.IR.Latch(null, x, l(m.value), s);
            }
            m.type && !m.type.isAnyName() && (m = ka[F.getQualifiedName(m.type)]) && (s = m(s));
            f.local[d] = s;
          }
          return b;
        };
        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 C;
          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, g = f.region;
              if (g) {
                e && ca.enter("Merging into region: " + g + " @ " + f.position + ", block " + f.bid + " {"), e && ca.writeLn("  R " + g.entryState), e && ca.writeLn("+ I " + b.state), g.entryState.merge(g, b.state), g.predecessors.push(b.control), e && ca.writeLn("  = " + g.entryState), e && ca.leave("}");
              } else {
                var g = f.region = new I(b.control), n = null;
                f.loop && (n = a.enableDirtyLocals.value && f.loop.getDirtyLocals(), e && ca.writeLn("Adding PHIs to loop region. " + n));
                g.entryState = f.loop ? b.state.makeLoopPhis(g, n) : b.state.clone(f.position);
                e && ca.writeLn("Adding new region: " + g + " @ " + f.position + " to worklist.");
                c.push({region:g, 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 g = new I(null), n = new ba(g, null), q = new ba(g, null);
            this.stopPoints.forEach(function(b) {
              g.predecessors.push(b.region);
              n.pushValue(b.value);
              q.pushValue(b.store);
            });
            b = new R(g, q, n);
          } else {
            b = new R(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 g = f.local[c], n = e.local[c];
              n.ty || (n.ty = g);
            }
          }
          a = new ma(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 g = 1 < d.AVM2.Compiler.traceLevel.value, n = 2 < d.AVM2.Compiler.traceLevel.value;
          if (a) {
            var q = window.performance.now()
          }
          k.enterTimeline("Build IR");
          G.startNumbering();
          f = (new b(e, f, c)).buildGraph();
          k.leaveTimeline();
          n && 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();
          n && f.trace(ca);
          k.enterTimeline("Verify IR");
          f.verify();
          k.leaveTimeline();
          k.enterTimeline("Allocate Variables");
          f.allocateVariables();
          k.leaveTimeline();
          k.enterTimeline("Generate Source");
          n = d.AVM2.Compiler.Backend.generate(f);
          k.leaveTimeline();
          g && ca.writeLn(n.body);
          G.stopNumbering();
          k.leaveTimeline();
          a && ca.writeLn("Compiled " + (e.name ? "function " + e.name : "anonymous function") + " in " + (window.performance.now() - q).toPrecision(2) + "ms");
          return n;
        };
        return b;
      }(), sa = new d.AVM2.Verifier.Verifier;
      a.compileMethod = function(b, a, e) {
        return na.buildMethod(sa, b, a, e);
      };
    })(k.Compiler || (k.Compiler = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      function r(b, a) {
        var f = new h(null, b), g = 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 = g.findClassInfo(l.instanceInfo.superName);
              } else {
                break;
              }
            }
            var p = f;
            d.forEach(function(b) {
              p = new h(p, b);
            });
            c(b.classInfo, a, p, m);
          } else {
            (b.isMethod() || b.isGetter() || b.isSetter()) && t(b, a, f, m);
          }
        });
        m.forEach(function(b) {
          k(b.methodInfo, a, b.scope, null, !0);
        });
      }
      function k(b, a, c, g, h) {
        if (p(b)) {
          s(b);
          try {
            f = !1;
            var d = m(b, c, h, !1, !1);
            a.enter(b.index + ": ");
            f ? a.writeLn("undefined") : a.writeLns(d.toSource());
            a.leave(",");
            g && u(b, a, c, g);
          } catch (l) {
            a.writeLn("// " + l);
          }
        } else {
          a.writeLn("// Can't compile method: " + b.index);
        }
      }
      function u(b, a, f, c) {
        for (var g = b.analysis.bytecodes, m = b.abc.methods, d = 0;d < g.length;d++) {
          var l = g[d];
          if (64 === l.op) {
            l = m[l.index];
            s(l);
            var p = new h(f, b);
            c.push({scope:p, methodInfo:l});
            u(l, a, p, c);
          }
        }
      }
      function t(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) {
          t(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 h = d.AVM2.Runtime.Scope, p = d.AVM2.Runtime.canCompile, s = d.AVM2.Runtime.ensureFunctionIsInitialized, m = d.AVM2.Runtime.createCompiledFunction, g = d.AVM2.Runtime.LazyInitializer, f = !1;
      jsGlobal.objectConstantName = function(b) {
        if (b.hash) {
          return "$(" + b.hash + ")";
        }
        if (b instanceof g) {
          return b.getName();
        }
        f = !0;
      };
      a.compileAbc = function(b, a) {
        a.enter("{");
        a.enter("methods: {");
        for (var f = 0;f < b.scripts.length;f++) {
          r(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) {
          var a = b.length, e = [], f;
          for (f = 0;f < a;++f) {
            e[f] = b.charAt(f);
          }
          return e;
        }
        function u(b) {
          if (null === b) {
            return "null";
          }
          if ("string" === typeof b) {
            var a, e, f, g, q = 0, m = 0, d = b;
            a = h[d];
            if (!a) {
              1024 === c && (h = Object.create(null), c = 0);
              a = "";
              "undefined" === typeof b[0] && (b = k(b));
              e = 0;
              for (f = b.length;e < f;++e) {
                g = b[e];
                if ("'" === g) {
                  ++q;
                } else {
                  if ('"' === g) {
                    ++m;
                  } else {
                    if (0 <= "\\\n\r\u2028\u2029".indexOf(g)) {
                      var r = "\\";
                      switch(g) {
                        case "\\":
                          r += "\\";
                          break;
                        case "\n":
                          r += "n";
                          break;
                        case "\r":
                          r += "r";
                          break;
                        case "\u2028":
                          r += "u2028";
                          break;
                        case "\u2029":
                          r += "u2029";
                          break;
                        default:
                          throw Error("Incorrectly classified character");;
                      }
                      a += r;
                      continue;
                    } else {
                      if (!(" " <= g && "~" >= g)) {
                        var r = b[e + 1], u = g.charCodeAt(0), t = u.toString(16), E = "\\";
                        switch(g) {
                          case "\b":
                            E += "b";
                            break;
                          case "\f":
                            E += "f";
                            break;
                          case "\t":
                            E += "t";
                            break;
                          default:
                            E = 255 < u ? E + ("u" + "0000".slice(t.length) + t) : "\x00" === g && 0 > "0123456789".indexOf(r) ? E + "0" : "\x0B" === g ? E + "x0B" : E + ("x" + "00".slice(t.length) + t);
                        }
                        a += E;
                        continue;
                      }
                    }
                  }
                }
                a += g;
              }
              b = a;
              a = '"';
              "undefined" === typeof b[0] && (b = k(b));
              e = 0;
              for (f = b.length;e < f;++e) {
                g = b[e], '"' === g && (a += "\\"), a += g;
              }
              a += '"';
              h[d] = a;
              c++;
            }
            return a;
          }
          if ("number" === typeof b) {
            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" : (e = s[b], e || (1024 === p && (s = Object.create(null), p = 0), e = "" + b, s[b] = e, p++), b = e);
            return b;
          }
          if ("boolean" === typeof b) {
            return b ? "true" : "false";
          }
          l(b);
        }
        function t(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 l = d.Debug.assertUnreachable, c = 0, h = Object.create(null), p = 0, s = Object.create(null), m = {"||":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}, g = function() {
          function b() {
            this.type = "Node";
          }
          b.prototype.toSource = function(b) {
            l("toSource called on abstract base class Node with type " + this.type);
            return "";
          };
          return b;
        }();
        a.Node = g;
        var f = function(b) {
          function a() {
            b.apply(this, arguments);
            this.type = "Statement";
          }
          __extends(a, b);
          return a;
        }(g);
        a.Statement = f;
        var b = function(b) {
          function a() {
            b.apply(this, arguments);
            this.type = "Expression";
          }
          __extends(a, b);
          return a;
        }(g);
        a.Expression = b;
        var e = function(b) {
          function a(e) {
            b.call(this);
            this.body = e;
            this.type = "Program";
          }
          __extends(a, b);
          return a;
        }(g);
        a.Program = e;
        e = function(b) {
          function a() {
            b.apply(this, arguments);
            this.type = "EmptyStatement";
          }
          __extends(a, b);
          return a;
        }(f);
        a.EmptyStatement = e;
        e = function(b) {
          function a(e) {
            b.call(this);
            this.body = e;
            this.type = "BlockStatement";
          }
          __extends(a, b);
          a.prototype.toSource = function(b) {
            return "{\n" + t(this.body, b) + "}";
          };
          return a;
        }(f);
        a.BlockStatement = e;
        e = 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;
        }(f);
        a.ExpressionStatement = e;
        e = 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;
        }(f);
        a.IfStatement = e;
        e = function(b) {
          function a(e, f) {
            b.call(this);
            this.label = e;
            this.body = f;
            this.type = "LabeledStatement";
          }
          __extends(a, b);
          return a;
        }(f);
        a.LabeledStatement = e;
        e = 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;
        }(f);
        a.BreakStatement = e;
        e = 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;
        }(f);
        a.ContinueStatement = e;
        e = function(b) {
          function a(e, f) {
            b.call(this);
            this.object = e;
            this.body = f;
            this.type = "WithStatement";
          }
          __extends(a, b);
          return a;
        }(f);
        a.WithStatement = e;
        e = 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) + "){" + t(this.cases, 0, ";") + "};";
          };
          return a;
        }(f);
        a.SwitchStatement = e;
        e = 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;
        }(f);
        a.ReturnStatement = e;
        e = 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;
        }(f);
        a.ThrowStatement = e;
        e = function(b) {
          function a(e, f, c, g) {
            b.call(this);
            this.block = e;
            this.handlers = f;
            this.guardedHandlers = c;
            this.finalizer = g;
            this.type = "TryStatement";
          }
          __extends(a, b);
          return a;
        }(f);
        a.TryStatement = e;
        e = 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;
        }(f);
        a.WhileStatement = e;
        e = function(b) {
          function a(e, f) {
            b.call(this);
            this.body = e;
            this.test = f;
            this.type = "DoWhileStatement";
          }
          __extends(a, b);
          return a;
        }(f);
        a.DoWhileStatement = e;
        e = function(b) {
          function a(e, f, c, g) {
            b.call(this);
            this.init = e;
            this.test = f;
            this.update = c;
            this.body = g;
            this.type = "ForStatement";
          }
          __extends(a, b);
          return a;
        }(f);
        a.ForStatement = e;
        e = function(b) {
          function a(e, f, c, g) {
            b.call(this);
            this.left = e;
            this.right = f;
            this.body = c;
            this.each = g;
            this.type = "ForInStatement";
          }
          __extends(a, b);
          return a;
        }(f);
        a.ForInStatement = e;
        e = function(b) {
          function a() {
            b.apply(this, arguments);
            this.type = "DebuggerStatement";
          }
          __extends(a, b);
          return a;
        }(f);
        a.DebuggerStatement = e;
        f = function(b) {
          function a() {
            b.apply(this, arguments);
            this.type = "Declaration";
          }
          __extends(a, b);
          return a;
        }(f);
        a.Declaration = f;
        e = function(b) {
          function a(e, f, c, g, q, h, m) {
            b.call(this);
            this.id = e;
            this.params = f;
            this.defaults = c;
            this.rest = g;
            this.body = q;
            this.generator = h;
            this.expression = m;
            this.type = "FunctionDeclaration";
          }
          __extends(a, b);
          return a;
        }(f);
        a.FunctionDeclaration = e;
        f = 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 + " " + t(this.declarations, b, ",") + ";\n";
          };
          return a;
        }(f);
        a.VariableDeclaration = f;
        f = 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;
        }(g);
        a.VariableDeclarator = f;
        f = 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;
        }(b);
        a.Identifier = f;
        var q = function(b) {
          function a(e) {
            b.call(this);
            this.value = e;
            this.type = "Literal";
          }
          __extends(a, b);
          a.prototype.toSource = function(b) {
            return u(this.value);
          };
          return a;
        }(b);
        a.Literal = q;
        f = function(b) {
          function a() {
            b.apply(this, arguments);
            this.type = "ThisExpression";
          }
          __extends(a, b);
          a.prototype.toSource = function(b) {
            return "this";
          };
          return a;
        }(b);
        a.ThisExpression = f;
        f = function(b) {
          function a(e) {
            b.call(this);
            this.elements = e;
            this.type = "ArrayExpression";
          }
          __extends(a, b);
          a.prototype.toSource = function(b) {
            return "[" + t(this.elements, 1, ",") + "]";
          };
          return a;
        }(b);
        a.ArrayExpression = f;
        f = function(b) {
          function a(e) {
            b.call(this);
            this.properties = e;
            this.type = "ObjectExpression";
          }
          __extends(a, b);
          a.prototype.toSource = function(b) {
            return "{" + t(this.properties, 0, ",") + "}";
          };
          return a;
        }(b);
        a.ObjectExpression = f;
        f = function(b) {
          function a(e, f, c, g, q, h, m) {
            b.call(this);
            this.id = e;
            this.params = f;
            this.defaults = c;
            this.rest = g;
            this.body = q;
            this.generator = h;
            this.expression = m;
            this.type = "FunctionExpression";
          }
          __extends(a, b);
          return a;
        }(b);
        a.FunctionExpression = f;
        f = function(b) {
          function a(e) {
            b.call(this);
            this.expressions = e;
            this.type = "SequenceExpression";
          }
          __extends(a, b);
          return a;
        }(b);
        a.SequenceExpression = f;
        f = 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;
        }(b);
        a.UnaryExpression = f;
        f = 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 = m[this.operator], e = this.left.toSource(a) + this.operator + this.right.toSource(a + 1);
            return a < b ? "(" + e + ")" : e;
          };
          return a;
        }(b);
        a.BinaryExpression = f;
        e = 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;
        }(b);
        a.AssignmentExpression = e;
        e = 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;
        }(b);
        a.UpdateExpression = e;
        f = function(b) {
          function a(e, f, c) {
            b.call(this, e, f, c);
            this.type = "LogicalExpression";
          }
          __extends(a, b);
          return a;
        }(f);
        a.LogicalExpression = f;
        f = 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;
        }(b);
        a.ConditionalExpression = f;
        f = 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) + "(" + t(this.arguments, b, ",") + ")";
          };
          return a;
        }(b);
        a.NewExpression = f;
        f = 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) + "(" + t(this.arguments, b, ",") + ")";
          };
          return a;
        }(b);
        a.CallExpression = f;
        b = 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 q && (a = "(" + a + ")");
            var e = this.property.toSource(0), a = this.computed ? a + ("[" + e + "]") : a + ("." + e);
            return 17 < b ? "(" + a + ")" : a;
          };
          return a;
        }(b);
        a.MemberExpression = b;
        b = 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;
        }(g);
        a.Property = b;
        b = 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") + ": " + t(this.consequent, b, ";");
          };
          return a;
        }(g);
        a.SwitchCase = b;
        g = 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;
        }(g);
        a.CatchClause = g;
      })(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, h, l) {
            a.call(this);
            this.parent = c;
            this.object = h;
            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, h, l) {
            a.call(this);
            this.namespaces = c;
            this.name = h;
            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, h, l, s, m, g, f) {
            a.call(this, c, h, l, s, m, g);
            this.isLex = f;
          }
          __extends(d, a);
          return d;
        }(a.CallProperty);
        a.ASCallProperty = d;
        d.prototype.nodeName = "ASCallProperty";
        d = function(a) {
          function d(c, h, l, s, m, g, f) {
            a.call(this, c, h, l, s, m, g);
            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, h, l, s) {
            a.call(this, c, h, l, s);
          }
          __extends(d, a);
          return d;
        }(a.New);
        a.ASNew = d;
        d.prototype.nodeName = "ASNew";
        d = function(a) {
          function d(c, h, l, s, m) {
            a.call(this, c, h, l, s);
            this.flags = m;
          }
          __extends(d, a);
          return d;
        }(a.GetProperty);
        a.ASGetProperty = d;
        d.prototype.nodeName = "ASGetProperty";
        d = function(a) {
          function d(c, h, l, s) {
            a.call(this, c, h, l, s);
          }
          __extends(d, a);
          return d;
        }(a.GetProperty);
        a.ASGetDescendants = d;
        d.prototype.nodeName = "ASGetDescendants";
        d = function(a) {
          function d(c, h, l, s) {
            a.call(this, c, h, l, s);
          }
          __extends(d, a);
          return d;
        }(a.GetProperty);
        a.ASHasProperty = d;
        d.prototype.nodeName = "ASHasProperty";
        d = function(a) {
          function d(c, h, l, s) {
            a.call(this, c, h, l, s);
          }
          __extends(d, a);
          return d;
        }(a.GetProperty);
        a.ASGetSlot = d;
        d.prototype.nodeName = "ASGetSlot";
        d = function(a) {
          function d(c, h, l, s, m) {
            a.call(this, c, h, l, s);
            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, h, l, s, m, g) {
            a.call(this, c, h, l, s, m);
            this.flags = g;
          }
          __extends(d, a);
          return d;
        }(a.SetProperty);
        a.ASSetProperty = d;
        d.prototype.nodeName = "ASSetProperty";
        d = function(a) {
          function d(c, h, l, s, m) {
            a.call(this, c, h, l, s, m);
          }
          __extends(d, a);
          return d;
        }(a.SetProperty);
        a.ASSetSlot = d;
        d.prototype.nodeName = "ASSetSlot";
        d = function(a) {
          function d(c, h, l, s, m, g) {
            a.call(this, c, h, l, s, m);
            this.scope = g;
          }
          __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, h, l, s) {
            a.call(this, c, h, l, s);
          }
          __extends(d, a);
          return d;
        }(a.DeleteProperty);
        a.ASDeleteProperty = d;
        d.prototype.nodeName = "ASDeleteProperty";
        d = function(a) {
          function d(c, h, l, s, m, g) {
            a.call(this, c, h);
            this.scope = l;
            this.name = s;
            this.methodInfo = m;
            this.strict = g;
          }
          __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, h) {
            a.call(this);
            this.control = c;
            this.scope = h;
          }
          __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 v = d.ArrayUtilities.top, u = d.ArrayUtilities.peek, t;
        (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, g) {
              b.call(this, 3);
              this.cond = e;
              this.then = f;
              this.nothingThrownLabel = g;
              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, g = e.length;c < g;c++) {
                for (var h = e[c], d = 0, m = h.labels.length;d < m;d++) {
                  f[h.labels[d]] = h;
                }
              }
              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;
        })(t = a.Control || (a.Control = {}));
        var l = d.BitSets.BITS_PER_WORD, c = d.BitSets.ADDRESS_BITS_PER_WORD, h = d.BitSets.BIT_INDEX_MASK, p = function(a) {
          function g(f, b) {
            a.call(this, f);
            this.blockById = b;
          }
          __extends(g, a);
          g.prototype.forEachBlock = function(a) {
            for (var b = this.blockById, e = this.bits, c = 0, g = e.length;c < g;c++) {
              var h = e[c];
              if (h) {
                for (var d = 0;d < l;d++) {
                  h & 1 << d && a(b[c * l + d]);
                }
              }
            }
          };
          g.prototype.choose = function() {
            for (var a = this.blockById, b = this.bits, e = 0, c = b.length;e < c;e++) {
              var g = b[e];
              if (g) {
                for (var h = 0;h < l;h++) {
                  if (g & 1 << h) {
                    return a[e * l + h];
                  }
                }
              }
            }
          };
          g.prototype.members = function() {
            for (var a = this.blockById, b = [], e = this.bits, c = 0, g = e.length;c < g;c++) {
              var h = e[c];
              if (h) {
                for (var d = 0;d < l;d++) {
                  h & 1 << d && b.push(a[c * l + d]);
                }
              }
            }
            return b;
          };
          g.prototype.setBlocks = function(a) {
            for (var b = this.bits, e = 0, g = a.length;e < g;e++) {
              var n = a[e].id;
              b[n >> c] |= 1 << (n & h);
            }
          };
          return g;
        }(d.BitSets.Uint32ArrayBitSet);
        a.BlockSet = p;
        var s = 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 p(a, f);
            };
          };
          a.prototype.normalizeReachableBlocks = function(a) {
            var f = this.boundBlockSet, b = [], e = {}, c = {}, n = [a];
            for (c[a.id] = !0;a = v(n);) {
              if (e[a.id]) {
                1 === e[a.id] && (e[a.id] = 2, b.push(a)), c[a.id] = !1, n.pop();
              } else {
                e[a.id] = 1;
                c[a.id] = !0;
                for (var h = a.successors, d = 0, m = h.length;d < m;d++) {
                  var l = h[d];
                  c[l.id] && (a.spbacks || (a.spbacks = new f), a.spbacks.set(l.id));
                  !e[l.id] && n.push(l);
                }
              }
            }
            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 n = !0;n;) {
              for (n = !1, c = 1;c < f;c++) {
                var h = a[c].predecessors, d = h.length, m = e[h[0].id];
                if (!(m in b)) {
                  for (var l = 1;l < d && !(m = e[h[l].id], m in b);l++) {
                  }
                }
                for (l = 0;l < d;l++) {
                  var p = e[h[l].id];
                  if (p !== m && p in b) {
                    for (;p !== m;) {
                      for (;p > m;) {
                        p = b[p];
                      }
                      for (;m > p;) {
                        m = b[m];
                      }
                    }
                    m = p;
                  }
                }
                b[c] !== m && (b[c] = m, n = !0);
              }
            }
            a[0].dominator = a[0];
            for (c = 1;c < f;c++) {
              e = a[c], l = a[b[c]], e.dominator = l, l.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 (l = 0;l < a.length;l++) {
                a[l].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 n = a.dominator, h = 0, d = c.length;h < d;h++) {
                  for (var m = c[h];m !== n;) {
                    m.frontier.set(a.id), m = m.dominator;
                  }
                }
              }
            }
          };
          a.prototype.analyzeControlFlow = function() {
            this.computeDominance();
            return this.analyzedControlFlow = !0;
          };
          a.prototype.markLoops = function() {
            function a(b) {
              var e = 1, f = {}, c = {}, g = [], n = [], h = [], q = b.level + 1;
              b = [b];
              for (var d, m;d = v(b);) {
                if (f[d.id]) {
                  if (u(n) === d) {
                    n.pop();
                    var l = [];
                    do {
                      m = g.pop(), c[m.id] = !0, l.push(m);
                    } while (m !== d);
                    (1 < l.length || m.spbacks && m.spbacks.get(m.id)) && h.push(l);
                  }
                  b.pop();
                } else {
                  f[d.id] = e++;
                  g.push(d);
                  n.push(d);
                  m = d.successors;
                  for (var l = 0, p = m.length;l < p;l++) {
                    if (d = m[l], !(d.level < q)) {
                      var s = d.id;
                      if (!f[s]) {
                        b.push(d);
                      } else {
                        if (!c[s]) {
                          for (;f[u(n).id] > f[s];) {
                            n.pop();
                          }
                        }
                      }
                    }
                  }
                }
              }
              return h;
            }
            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 g = a[f], n = g.spbacks;
                if (n) {
                  for (var g = g.successors, h = 0, q = g.length;h < q;h++) {
                    var d = g[h];
                    n.get(d.id) && e.set(d.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, n = e.length - 1;0 <= n;n--) {
              var h = e[n], d = a(h);
              if (0 !== d.length) {
                for (var m = 0, l = d.length;m < l;m++) {
                  for (var p = d[m], s = new f(p, c++), k = 0, r = p.length;k < r;k++) {
                    var t = p[k];
                    if (t.level === h.level + 1 && !t.loop) {
                      t.loop = s;
                      s.head.set(t.id);
                      for (var B = t.predecessors, E = 0, y = B.length;E < y;E++) {
                        s.body.get(B[E].id) && t.npredecessors--;
                      }
                      s.npredecessors += t.npredecessors;
                    }
                  }
                  k = 0;
                  for (r = p.length;k < r;k++) {
                    t = p[k], t.level === h.level + 1 && (t.npredecessors = s.npredecessors);
                  }
                  s.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(n, h, d, m, l, p, s) {
              for (var k = [];n;) {
                if (1 < n.count) {
                  for (var r = new e, u = {}, B = [], E = n.members(), y = 0, z = E.length;y < z;y++) {
                    var G = E[y], C = G.id, I;
                    if (G.loop && n.contains(G.loop.head)) {
                      var P = G.loop;
                      if (!P.induced) {
                        for (var T = P.head.members(), O = 0, Q = 0, S = T.length;Q < S;Q++) {
                          O += n.save[T[Q].id];
                        }
                        if (0 < G.npredecessors - O) {
                          G.npredecessors -= n.save[C], G.save = n.save[C], I = f(G, r, u, m), B.push(new t.LabelCase([C], I));
                        } else {
                          Q = 0;
                          for (S = T.length;Q < S;Q++) {
                            I = T[Q], I.npredecessors -= O, I.save = O;
                          }
                          I = f(G, r, u, m);
                          B.push(new t.LabelCase(P.head.toArray(), I));
                          P.induced = !0;
                        }
                      }
                    } else {
                      G.npredecessors -= n.save[C], G.save = n.save[C], I = f(G, r, u, m), B.push(new t.LabelCase([C], I));
                    }
                  }
                  for (var G = [], Q = 0, y = 0;y < B.length;y++) {
                    I = B[y];
                    z = I.labels;
                    T = S = 0;
                    for (P = z.length;T < P;T++) {
                      C = z[T], r.get(C) && 0 < E[y].npredecessors - n.save[C] ? G.push(C) : z[S++] = C;
                    }
                    z.length = S;
                    0 < z.length && (B[Q++] = I);
                  }
                  B.length = Q;
                  if (0 === B.length) {
                    for (y = 0;y < G.length;y++) {
                      C = G[y], d[C] = (d[C] || 0) + n.save[C], h.set(C);
                    }
                    p && k.push(new t.Break(void 0, p));
                    break;
                  }
                  k.push(new t.LabelSwitch(B));
                  n = a(r, u);
                } else {
                  1 === n.count ? (G = n.choose(), C = G.id, G.npredecessors -= n.save[C], G.save = n.save[C]) : (G = n, C = G.id);
                  if (l) {
                    l = !1;
                  } else {
                    if (m && !m.body.get(C)) {
                      G.npredecessors += G.save;
                      m.exit.set(C);
                      m.save[C] = (m.save[C] || 0) + G.save;
                      k.push(new t.Break(C, m));
                      break;
                    }
                    if (m && G.loop === m) {
                      G.npredecessors += G.save;
                      k.push(new t.Continue(C, m));
                      break;
                    }
                    if (G === s) {
                      break;
                    }
                    if (0 < G.npredecessors) {
                      G.npredecessors += G.save;
                      d[C] = (d[C] || 0) + G.save;
                      h.set(C);
                      k.push(p ? new t.Break(C, p) : new t.Exit(C));
                      break;
                    }
                    if (G.loop) {
                      var S = G.loop;
                      if (1 === S.head.count) {
                        r = f(S.head.choose(), null, null, S, !0);
                      } else {
                        r = [];
                        T = S.head.members();
                        y = 0;
                        for (z = T.length;y < z;y++) {
                          I = T[y], u = I.id, I = f(I, null, null, S, !0), r.push(new t.LabelCase([u], I));
                        }
                        r = new t.LabelSwitch(r);
                      }
                      k.push(new t.Loop(r));
                      n = a(S.exit, S.save);
                      continue;
                    }
                  }
                  r = new e;
                  u = {};
                  if (b && G.hasCatches) {
                    I = G.successors;
                    B = [];
                    n = [];
                    y = 0;
                    for (z = I.length;y < z;y++) {
                      E = I[y], (E.exception ? B : n).push(E);
                    }
                    z = [];
                    for (y = 0;y < B.length;y++) {
                      E = B[y], E.npredecessors -= 1, E.save = 1, I = f(E, r, u, m), E = E.exception, z.push(new t.Catch(E.varName, E.typeName, I));
                    }
                    z = new t.Try(G, z);
                  } else {
                    n = G.successors, z = G;
                  }
                  if (2 < n.length) {
                    B = [];
                    for (y = n.length - 1;0 <= y;y--) {
                      E = n[y], E.npredecessors -= 1, E.save = 1, I = f(E, r, u, m, null, G, n[y + 1]), B.unshift(new t.Case(y, I));
                    }
                    v(B).index = void 0;
                    b && G.hasCatches ? (z.nothingThrownLabel = c, z = new t.Switch(z, B, c++)) : z = new t.Switch(z, B);
                    n = a(r, u);
                  } else {
                    2 === n.length ? (y = G.hasFlippedSuccessors ? n[1] : n[0], I = G.hasFlippedSuccessors ? n[0] : n[1], y.npredecessors -= 1, y.save = 1, y = f(y, r, u, m), I.npredecessors -= 1, I.save = 1, I = f(I, r, u, m), b && G.hasCatches ? (z.nothingThrownLabel = c, z = new t.If(z, y, I, c++)) : z = new t.If(z, y, I), n = a(r, u)) : (I = n[0]) ? b && G.hasCatches ? (z.nothingThrownLabel = I.id, u[I.id] = (u[I.id] || 0) + 1, r.set(I.id), n = a(r, u)) : (I.npredecessors -= 1, I.save = 1, n = 
                    I) : b && G.hasCatches ? (z.nothingThrownLabel = -1, n = a(r, u)) : n = I;
                  }
                  k.push(z);
                }
              }
              return 1 < k.length ? new t.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()) {
              return k.leaveTimeline(), !1;
            }
            this.induceControlTree();
            this.restructuredControlFlow = !0;
            k.leaveTimeline();
            return!0;
          };
          return a;
        }();
        a.Analysis = s;
        a.analyze = function(a) {
          a = new s(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(r) {
        function v(b, a) {
          if ("string" === typeof b || null === b || !0 === b || !1 === b) {
            return new A(b);
          }
          if (void 0 === b) {
            return new H("undefined");
          }
          if ("object" === typeof b || "function" === typeof b) {
            return b instanceof d.AVM2.Runtime.LazyInitializer ? h(l(X, "C"), [new A(a.useConstant(b))]) : new J(ia, new A(a.useConstant(b)), !0);
          }
          if ("number" === typeof b && isNaN(b)) {
            return new H("NaN");
          }
          if (Infinity === b) {
            return new H("Infinity");
          }
          if (-Infinity === b) {
            return new I("-", !0, new H("Infinity"));
          }
          if ("number" === typeof b && 0 > 1 / b) {
            return new I("-", !0, new A(Math.abs(b)));
          }
          if ("number" === typeof b) {
            return new A(b);
          }
          q("Cannot emit constant for value: " + b);
        }
        function u(b) {
          return new H(b);
        }
        function t(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 t(a) ? new J(b, new H(a), !1) : new J(b, new A(a), !0);
        }
        function c(b, a) {
          return t(a.value) ? new J(b, new H(a.value), !1) : new J(b, a, !0);
        }
        function h(b, a) {
          return new D(b, a);
        }
        function p(b, a, e) {
          return h(l(b, "asCall"), [a].concat(e));
        }
        function s(b, a, e) {
          return h(l(b, "call"), [a].concat(e));
        }
        function m(b, a) {
          return new B("=", b, a);
        }
        function g(b) {
          return new K(b, "var");
        }
        function f(b, a, e) {
          return e || !b.variable ? b.compile(a) : u(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 q = d.Debug.unexpected, n = d.Debug.notImplemented, x = d.ArrayUtilities.pushUnique, L = d.AVM2.Compiler.AST, A = L.Literal, H = L.Identifier, K = L.VariableDeclaration, F = L.VariableDeclarator, J = L.MemberExpression, M = L.BinaryExpression, D = L.CallExpression, B = L.AssignmentExpression, E = L.ExpressionStatement, y = L.ReturnStatement, z = L.ConditionalExpression, G = L.ObjectExpression, C = L.ArrayExpression, I = L.UnaryExpression, P = L.NewExpression, T = L.Property, O = L.BlockStatement, 
        Q = L.ThisExpression, S = L.ThrowStatement, V = L.IfStatement, aa = L.WhileStatement, $ = L.BreakStatement, w = L.ContinueStatement, U = L.SwitchStatement, ba = L.SwitchCase, R = a.IR.Variable, N = a.IR.Constant, Z = a.IR.Operator, L = d.AVM2.Compiler.Looper.Control, fa = d.ArrayUtilities.last;
        L.Break.prototype.compile = function(b) {
          return b.compileBreak(this);
        };
        L.Continue.prototype.compile = function(b) {
          return b.compileContinue(this);
        };
        L.Exit.prototype.compile = function(b) {
          return b.compileExit(this);
        };
        L.LabelSwitch.prototype.compile = function(b) {
          return b.compileLabelSwitch(this);
        };
        L.Seq.prototype.compile = function(b) {
          return b.compileSequence(this);
        };
        L.Loop.prototype.compile = function(b) {
          return b.compileLoop(this);
        };
        L.Switch.prototype.compile = function(b) {
          return b.compileSwitch(this);
        };
        L.If.prototype.compile = function(b) {
          return b.compileIf(this);
        };
        L.Try.prototype.compile = function(b) {
          n("try");
          return null;
        };
        var X = new H("$F"), ia = new H("$C"), ga = function() {
          function b() {
            this.label = new R("$L");
            this.variables = [];
            this.constants = [];
            this.lazyConstants = [];
            this.parameters = [];
          }
          b.prototype.useConstant = function(b) {
            b instanceof d.AVM2.Runtime.LazyInitializer ? (b = x(this.lazyConstants, b), this.constants[b] = null) : (b = x(this.constants, b), this.lazyConstants[b] = null);
            return b;
          };
          b.prototype.useVariable = function(b) {
            return x(this.variables, b);
          };
          b.prototype.useParameter = function(b) {
            return this.parameters[b.index] = b;
          };
          b.prototype.compileLabelBody = function(b) {
            var a = [];
            void 0 !== b.label && (this.useVariable(this.label), a.push(new E(m(u(this.label.name), new A(b.label)))));
            return a;
          };
          b.prototype.compileBreak = function(b) {
            b = this.compileLabelBody(b);
            b.push(new $(null));
            return new O(b);
          };
          b.prototype.compileContinue = function(b) {
            b = this.compileLabelBody(b);
            b.push(new w(null));
            return new O(b);
          };
          b.prototype.compileExit = function(b) {
            return new O(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 g = f(a.end.predicate, this);
            if (b.negated) {
              a: {
                b = g;
                if (b instanceof N) {
                  if (!0 === b.value || !1 === b.value) {
                    b = v(!b.value);
                    break a;
                  }
                } else {
                  if (b instanceof H) {
                    b = new I(Z.FALSE.name, !0, b);
                    break a;
                  }
                }
                var g = b instanceof M ? b.left : b.argument, n = b.right, h = Z.fromName(b.operator);
                b = h === Z.EQ && n instanceof A && !1 === n.value || h === Z.FALSE ? g : h.not ? b instanceof M ? new M(h.not.name, g, n) : new I(h.not.name, !0, g) : new I(Z.FALSE.name, !0, b);
              }
            } else {
              b = g;
            }
            a.body.push(new V(b, e || new O([]), 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 A(b.index) : void 0;
              e.push(new ba(b, a ? [a] : []));
            }, this);
            b = f(a.end.determinant, this);
            a.body.push(new U(b, e, !1));
            return a;
          };
          b.prototype.compileLabelSwitch = function(b) {
            for (var a = null, e = u(this.label.name), f = b.cases.length - 1;0 <= f;f--) {
              for (var c = b.cases[f], g = c.labels, n = new M("===", e, new A(g[0])), h = 1;h < g.length;h++) {
                n = new M("||", n, new M("===", e, new A(g[h])));
              }
              a = new V(n, c.body ? c.body.compile(this) : new O([]), a);
            }
            return a;
          };
          b.prototype.compileLoop = function(b) {
            b = b.body.compile(this);
            return new aa(v(!0), b);
          };
          b.prototype.compileSequence = function(b) {
            var a = this, e = [];
            b.body.forEach(function(b) {
              b = b.compile(a);
              b instanceof O ? e = e.concat(b.body) : e.push(b);
            });
            return new O(e);
          };
          b.prototype.compileBlock = function(b) {
            for (var e = [], c = 1;c < b.nodes.length - 1;c++) {
              var g = b.nodes[c], n;
              g instanceof a.IR.Throw ? n = f(g, this, !0) : (g instanceof a.IR.Move ? (n = u(g.to.name), this.useVariable(g.to), g = f(g.from, this)) : (g.variable ? (n = u(g.variable.name), this.useVariable(g.variable)) : n = null, g = f(g, this, !0)), n = n ? new E(m(n, g)) : new E(g));
              e.push(n);
            }
            c = fa(b.nodes);
            c instanceof a.IR.Stop && e.push(new y(f(c.argument, this)));
            e = new O(e);
            e.end = fa(b.nodes);
            return e;
          };
          return b;
        }();
        r.Context = ga;
        a.IR.Parameter.prototype.compile = function(b) {
          b.useParameter(this);
          return u(this.name);
        };
        a.IR.Constant.prototype.compile = function(b) {
          return v(this.value, b);
        };
        a.IR.Variable.prototype.compile = function(b) {
          return u(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 A(this.isWith);
          return new P(u("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 g = new A(this.strict);
          return h(l(e, "findScopeProperty"), c.concat([a, g]));
        };
        a.IR.ASGetProperty.prototype.compile = function(a) {
          var e = f(this.object, a);
          if (this.flags & 1) {
            return h(l(e, "asGetNumericProperty"), [f(this.name.name, a)]);
          }
          if (this.flags & 2) {
            return h(l(e, "asGetResolvedStringProperty"), [f(this.name, a)]);
          }
          a = b(this.name, a);
          var c = new A(this.flags & 8);
          return h(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 h(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 I(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 ? h(u("asAdd"), [e, b]) : new M(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), g = this.args.map(function(a) {
            return f(a, b);
          });
          return this.flags & 16 ? p(e, a, g) : this.flags & 4 ? h(e, g) : s(e, a, g);
        };
        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 h(l(e, "asCallResolvedStringProperty"), [f(this.name, a), new A(this.isLex), new C(c)]);
          }
          var g = b(this.name, a);
          return h(l(e, "asCallProperty"), g.concat([new A(this.isLex), new C(c)]));
        };
        a.IR.ASCallSuper.prototype.compile = function(a) {
          var e = f(this.scope, a), c = f(this.object, a), g = this.args.map(function(b) {
            return f(b, a);
          }), n = b(this.name, a);
          return h(l(c, "asCallSuper"), [e].concat(n).concat(new C(g)));
        };
        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 A(null);
          return this.flags & 16 ? p(e, c, a) : null === this.object ? h(e, a) : s(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 P(e, a);
        };
        a.IR.This.prototype.compile = function(b) {
          return new Q;
        };
        a.IR.Throw.prototype.compile = function(b) {
          b = f(this.argument, b);
          return new S(b);
        };
        a.IR.Arguments.prototype.compile = function(b) {
          return u("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 h(l(e, "asSetNumericProperty"), [f(this.name.name, a), c]);
          }
          a = b(this.name, a);
          return h(l(e, "asSetProperty"), a.concat(c));
        };
        a.IR.ASSetSuper.prototype.compile = function(a) {
          var e = f(this.scope, a), c = f(this.object, a), g = b(this.name, a);
          a = f(this.value, a);
          return h(l(c, "asSetSuper"), [e].concat(g).concat([a]));
        };
        a.IR.ASDeleteProperty.prototype.compile = function(a) {
          var e = f(this.object, a);
          a = b(this.name, a);
          return h(l(e, "asDeleteProperty"), a);
        };
        a.IR.ASHasProperty.prototype.compile = function(a) {
          var e = f(this.object, a);
          a = b(this.name, a);
          return h(l(e, "asHasProperty"), a);
        };
        a.IR.GlobalProperty.prototype.compile = function(b) {
          return u(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 h(u("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 h(u("asSetSlot"), [a, e, b]);
        };
        a.IR.ASGetSlot.prototype.compile = function(b) {
          var a = f(this.object, b);
          b = f(this.name, b);
          return h(u("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 C(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 T(e, a, "init");
          });
          return new G(a);
        };
        a.IR.ASNewActivation.prototype.compile = function(b) {
          b = f(this.methodInfo, b);
          return h(u("asCreateActivation"), [b]);
        };
        a.IR.ASNewHasNext2.prototype.compile = function(b) {
          return new P(u("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 h(u("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;
        }();
        r.Compilation = ca;
        r.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(u(b.parameters[c] ? b.parameters[c].name : "_" + c));
          }
          c = "$$F" + ca.id++;
          if (b.constants.length) {
            var n = new H(c), h = new J(n, new H("constants"), !1);
            f.body.unshift(g([new F(u("$F"), n), new F(u("$C"), h)]));
          }
          b.variables.length && (k.countTimeline("Backend: Locals", b.variables.length), n = g(b.variables.map(function(b) {
            return new F(u(b.name));
          })), f.body.unshift(n));
          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 r(f) {
        k.enterTimeline("executeScript", {name:f.name});
        var b = f.abc, e = new a.Global(f);
        b.applicationDomain.allowNatives && (e[c.getPublicQualifiedName("unsafeJSNative")] = d.AVM2.AS.getNative);
        f.executing = !0;
        b = new a.Scope(null, f.global);
        a.createFunction(f.init, b, !1, !1).call(f.global, !1);
        f.executed = !0;
        k.leaveTimeline();
      }
      function v(a, b) {
        void 0 === b && (b = "");
        a.executed || a.executing || (2 <= d.AVM2.Runtime.traceExecution.value && console.log("Executing Script For: " + b), r(a));
      }
      function u(f) {
        if (!a.playerglobal) {
          return null;
        }
        for (var b = 0;b < f.namespaces.length;b++) {
          var e = a.playerglobal.map[f.namespaces[b].uri + ":" + f.name];
          if (e) {
            break;
          }
        }
        return e ? (f = e, f = (b = a.playerglobal.scripts[f]) ? new l(new Uint8Array(a.playerglobal.abcs, b.offset, b.length), f) : null, f) : null;
      }
      function t(a, b) {
        return new Promise(function(e, c) {
          var g = new XMLHttpRequest;
          g.open("GET", a);
          g.responseType = b;
          g.onload = function() {
            var h = g.response;
            h ? ("json" === b && "json" !== g.responseType && (h = JSON.parse(h)), e(h)) : c("Unable to load " + a + ": " + g.statusText);
          };
          g.send();
        });
      }
      var l = d.AVM2.ABC.AbcFile, c = d.AVM2.ABC.Multiname, h = d.Callback, p = d.IndentingWriter;
      a.executeScript = r;
      a.ensureScriptIsExecuted = v;
      (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 s;
      (function(a) {
        a[a.SpiderMonkey = 0] = "SpiderMonkey";
        a[a.V8 = 1] = "V8";
      })(s || (s = {}));
      var m = function() {
        function f(b, a) {
          this.systemDomain = new g(this, null, b, !0);
          this.applicationDomain = new g(this, this.systemDomain, a, !1);
          this.findDefiningAbc = u;
          this.exception = {value:void 0};
          this.exceptions = [];
          this.globals = Object.create(null);
        }
        f.initialize = function(b, a) {
          f.instance = new f(b, a);
        };
        f.currentAbc = function() {
          for (var b = Error().stack.split("\n"), a = 0 === b[1].indexOf("    at ") ? 1 : 0, f = 0;f < b.length;f++) {
            var c = b[f];
            if ((c = (c = 0 === a ? c.substr(0, c.indexOf("@")) : c.substr(7, c.indexOf(" ", 8))) && jsGlobal[c]) && c.methodInfo) {
              return c.methodInfo.abc;
            }
          }
          return null;
        };
        f.currentDomain = function() {
          var b = f.currentAbc();
          return null === b ? f.instance.systemDomain : b.applicationDomain;
        };
        f.isPlayerglobalLoaded = function() {
          return!!a.playerglobal;
        };
        f.loadPlayerglobal = function(b, e) {
          if (a.playerglobalLoadedPromise) {
            return Promise.reject("Playerglobal is already loaded");
          }
          a.playerglobalLoadedPromise = Promise.all([t(b, "arraybuffer"), t(e, "json")]).then(function(b) {
            a.playerglobal = {abcs:b[0], map:Object.create(null), scripts:Object.create(null)};
            b = b[1];
            for (var e = 0;e < b.length;e++) {
              var f = b[e];
              a.playerglobal.scripts[f.name] = f;
              if ("string" === typeof f.defs) {
                a.playerglobal.map[f.defs] = f.name;
              } else {
                for (var c = 0;c < f.defs.length;c++) {
                  a.playerglobal.map[f.defs[c]] = f.name;
                }
              }
            }
          }, function(b) {
            console.error(b);
          });
          return a.playerglobalLoadedPromise;
        };
        return f;
      }();
      a.AVM2 = m;
      var g = function() {
        function f(b, a, f, c) {
          this.vm = b;
          this.abcs = [];
          this.loadedAbcs = {};
          this.loadedClasses = [];
          this.classCache = Object.create(null);
          this.scriptCache = Object.create(null);
          this.classInfoCache = Object.create(null);
          this.base = a;
          this.allowNatives = c;
          this.mode = f;
          this.onMessage = new h;
          this.system = a ? a.system : this;
        }
        f.passthroughCallable = function(b) {
          return{call:function(a) {
            Array.prototype.shift.call(arguments);
            return b.asApply(a, arguments);
          }, apply:function(a, f) {
            return b.asApply(a, f);
          }};
        };
        f.coerceCallable = function(b) {
          return{call:function(e, f) {
            return a.asCoerce(b, f);
          }, apply:function(e, f) {
            return a.asCoerce(b, f[0]);
          }};
        };
        f.prototype.getType = function(b) {
          return this.getProperty(b, !0, !0);
        };
        f.prototype.getProperty = function(b, a, f) {
          if (f = this.findDefiningScript(b, f)) {
            return f.script.executing ? f.script.global[c.getQualifiedName(f.trait.name)] : void 0;
          }
          if (a) {
            return d.Debug.unexpected("Cannot find property " + b);
          }
        };
        f.prototype.getClass = function(b, a) {
          void 0 === a && (a = !0);
          var f = this.classCache, g = f[b];
          g || (g = f[b] = this.getProperty(c.fromSimpleName(b), a, !0));
          return g;
        };
        f.prototype.findDomainProperty = function(b, a, f) {
          d.AVM2.Runtime.traceDomain.value && console.log("ApplicationDomain.findDomainProperty: " + b);
          if (f = this.findDefiningScript(b, f)) {
            return f.script.global;
          }
          if (a) {
            return d.Debug.unexpected("Cannot find property " + b);
          }
        };
        f.prototype.findClassInfo = function(b) {
          var a;
          if (c.isQName(b)) {
            a = c.getQualifiedName(b);
            var f = this.classInfoCache[a];
          } else {
            f = this.classInfoCache[b.runtimeId];
          }
          return f || this.base && (f = this.base.findClassInfo(b)) ? f : this.findClassInfoSlow(b, a);
        };
        f.prototype.findClassInfoSlow = function(b, a) {
          for (var f = this.abcs, g = 0;g < f.length;g++) {
            for (var h = f[g], h = h.scripts, d = 0;d < h.length;d++) {
              for (var m = h[d].traits, l = 0;l < m.length;l++) {
                var p = m[l];
                if (p.isClass()) {
                  var s = c.getQualifiedName(p.name);
                  if (a) {
                    if (s === a) {
                      return this.classInfoCache[a] = p.classInfo;
                    }
                  } else {
                    for (var k = 0, r = b.namespaces.length;k < r;k++) {
                      var u = b.getQName(k);
                      if (s === c.getQualifiedName(u)) {
                        return this.classInfoCache[u] = p.classInfo;
                      }
                    }
                  }
                }
              }
            }
          }
          if (!this.base && this.vm.findDefiningAbc && (h = this.vm.findDefiningAbc(b), null !== h && !this.loadedAbcs[h.name])) {
            return this.loadedAbcs[h.name] = !0, this.loadAbc(h), this.findClassInfo(b);
          }
        };
        f.prototype.findDefiningScript = function(b, a) {
          var f = this.scriptCache[b.runtimeId];
          return f && (f.script.executed || !a) || this.base && (f = this.base.findDefiningScript(b, a)) ? f : this.findDefiningScriptSlow(b, a);
        };
        f.prototype.findDefiningScriptSlow = function(b, a) {
          k.countTimeline("ApplicationDomain: findDefiningScriptSlow");
          for (var f = this.abcs, g = 0;g < f.length;g++) {
            for (var h = f[g], h = h.scripts, d = 0;d < h.length;d++) {
              var m = h[d], l = m.traits;
              if (b instanceof c) {
                for (var p = 0;p < l.length;p++) {
                  var s = l[p];
                  if (b.hasQName(s.name)) {
                    return a && v(m, String(s.name)), this.scriptCache[b.runtimeId] = {script:m, trait:s};
                  }
                }
              }
            }
          }
          if (!this.base && this.vm.findDefiningAbc && (h = this.vm.findDefiningAbc(b), null !== h && !this.loadedAbcs[h.name])) {
            return this.loadedAbcs[h.name] = !0, this.loadAbc(h), this.findDefiningScript(b, a);
          }
        };
        f.prototype.compileAbc = function(b, a) {
          d.AVM2.Compiler.compileAbc(b, a);
        };
        f.prototype.executeAbc = function(b) {
          this.loadAbc(b);
          r(b.lastScript);
        };
        f.prototype.loadAbc = function(b) {
          d.AVM2.Runtime.traceExecution.value && console.log("Loading: " + b.name);
          b.applicationDomain = this;
          a.GlobalMultinameResolver.loadAbc(b);
          this.abcs.push(b);
          this.base || (k.AS.initialize(this), d.AVM2.Verifier.Type.initializeTypes(this));
        };
        f.prototype.broadcastMessage = function(b, a, f) {
          try {
            this.onMessage.notify1(b, {data:a, origin:f, source:this});
          } catch (c) {
            throw m.instance.exceptions.push({source:b, message:c.message, stack:c.stack}), c;
          }
        };
        f.prototype.traceLoadedClasses = function() {
          var b = new p;
          [d.ArrayUtilities.last(this.loadedClasses)].forEach(function(a) {
            a !== d.AVM2.AS.ASClass && a.trace(b);
          });
        };
        return f;
      }();
      a.ApplicationDomain = g;
      s = function() {
        function a(b) {
          this.compartment = newGlobal("new-compartment");
          this.compartment.homePath = homePath;
          this.compartment.release = !0;
          this.compartment.eval(snarf(b));
        }
        a.prototype.initializeShell = function(b, a) {
          var f = this.compartment;
          f.AVM2.initialize(b, a);
          f.AVM2.instance.systemDomain.executeAbc(f.grabAbc(homePath + "src/avm2/generated/builtin/builtin.abc"));
          f.AVM2.instance.systemDomain.executeAbc(f.grabAbc(homePath + "src/avm2/generated/shell/shell.abc"));
          this.systemDomain = f.AVM2.instance.systemDomain;
          this.applicationDomain = f.AVM2.instance.applicationDomain;
        };
        return a;
      }();
      a.SecurityDomain = s;
    })(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 r(a) {
        return a.holder instanceof u ? "static " + a.holder.instanceInfo.name.getOriginalName() + "::" + a.name.getOriginalName() : a.holder instanceof t ? a.holder.name.getOriginalName() + "::" + a.name.getOriginalName() : a.name.getOriginalName();
      }
      var v = d.AVM2.ABC.Multiname, u = d.AVM2.ABC.ClassInfo, t = d.AVM2.ABC.InstanceInfo, l = d.ObjectUtilities.defineReadOnlyProperty, c = d.FunctionUtilities.bindSafely;
      a.getMethodOverrideKey = r;
      a.checkMethodOverrides = function(c) {
        if (c.name && (c = r(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 t && 208 === c[2] && 73 === c[3] && 0 === c[4] && 71 === c[5] && v.getQualifiedName(a.holder.superName) === v.Object ? function() {
        } : null : null;
      };
      a.makeTrampoline = function(c, d, s, m, g, 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, g);
        return b;
      };
      a.makeMemoizer = function(h, p) {
        function s() {
          p.value.isTrampoline && p.value.trigger();
          var m = c(p.value, this);
          d.ObjectUtilities.defineReadOnlyProperty(m, "asLength", p.value.length);
          if (a.isNativePrototype(this)) {
            return k.countTimeline("Runtime: Method Closures"), m;
          }
          m.methodInfo = p.value.methodInfo;
          l(m, v.getPublicQualifiedName("prototype"), null);
          l(this, h, m);
          return m;
        }
        k.countTimeline("Runtime: Memoizers");
        s.isMemoizer = !0;
        return s;
      };
    })(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 r = d.AVM2.Runtime.Scope, v = d.AVM2.Runtime.asCoerceByMultiname, u = d.AVM2.Runtime.asGetSlot, t = d.AVM2.Runtime.asSetSlot, l = d.AVM2.Runtime.asCoerce, c = d.AVM2.Runtime.asCoerceString, h = d.AVM2.Runtime.asAsType, p = d.AVM2.Runtime.asTypeOf, s = d.AVM2.Runtime.asIsInstanceOf, m = d.AVM2.Runtime.asIsType, g = d.AVM2.Runtime.applyType, f = d.AVM2.Runtime.createFunction, b = d.AVM2.Runtime.createClass, e = d.AVM2.Runtime.getDescendants, q = d.AVM2.Runtime.checkFilter, n = d.AVM2.Runtime.asAdd, 
    x = d.AVM2.Runtime.translateError, L = d.AVM2.Runtime.asCreateActivation, A = d.AVM2.Runtime.sliceArguments, H = d.ObjectUtilities.boxValue, K = d.ArrayUtilities.popManyInto, F = d.AVM2.Runtime.construct, J = d.AVM2.ABC.Multiname, M = d.AVM2.Runtime.HasNext2Info, D = 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], f = this.isWith[a], c = this.scopes[a];
          c && c.parent === b && c.object === e && c.isWith === f || (c = this.scopes[a] = new r(b, e, f));
          b = c;
        }
        return b;
      };
      return b;
    }(), B = function() {
      function r() {
      }
      r.interpretMethod = function(r, E, B, C) {
        k.countTimeline("Interpret Method");
        var I = E.abc, P = I.constantPool.ints, T = I.constantPool.uints, O = I.constantPool.doubles, Q = I.constantPool.strings, S = I.methods, V = I.constantPool.multinames, aa = I.applicationDomain, $ = E.exceptions;
        r = [r];
        for (var w = [], U = new D(B), ba = E.parameters.length, R = C.length, N, Z = 0;Z < ba;Z++) {
          var fa = E.parameters[Z];
          N = Z < R ? C[Z] : fa.value;
          fa.type && !fa.type.isAnyName() && (N = v(E, fa.type, N));
          r.push(N);
        }
        E.needsRest() ? r.push(A(C, ba)) : E.needsArguments() && r.push(A(C, 0));
        C = E.analysis.bytecodes;
        var X, ia, ga, ca, da, ea, ba = [], R = J.TEMPORARY, fa = [], W = 0, ka = C.length;
        a: for (;W < ka;) {
          try {
            var Y = C[W], la = Y.op;
            switch(la | 0) {
              case 3:
                throw w.pop();;
              case 4:
                a(w, V[Y.index], R);
                w.push(w.pop().asGetSuper(B, R.namespaces, R.name, R.flags));
                break;
              case 5:
                N = w.pop();
                a(w, V[Y.index], R);
                w.pop().asSetSuper(B, R.namespaces, R.name, R.flags, N);
                break;
              case 8:
                r[Y.index] = void 0;
                break;
              case 12:
                ea = w.pop();
                da = w.pop();
                W = da < ea ? W + 1 : Y.offset;
                continue;
              case 24:
                ea = w.pop();
                da = w.pop();
                W = da >= ea ? Y.offset : W + 1;
                continue;
              case 13:
                ea = w.pop();
                da = w.pop();
                W = da <= ea ? W + 1 : Y.offset;
                continue;
              case 23:
                ea = w.pop();
                da = w.pop();
                W = da > ea ? Y.offset : W + 1;
                continue;
              case 14:
                ea = w.pop();
                da = w.pop();
                W = da > ea ? W + 1 : Y.offset;
                continue;
              case 22:
                ea = w.pop();
                da = w.pop();
                W = da <= ea ? Y.offset : W + 1;
                continue;
              case 15:
                ea = w.pop();
                da = w.pop();
                W = da >= ea ? W + 1 : Y.offset;
                continue;
              case 21:
                ea = w.pop();
                da = w.pop();
                W = da < ea ? Y.offset : W + 1;
                continue;
              case 16:
                W = Y.offset;
                continue;
              case 17:
                W = w.pop() ? Y.offset : W + 1;
                continue;
              case 18:
                W = w.pop() ? W + 1 : Y.offset;
                continue;
              case 19:
                ea = w.pop();
                da = w.pop();
                W = asEquals(da, ea) ? Y.offset : W + 1;
                continue;
              case 20:
                ea = w.pop();
                da = w.pop();
                W = asEquals(da, ea) ? W + 1 : Y.offset;
                continue;
              case 25:
                ea = w.pop();
                da = w.pop();
                W = da === ea ? Y.offset : W + 1;
                continue;
              case 26:
                ea = w.pop();
                da = w.pop();
                W = da !== ea ? Y.offset : W + 1;
                continue;
              case 27:
                ia = w.pop();
                if (0 > ia || ia >= Y.offsets.length) {
                  ia = Y.offsets.length - 1;
                }
                W = Y.offsets[ia];
                continue;
              case 28:
                U.push(H(w.pop()), !0);
                break;
              case 29:
                U.pop();
                break;
              case 30:
                ia = w.pop();
                w[w.length - 1] = H(w[w.length - 1]).asNextName(ia);
                break;
              case 35:
                ia = w.pop();
                w[w.length - 1] = H(w[w.length - 1]).asNextValue(ia);
                break;
              case 50:
                var ma = fa[W] || (fa[W] = new M(null, 0));
                X = r[Y.object];
                ia = r[Y.index];
                ma.object = X;
                ma.index = ia;
                Object(X).asHasNext2(ma);
                r[Y.object] = ma.object;
                r[Y.index] = ma.index;
                w.push(!!ma.index);
                break;
              case 32:
                w.push(null);
                break;
              case 33:
                w.push(void 0);
                break;
              case 36:
              ;
              case 37:
                w.push(Y.value);
                break;
              case 44:
                w.push(Q[Y.index]);
                break;
              case 45:
                w.push(P[Y.index]);
                break;
              case 46:
                w.push(T[Y.index]);
                break;
              case 47:
                w.push(O[Y.index]);
                break;
              case 38:
                w.push(!0);
                break;
              case 39:
                w.push(!1);
                break;
              case 40:
                w.push(NaN);
                break;
              case 41:
                w.pop();
                break;
              case 42:
                w.push(w[w.length - 1]);
                break;
              case 43:
                X = w[w.length - 1];
                w[w.length - 1] = w[w.length - 2];
                w[w.length - 2] = X;
                break;
              case 48:
                U.push(H(w.pop()), !1);
                break;
              case 64:
                w.push(f(S[Y.index], U.topScope(), !0, !1));
                break;
              case 65:
                K(w, Y.argCount, ba);
                X = w.pop();
                w[w.length - 1] = w[w.length - 1].asApply(X, ba);
                break;
              case 66:
                K(w, Y.argCount, ba);
                w[w.length - 1] = F(w[w.length - 1], ba);
                break;
              case 71:
                return;
              case 72:
                return E.returnType ? v(E, E.returnType, w.pop()) : w.pop();
              case 73:
                K(w, Y.argCount, ba);
                X = w.pop();
                B.object.baseClass.instanceConstructorNoInitialize.apply(X, ba);
                break;
              case 74:
                K(w, Y.argCount, ba);
                a(w, V[Y.index], R);
                X = H(w[w.length - 1]);
                X = X.asConstructProperty(R.namespaces, R.name, R.flags, ba);
                w[w.length - 1] = X;
                break;
              case 75:
                d.Debug.notImplemented("OP.callsuperid");
                break;
              case 76:
              ;
              case 70:
              ;
              case 79:
                K(w, Y.argCount, ba);
                a(w, V[Y.index], R);
                ca = H(w.pop()).asCallProperty(R.namespaces, R.name, R.flags, 76 === la, ba);
                79 !== la && w.push(ca);
                break;
              case 69:
              ;
              case 78:
                K(w, Y.argCount, ba);
                a(w, V[Y.index], R);
                ca = w.pop().asCallSuper(B, R.namespaces, R.name, R.flags, ba);
                78 !== la && w.push(ca);
                break;
              case 83:
                K(w, Y.argCount, ba);
                w[w.length - 1] = g(E, w[w.length - 1], ba);
                break;
              case 85:
                X = {};
                for (Z = 0;Z < Y.argCount;Z++) {
                  N = w.pop(), X[J.getPublicQualifiedName(w.pop())] = N;
                }
                w.push(X);
                break;
              case 86:
                X = [];
                K(w, Y.argCount, ba);
                X.push.apply(X, ba);
                w.push(X);
                break;
              case 87:
                w.push(L(E));
                break;
              case 88:
                w[w.length - 1] = b(I.classes[Y.index], w[w.length - 1], U.topScope());
                break;
              case 89:
                a(w, V[Y.index], R);
                void 0 === R.name && (R.name = "*");
                w.push(e(w.pop(), R));
                break;
              case 90:
                w.push($[Y.index].scopeObject);
                break;
              case 94:
              ;
              case 93:
                a(w, V[Y.index], R);
                w.push(U.topScope().findScopeProperty(R.namespaces, R.name, R.flags, E, 93 === la, !1));
                break;
              case 96:
                ga = V[Y.index];
                X = U.topScope().findScopeProperty(ga.namespaces, ga.name, ga.flags, E, !0, !1);
                w.push(X.asGetProperty(ga.namespaces, ga.name, ga.flags));
                break;
              case 104:
              ;
              case 97:
                N = w.pop();
                a(w, V[Y.index], R);
                H(w.pop()).asSetProperty(R.namespaces, R.name, R.flags, N);
                break;
              case 98:
                w.push(r[Y.index]);
                break;
              case 99:
                r[Y.index] = w.pop();
                break;
              case 100:
                w.push(B.global.object);
                break;
              case 101:
                w.push(U.get(Y.index));
                break;
              case 102:
                a(w, V[Y.index], R);
                w[w.length - 1] = H(w[w.length - 1]).asGetProperty(R.namespaces, R.name, R.flags);
                break;
              case 106:
                a(w, V[Y.index], R);
                w[w.length - 1] = H(w[w.length - 1]).asDeleteProperty(R.namespaces, R.name, R.flags);
                break;
              case 108:
                w[w.length - 1] = u(w[w.length - 1], Y.index);
                break;
              case 109:
                N = w.pop();
                X = w.pop();
                t(X, Y.index, N);
                break;
              case 112:
                w[w.length - 1] = c(w[w.length - 1]);
                break;
              case 114:
                w[w.length - 1] = k.Runtime.escapeXMLAttribute(w[w.length - 1]);
                break;
              case 113:
                w[w.length - 1] = k.Runtime.escapeXMLElement(w[w.length - 1]);
                break;
              case 131:
              ;
              case 115:
                w[w.length - 1] |= 0;
                break;
              case 136:
              ;
              case 116:
                w[w.length - 1] >>>= 0;
                break;
              case 132:
              ;
              case 117:
                w[w.length - 1] = +w[w.length - 1];
                break;
              case 129:
              ;
              case 118:
                w[w.length - 1] = !!w[w.length - 1];
                break;
              case 120:
                w[w.length - 1] = q(w[w.length - 1]);
                break;
              case 128:
                w[w.length - 1] = l(aa.getType(V[Y.index]), w[w.length - 1]);
                break;
              case 130:
                break;
              case 133:
                w[w.length - 1] = c(w[w.length - 1]);
                break;
              case 134:
                w[w.length - 2] = h(aa.getType(V[Y.index]), w[w.length - 1]);
                break;
              case 135:
                w[w.length - 2] = h(w.pop(), w[w.length - 1]);
                break;
              case 137:
                X = w[w.length - 1];
                w[w.length - 1] = void 0 == X ? null : X;
                break;
              case 144:
                w[w.length - 1] = -w[w.length - 1];
                break;
              case 145:
                ++w[w.length - 1];
                break;
              case 146:
                ++r[Y.index];
                break;
              case 147:
                --w[w.length - 1];
                break;
              case 148:
                --r[Y.index];
                break;
              case 149:
                w[w.length - 1] = p(w[w.length - 1]);
                break;
              case 150:
                w[w.length - 1] = !w[w.length - 1];
                break;
              case 151:
                w[w.length - 1] = ~w[w.length - 1];
                break;
              case 160:
                w[w.length - 2] = n(w[w.length - 2], w.pop());
                break;
              case 161:
                w[w.length - 2] -= w.pop();
                break;
              case 162:
                w[w.length - 2] *= w.pop();
                break;
              case 163:
                w[w.length - 2] /= w.pop();
                break;
              case 164:
                w[w.length - 2] %= w.pop();
                break;
              case 165:
                w[w.length - 2] <<= w.pop();
                break;
              case 166:
                w[w.length - 2] >>= w.pop();
                break;
              case 167:
                w[w.length - 2] >>>= w.pop();
                break;
              case 168:
                w[w.length - 2] &= w.pop();
                break;
              case 169:
                w[w.length - 2] |= w.pop();
                break;
              case 170:
                w[w.length - 2] ^= w.pop();
                break;
              case 171:
                w[w.length - 2] = asEquals(w[w.length - 2], w.pop());
                break;
              case 172:
                w[w.length - 2] = w[w.length - 2] === w.pop();
                break;
              case 173:
                w[w.length - 2] = w[w.length - 2] < w.pop();
                break;
              case 174:
                w[w.length - 2] = w[w.length - 2] <= w.pop();
                break;
              case 175:
                w[w.length - 2] = w[w.length - 2] > w.pop();
                break;
              case 176:
                w[w.length - 2] = w[w.length - 2] >= w.pop();
                break;
              case 177:
                w[w.length - 2] = s(w.pop(), w[w.length - 1]);
                break;
              case 178:
                w[w.length - 1] = m(aa.getType(V[Y.index]), w[w.length - 1]);
                break;
              case 179:
                w[w.length - 2] = m(w.pop(), w[w.length - 1]);
                break;
              case 180:
                w[w.length - 2] = H(w.pop()).asHasProperty(null, w[w.length - 1]);
                break;
              case 192:
                w[w.length - 1] = (w[w.length - 1] | 0) + 1;
                break;
              case 193:
                w[w.length - 1] = (w[w.length - 1] | 0) - 1;
                break;
              case 194:
                r[Y.index] = (r[Y.index] | 0) + 1;
                break;
              case 195:
                r[Y.index] = (r[Y.index] | 0) - 1;
                break;
              case 196:
                w[w.length - 1] = ~w[w.length - 1];
                break;
              case 197:
                w[w.length - 2] = w[w.length - 2] + w.pop() | 0;
                break;
              case 198:
                w[w.length - 2] = w[w.length - 2] - w.pop() | 0;
                break;
              case 199:
                w[w.length - 2] = w[w.length - 2] * w.pop() | 0;
                break;
              case 208:
              ;
              case 209:
              ;
              case 210:
              ;
              case 211:
                w.push(r[la - 208]);
                break;
              case 212:
              ;
              case 213:
              ;
              case 214:
              ;
              case 215:
                r[la - 212] = w.pop();
                break;
              case 6:
                d.AVM2.AS.ASXML.defaultNamespace = Q[Y.index];
                break;
              case 7:
                d.AVM2.AS.ASXML.defaultNamespace = w.pop();
                break;
              case 239:
              ;
              case 240:
              ;
              case 241:
                break;
              default:
                d.Debug.notImplemented(d.AVM2.opcodeName(la));
            }
            W++;
          } catch (na) {
            if (1 > $.length) {
              throw na;
            }
            for (var na = x(aa, na), Z = 0, sa = $.length;Z < sa;Z++) {
              var pa = $[Z];
              if (W >= pa.start && W <= pa.end && (!pa.typeName || aa.getType(pa.typeName).isType(na))) {
                w.length = 0;
                w.push(na);
                U.clear();
                W = pa.offset;
                continue a;
              }
            }
            throw na;
          }
        }
      };
      return r;
    }();
    k.Interpreter = B;
  })(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 f = 0;f < e.length;f++) {
          b.writeByte(e[f]);
        }
      } else {
        b.writeByte(0), b.writeByte(0);
      }
    }
    function r(b) {
      var a = b.readByte() << 8 | b.readByte();
      if (!a) {
        return "";
      }
      for (var e = new Uint8Array(a), f = 0;f < a;f++) {
        e[f] = b.readByte();
      }
      return d.StringUtilities.utf8encode(e);
    }
    function v(b, a) {
      var e = new ArrayBuffer(8), f = new DataView(e);
      f.setFloat64(0, a, !1);
      for (var c = 0;c < e.byteLength;c++) {
        b.writeByte(f.getUint8(c));
      }
    }
    function u(b) {
      for (var a = new ArrayBuffer(8), e = new DataView(a), f = 0;f < a.byteLength;f++) {
        e.setUint8(f, b.readByte());
      }
      return e.getFloat64(0, !1);
    }
    function t(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 f = b.readByte();
      if (0 === (f & 128)) {
        return(a & 127) << 14 | (e & 127) << 7 | f;
      }
      b = b.readByte();
      return(a & 127) << 22 | (e & 127) << 15 | (f & 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 = t(b);
      if (1 === e) {
        return "";
      }
      var f = a.stringsCache || (a.stringsCache = []);
      if (0 === (e & 1)) {
        return f[e >> 1];
      }
      for (var e = e >> 1, c = new Uint8Array(e), g = 0;g < e;g++) {
        c[g] = b.readByte();
      }
      e = d.StringUtilities.utf8encode(c);
      f.push(e);
      return e;
    }
    function h(b, a, e) {
      if ("" === a) {
        b.writeByte(1);
      } else {
        e = e.stringsCache || (e.stringsCache = []);
        var f = e.indexOf(a);
        if (0 <= f) {
          l(b, f << 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 p(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 t(a);
        case 5:
          return u(a);
        case 6:
          return c(a, e);
        case 8:
          return new Date(u(a));
        case 10:
          var h = t(a);
          if (0 === (h & 1)) {
            return e.objectsCache[h >> 1];
          }
          if (0 !== (h & 4)) {
            throw "AMF3 Traits-Ext is not supported";
          }
          var d, m;
          if (0 === (h & 2)) {
            d = e.traitsCache[h >> 2], m = d.class;
          } else {
            d = {};
            f = c(a, e);
            m = (d.className = f) && k.aliasesCache.names[f];
            d.class = m;
            d.isDynamic = 0 !== (h & 8);
            d.members = [];
            for (var l = m && m.instanceBindings.slots, f = 0, h = h >> 4;f < h;f++) {
              for (var s = c(a, e), r = null, h = 1;l && h < l.length;h++) {
                if (l[h].name.name === s) {
                  r = l[h];
                  break;
                }
              }
              d.members.push(r ? g.getQualifiedName(r.name) : g.getPublicQualifiedName(s));
            }
            (e.traitsCache || (e.traitsCache = [])).push(d);
          }
          l = m ? b(m, []) : {};
          (e.objectsCache || (e.objectsCache = [])).push(l);
          for (f = 0;f < d.members.length;f++) {
            m = p(a, e), l[d.members[f]] = m;
          }
          if (d.isDynamic) {
            for (;;) {
              f = c(a, e);
              if (!f.length) {
                break;
              }
              m = p(a, e);
              l.asSetPublicProperty(f, m);
            }
          }
          return l;
        case 9:
          h = t(a);
          if (0 === (h & 1)) {
            return e.objectsCache[h >> 1];
          }
          d = [];
          (e.objectsCache || (e.objectsCache = [])).push(d);
          for (l = h >> 1;;) {
            f = c(a, e);
            if (!f.length) {
              break;
            }
            m = p(a, e);
            d.asSetPublicProperty(f, m);
          }
          for (f = 0;f < l;f++) {
            m = p(a, e), d.asSetPublicProperty(f, m);
          }
          return d;
        default:
          throw "AMF3 Unknown marker " + f;;
      }
    }
    function s(b, a, e) {
      e = e.objectsCache || (e.objectsCache = []);
      var f = e.indexOf(a);
      if (0 > f) {
        return e.push(a), !1;
      }
      l(b, f << 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), v(b, a));
          break;
        case "undefined":
          b.writeByte(0);
          break;
        case "string":
          b.writeByte(6);
          h(b, a, e);
          break;
        case "object":
          if (null === a) {
            b.writeByte(1);
          } else {
            if (Array.isArray(a)) {
              b.writeByte(9);
              if (s(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 || (h(b, a, e), m(b, f, e));
              });
              h(b, "", e);
              for (var p = 0;p < c;p++) {
                m(b, a[p], e);
              }
            } else {
              if (a instanceof Date) {
                b.writeByte(8);
                if (s(b, a, e)) {
                  break;
                }
                l(b, 1);
                v(b, a.valueOf());
              } else {
                b.writeByte(10);
                if (s(b, a, e)) {
                  break;
                }
                var p = !0, r = a.class;
                if (r) {
                  var p = !r.classInfo.instanceInfo.isSealed(), u = k.aliasesCache.classes.get(r) || "", t, J = e.traitsCache || (e.traitsCache = []), M = e.traitsInfos || (e.traitsInfos = []), D = J.indexOf(r);
                  if (0 > D) {
                    var B = r.instanceBindings.slots;
                    t = [];
                    for (var D = [], E = 1;E < B.length;E++) {
                      var y = B[E];
                      y.name.getNamespace().isPublic() && (t.push(g.getQualifiedName(y.name)), D.push(y.name.name));
                    }
                    J.push(r);
                    M.push(t);
                    r = D.length;
                    l(b, (p ? 11 : 3) + (r << 4));
                    h(b, u, e);
                    for (E = 0;E < r;E++) {
                      h(b, D[E], e);
                    }
                  } else {
                    t = M[D], r = t.length, l(b, 1 + (D << 2));
                  }
                  for (E = 0;E < r;E++) {
                    m(b, a[t[E]], e);
                  }
                } else {
                  l(b, 11), h(b, "", e);
                }
                p && (f(a, function(a, f) {
                  h(b, a, e);
                  m(b, f, e);
                }), h(b, "", e));
              }
            }
          }
        ;
      }
    }
    var g = 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);
            v(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, f) {
              a(b, e);
              this.write(b, f);
            }, this)) : (b.writeByte(3), f(e, function(e, f) {
              a(b, e);
              this.write(b, f);
            }, this)), b.writeByte(0), b.writeByte(0), b.writeByte(9));
        }
      };
      b.read = function(b) {
        var a = b.readByte();
        switch(a) {
          case 0:
            return u(b);
          case 1:
            return!!b.readByte();
          case 2:
            return r(b);
          case 3:
            for (var e = {};;) {
              a = r(b);
              if (!a.length) {
                break;
              }
              var f = this.read(b);
              e.asSetPublicProperty(a, f);
            }
            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 = r(b);
              if (!a.length) {
                break;
              }
              f = this.read(b);
              e.asSetPublicProperty(a, f);
            }
            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 p(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 p(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 r(a, c, d) {
        return k(a, c, d) << 32 - d >> 32 - d;
      }
      function k(a, c, d) {
        for (var m = c.bitBuffer, g = c.bitLength;d > g;) {
          m = m << 8 | a[c.pos++], g += 8;
        }
        g -= d;
        a = m >>> g & t[d];
        c.bitBuffer = m;
        c.bitLength = g;
        return a;
      }
      var u = 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, g = (d & 31744) >> 10, d = d & 1023;
        return g ? 31 === g ? d ? NaN : Infinity * m : m * u(2, g - 15) * (1 + d / 1024) : m * u(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 = r;
      for (var t = new Uint32Array(33), l = 1, c = 0;32 >= l;++l) {
        t[l] = c = c << 1 | 1;
      }
      a.readUb = k;
      a.readFb = function(a, c, d) {
        return r(a, c, d) / 65536;
      };
      a.readString = function(a, c, l) {
        var m = c.pos;
        if (l) {
          a = a.subarray(m, m += l);
        } else {
          l = 0;
          for (var g = m;a[g];g++) {
            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(r) {
        function k(b, f, c, g, h) {
          c || (c = {});
          c.id = a.readUi16(b, f);
          var n = c.lineBounds = {};
          e(b, f, n, g, h);
          if (n = c.isMorph = 46 === h || 84 === h) {
            var q = c.lineBoundsMorph = {};
            e(b, f, q, g, h);
          }
          if (q = c.canHaveStrokes = 83 === h || 84 === h) {
            var d = c.fillBounds = {};
            e(b, f, d, g, h);
            n && (d = c.fillBoundsMorph = {}, e(b, f, d, g, h));
            c.flags = a.readUi8(b, f);
          }
          if (n) {
            c.offsetMorph = a.readUi32(b, f);
            var m = c, l, p, d = H(b, f, m, g, h, n, q), s = d.lineBits, r = d.fillBits, x = m.records = [];
            do {
              var u = {}, d = A(b, f, u, g, h, n, r, s, q, p);
              l = d.eos;
              r = d.fillBits;
              s = d.lineBits;
              p = d.bits;
              x.push(u);
            } while (!l);
            d = K(b, f);
            r = d.fillBits;
            s = d.lineBits;
            m = m.recordsMorph = [];
            do {
              x = {}, d = A(b, f, x, g, h, n, r, s, q, p), l = d.eos, r = d.fillBits, s = d.lineBits, p = d.bits, m.push(x);
            } while (!l);
          } else {
            r = c;
            p = H(b, f, r, g, h, n, q);
            d = p.fillBits;
            s = p.lineBits;
            m = r.records = [];
            do {
              x = {}, p = A(b, f, x, g, h, n, d, s, q, l), r = p.eos, d = p.fillBits, s = p.lineBits, l = p.bits, m.push(x);
            } while (!r);
          }
          return c;
        }
        function u(b, e, f, c, g, h) {
          var n;
          f || (f = {});
          if (4 === g) {
            return f.symbolId = a.readUi16(b, e), f.depth = a.readUi16(b, e), f.flags |= 4, f.matrix = x(b, e), e.pos < h && (f.flags |= 8, c = f.cxform = {}, L(b, e, c, g)), f;
          }
          n = f.flags = 26 < g ? a.readUi16(b, e) : a.readUi8(b, e);
          f.depth = a.readUi16(b, e);
          n & 2048 && (f.className = a.readString(b, e, 0));
          n & 2 && (f.symbolId = a.readUi16(b, e));
          n & 4 && (f.matrix = x(b, e));
          if (n & 8) {
            var q = f.cxform = {};
            L(b, e, q, g);
          }
          n & 16 && (f.ratio = a.readUi16(b, e));
          n & 32 && (f.name = a.readString(b, e, 0));
          n & 64 && (f.clipDepth = a.readUi16(b, e));
          if (n & 256) {
            for (q = a.readUi8(b, e), g = f.filters = [];q--;) {
              var d = {};
              J(b, e, d);
              g.push(d);
            }
          }
          n & 512 && (f.blendMode = a.readUi8(b, e));
          n & 1024 && (f.bmpCache = a.readUi8(b, e));
          n & 8192 && (f.visibility = a.readUi8(b, e));
          n & 16384 && (g = f, q = a.readUi8(b, e) | a.readUi8(b, e) << 24 | a.readUi8(b, e) << 16 | a.readUi8(b, e) << 8, g.backgroundColor = q);
          if (n & 128) {
            a.readUi16(b, e);
            6 <= c ? a.readUi32(b, e) : a.readUi16(b, e);
            n = f.events = [];
            do {
              g = {};
              var q = b, d = e, m = g, l = c, p = m.flags = 6 <= l ? a.readUi32(q, d) : a.readUi16(q, d);
              p ? (6 === l && (p &= -262145), l = m.length = a.readUi32(q, d), p & 131072 && (m.keyCode = a.readUi8(q, d), l--), p = d.pos + l, m.actionsData = q.subarray(d.pos, p), d.pos = p, q = !1) : q = !0;
              if (q) {
                break;
              }
              if (e.pos > h) {
                e.pos = h;
                break;
              }
              n.push(g);
            } while (1);
          }
          return f;
        }
        function t(b, e, f, c, g) {
          f || (f = {});
          5 === g && (f.symbolId = a.readUi16(b, e));
          f.depth = a.readUi16(b, e);
          return f;
        }
        function l(b, e, f, c, g, h, n) {
          c = f || {};
          c.id = a.readUi16(b, e);
          if (21 < g) {
            var q = a.readUi32(b, e);
            90 === g && (c.deblock = a.readFixed8(b, e));
            q += e.pos;
            f = c.imgData = b.subarray(e.pos, q);
            c.alphaData = b.subarray(q, h);
          } else {
            f = c.imgData = b.subarray(e.pos, h);
          }
          e.pos = h;
          switch(f[0] << 8 | f[1]) {
            case 65496:
            ;
            case 65497:
              c.mimeType = "image/jpeg";
              break;
            case 35152:
              c.mimeType = "image/png";
              break;
            case 18249:
              c.mimeType = "image/gif";
              break;
            default:
              c.mimeType = "application/octet-stream";
          }
          c.jpegTables = 6 === g ? n : null;
          return c;
        }
        function c(b, e, f, c, g, h) {
          var n;
          f || (f = {});
          f.id = a.readUi16(b, e);
          if (7 == g) {
            var q = f.characters = [];
            do {
              var d = {};
              n = b;
              var m = e, l = d, p = c, s = g, r = a.readUi8(n, m), k = l.eob = !r;
              l.flags = 8 <= p ? (r >> 5 & 1 ? 512 : 0) | (r >> 4 & 1 ? 256 : 0) : 0;
              l.stateHitTest = r >> 3 & 1;
              l.stateDown = r >> 2 & 1;
              l.stateOver = r >> 1 & 1;
              l.stateUp = r & 1;
              k || (l.symbolId = a.readUi16(n, m), l.depth = a.readUi16(n, m), l.matrix = x(n, m), 34 === s && (p = l.cxform = {}, L(n, m, p, s)), l.flags & 256 && (l.filterCount = a.readUi8(n, m), s = l.filters = {}, J(n, m, s)), l.flags & 512 && (l.blendMode = a.readUi8(n, m)));
              n = k;
              q.push(d);
            } while (!n);
            f.actionsData = b.subarray(e.pos, h);
            e.pos = h;
          } else {
            q = a.readUi8(b, e);
            f.trackAsMenu = q >> 7 & 1;
            d = a.readUi16(b, e);
            q = f.characters = [];
            do {
              m = {};
              l = a.readUi8(b, e);
              n = m.eob = !l;
              m.flags = 8 <= c ? (l >> 5 & 1 ? 512 : 0) | (l >> 4 & 1 ? 256 : 0) : 0;
              m.stateHitTest = l >> 3 & 1;
              m.stateDown = l >> 2 & 1;
              m.stateOver = l >> 1 & 1;
              m.stateUp = l & 1;
              if (!n) {
                m.symbolId = a.readUi16(b, e);
                m.depth = a.readUi16(b, e);
                m.matrix = x(b, e);
                34 === g && (l = m.cxform = {}, L(b, e, l, g));
                if (m.flags & 256) {
                  for (k = a.readUi8(b, e), l = f.filters = [];k--;) {
                    s = {}, J(b, e, s), l.push(s);
                  }
                }
                m.flags & 512 && (m.blendMode = a.readUi8(b, e));
              }
              q.push(m);
            } while (!n);
            if (d) {
              for (c = f.buttonActions = [];e.pos < h;) {
                g = b;
                q = e;
                n = h;
                d = q.pos;
                n = (m = a.readUi16(g, q)) ? d + m : n;
                m = a.readUi16(g, q);
                q.pos = n;
                if (e.pos > h) {
                  break;
                }
                c.push({keyCode:(m & 65024) >> 9, stateTransitionFlags:m & 511, actionsData:g.subarray(d + 4, n)});
              }
              e.pos = h;
            }
          }
          return f;
        }
        function h(b, e, f, c, g) {
          f || (f = {});
          f.id = a.readUi16(b, e);
          for (var h = a.readUi16(b, e), n = f.glyphCount = h / 2, q = [], d = n - 1;d--;) {
            q.push(a.readUi16(b, e));
          }
          f.offsets = [h].concat(q);
          for (h = f.glyphs = [];n--;) {
            q = {}, M(b, e, q, c, g), h.push(q);
          }
          return f;
        }
        function p(b, f, c, g, h) {
          var d;
          c || (c = {});
          c.id = a.readUi16(b, f);
          var m = c.bbox = {};
          e(b, f, m, g, h);
          c.matrix = x(b, f);
          g = c.glyphBits = a.readUi8(b, f);
          var m = c.advanceBits = a.readUi8(b, f), l = c.records = [];
          do {
            var p = {};
            d = b;
            var s = f, r = p, k = h, u = g, t = m, L = void 0;
            a.align(d, s);
            var v = a.readUb(d, s, 8), A = r.eot = !v, L = d, H = s, K = r, F = v, v = K.hasFont = F >> 3 & 1, J = K.hasColor = F >> 2 & 1, M = K.hasMoveY = F >> 1 & 1, F = K.hasMoveX = F & 1;
            v && (K.fontId = a.readUi16(L, H));
            J && (K.color = 33 === k ? n(L, H) : q(L, H));
            F && (K.moveX = a.readSi16(L, H));
            M && (K.moveY = a.readSi16(L, H));
            v && (K.fontHeight = a.readUi16(L, H));
            if (!A) {
              for (L = a.readUi8(d, s), L = r.glyphCount = L, r = r.entries = [];L--;) {
                H = {}, K = d, k = s, v = H, J = t, v.glyphIndex = a.readUb(K, k, u), v.advance = a.readSb(K, k, J), r.push(H);
              }
            }
            d = A;
            l.push(p);
          } while (!d);
          return c;
        }
        function s(b, e, f, c, g) {
          f || (f = {});
          15 == g && (f.soundId = a.readUi16(b, e));
          89 == g && (f.soundClassName = a.readString(b, e, 0));
          c = f;
          g = {};
          a.readUb(b, e, 2);
          g.stop = a.readUb(b, e, 1);
          g.noMultiple = a.readUb(b, e, 1);
          var h = g.hasEnvelope = a.readUb(b, e, 1), n = g.hasLoops = a.readUb(b, e, 1), q = g.hasOutPoint = a.readUb(b, e, 1);
          if (g.hasInPoint = a.readUb(b, e, 1)) {
            g.inPoint = a.readUi32(b, e);
          }
          q && (g.outPoint = a.readUi32(b, e));
          n && (g.loopCount = a.readUi16(b, e));
          if (h) {
            for (n = g.envelopeCount = a.readUi8(b, e), h = g.envelopes = [];n--;) {
              var q = {}, d = b, m = e, l = q;
              l.pos44 = a.readUi32(d, m);
              l.volumeLeft = a.readUi16(d, m);
              l.volumeRight = a.readUi16(d, m);
              h.push(q);
            }
          }
          c.soundInfo = g;
          return f;
        }
        function m(b, e, f, c, g, h) {
          f = f || {};
          f.id = a.readUi16(b, e);
          c = f.format = a.readUi8(b, e);
          f.width = a.readUi16(b, e);
          f.height = a.readUi16(b, e);
          f.hasAlpha = 36 === g;
          3 === c && (f.colorTableSize = a.readUi8(b, e));
          f.bmpData = b.subarray(e.pos, h);
          e.pos = h;
          return f;
        }
        function g(b, f, c, g, h) {
          c || (c = {});
          c.id = a.readUi16(b, f);
          var n = a.readUi8(b, f), q = c.hasLayout = n & 128 ? 1 : 0;
          c.shiftJis = 5 < g && n & 64 ? 1 : 0;
          c.smallText = n & 32 ? 1 : 0;
          c.ansi = n & 16 ? 1 : 0;
          var d = c.wideOffset = n & 8 ? 1 : 0, m = c.wide = n & 4 ? 1 : 0;
          c.italic = n & 2 ? 1 : 0;
          c.bold = n & 1 ? 1 : 0;
          5 < g ? c.language = a.readUi8(b, f) : (a.readUi8(b, f), c.language = 0);
          n = a.readUi8(b, f);
          c.name = a.readString(b, f, n);
          75 === h && (c.resolution = 20);
          n = c.glyphCount = a.readUi16(b, f);
          if (0 === n) {
            return c;
          }
          var l = f.pos;
          if (d) {
            for (var d = c.offsets = [], p = n;p--;) {
              d.push(a.readUi32(b, f));
            }
            c.mapOffset = a.readUi32(b, f);
          } else {
            d = c.offsets = [];
            for (p = n;p--;) {
              d.push(a.readUi16(b, f));
            }
            c.mapOffset = a.readUi16(b, f);
          }
          d = c.glyphs = [];
          for (p = n;p--;) {
            var s = {};
            1 === c.offsets[n - p] + l - f.pos ? (a.readUi8(b, f), d.push({records:[{type:0, eos:!0, hasNewStyles:0, hasLineStyle:0, hasFillStyle1:0, hasFillStyle0:0, move:0}]})) : (M(b, f, s, g, h), d.push(s));
          }
          if (m) {
            for (l = c.codes = [], d = n;d--;) {
              l.push(a.readUi16(b, f));
            }
          } else {
            for (l = c.codes = [], d = n;d--;) {
              l.push(a.readUi8(b, f));
            }
          }
          if (q) {
            c.ascent = a.readUi16(b, f);
            c.descent = a.readUi16(b, f);
            c.leading = a.readSi16(b, f);
            q = c.advance = [];
            for (l = n;l--;) {
              q.push(a.readSi16(b, f));
            }
            for (q = c.bbox = [];n--;) {
              l = {}, e(b, f, l, g, h), q.push(l);
            }
            h = a.readUi16(b, f);
            for (g = c.kerning = [];h--;) {
              n = {}, q = b, l = f, d = n, m ? (d.code1 = a.readUi16(q, l), d.code2 = a.readUi16(q, l)) : (d.code1 = a.readUi8(q, l), d.code2 = a.readUi8(q, l)), d.adjustment = a.readUi16(q, l), g.push(n);
            }
          }
          return c;
        }
        function f(b, e, f, c, g, h) {
          f || (f = {});
          f.id = a.readUi16(b, e);
          c = a.readUi8(b, e);
          g = f.hasFontData = c & 4 ? 1 : 0;
          f.italic = c & 2 ? 1 : 0;
          f.bold = c & 1 ? 1 : 0;
          f.name = a.readString(b, e, 0);
          g && (f.data = b.subarray(e.pos, h), e.pos = h);
          return f;
        }
        function b(b, e, f) {
          f || (f = {});
          for (var c = a.readEncodedU32(b, e), g = f.scenes = [];c--;) {
            var h = {};
            h.offset = a.readEncodedU32(b, e);
            h.name = a.readString(b, e, 0);
            g.push(h);
          }
          c = a.readEncodedU32(b, e);
          for (g = f.labels = [];c--;) {
            h = {}, h.frame = a.readEncodedU32(b, e), h.name = a.readString(b, e, 0), g.push(h);
          }
          return f;
        }
        function e(b, e, f, c, g) {
          a.align(b, e);
          var h = a.readUb(b, e, 5);
          c = a.readSb(b, e, h);
          g = a.readSb(b, e, h);
          var n = a.readSb(b, e, h), h = a.readSb(b, e, h);
          f.xMin = c;
          f.xMax = g;
          f.yMin = n;
          f.yMax = h;
          a.align(b, e);
        }
        function q(b, e) {
          return(a.readUi8(b, e) << 24 | a.readUi8(b, e) << 16 | a.readUi8(b, e) << 8 | 255) >>> 0;
        }
        function n(b, e) {
          return a.readUi8(b, e) << 24 | a.readUi8(b, e) << 16 | a.readUi8(b, e) << 8 | a.readUi8(b, e);
        }
        function x(b, e) {
          var f = {};
          a.align(b, e);
          if (a.readUb(b, e, 1)) {
            var c = a.readUb(b, e, 5);
            f.a = a.readFb(b, e, c);
            f.d = a.readFb(b, e, c);
          } else {
            f.a = 1, f.d = 1;
          }
          a.readUb(b, e, 1) ? (c = a.readUb(b, e, 5), f.b = a.readFb(b, e, c), f.c = a.readFb(b, e, c)) : (f.b = 0, f.c = 0);
          var c = a.readUb(b, e, 5), g = a.readSb(b, e, c), c = a.readSb(b, e, c);
          f.tx = g;
          f.ty = c;
          a.align(b, e);
          return f;
        }
        function L(b, e, f, c) {
          a.align(b, e);
          var g = a.readUb(b, e, 1), h = a.readUb(b, e, 1), n = a.readUb(b, e, 4);
          h ? (f.redMultiplier = a.readSb(b, e, n), f.greenMultiplier = a.readSb(b, e, n), f.blueMultiplier = a.readSb(b, e, n), f.alphaMultiplier = 4 < c ? a.readSb(b, e, n) : 256) : (f.redMultiplier = 256, f.greenMultiplier = 256, f.blueMultiplier = 256, f.alphaMultiplier = 256);
          g ? (f.redOffset = a.readSb(b, e, n), f.greenOffset = a.readSb(b, e, n), f.blueOffset = a.readSb(b, e, n), f.alphaOffset = 4 < c ? a.readSb(b, e, n) : 0) : (f.redOffset = 0, f.greenOffset = 0, f.blueOffset = 0, f.alphaOffset = 0);
          a.align(b, e);
        }
        function A(b, e, f, c, g, h, n, q, d, m) {
          var l, p = f.type = a.readUb(b, e, 1), s = a.readUb(b, e, 5);
          l = f.eos = !(p || s);
          if (p) {
            c = (s & 15) + 2, (f.isStraight = s >> 4) ? (f.isGeneral = a.readUb(b, e, 1)) ? (f.deltaX = a.readSb(b, e, c), f.deltaY = a.readSb(b, e, c)) : (f.isVertical = a.readUb(b, e, 1)) ? f.deltaY = a.readSb(b, e, c) : f.deltaX = a.readSb(b, e, c) : (f.controlDeltaX = a.readSb(b, e, c), f.controlDeltaY = a.readSb(b, e, c), f.anchorDeltaX = a.readSb(b, e, c), f.anchorDeltaY = a.readSb(b, e, c)), b = c;
          } else {
            var r = f.hasNewStyles = 2 < g ? s >> 4 : 0, k = f.hasLineStyle = s >> 3 & 1, x = f.hasFillStyle1 = s >> 2 & 1, u = f.hasFillStyle0 = s >> 1 & 1;
            if (f.move = s & 1) {
              m = a.readUb(b, e, 5), f.moveX = a.readSb(b, e, m), f.moveY = a.readSb(b, e, m);
            }
            u && (f.fillStyle0 = a.readUb(b, e, n));
            x && (f.fillStyle1 = a.readUb(b, e, n));
            k && (f.lineStyle = a.readUb(b, e, q));
            r && (b = H(b, e, f, c, g, h, d), q = b.lineBits, n = b.fillBits);
            b = m;
          }
          return{type:p, flags:s, eos:l, fillBits:n, lineBits:q, bits:b};
        }
        function H(b, e, f, c, g, h, d) {
          var m, l = a.readUi8(b, e);
          m = 2 < g && 255 === l ? a.readUi16(b, e) : l;
          for (l = f.fillStyles = [];m--;) {
            var p = {};
            F(b, e, p, c, g, h);
            l.push(p);
          }
          l = a.readUi8(b, e);
          l = 2 < g && 255 === l ? a.readUi16(b, e) : l;
          for (f = f.lineStyles = [];l--;) {
            m = {};
            var p = b, s = e, r = m, k = c, x = g, u = h, t = d;
            r.width = a.readUi16(p, s);
            u && (r.widthMorph = a.readUi16(p, s));
            if (t) {
              a.align(p, s);
              r.startCapsStyle = a.readUb(p, s, 2);
              var t = r.jointStyle = a.readUb(p, s, 2), L = r.hasFill = a.readUb(p, s, 1);
              r.noHscale = a.readUb(p, s, 1);
              r.noVscale = a.readUb(p, s, 1);
              r.pixelHinting = a.readUb(p, s, 1);
              a.readUb(p, s, 5);
              r.noClose = a.readUb(p, s, 1);
              r.endCapsStyle = a.readUb(p, s, 2);
              2 === t && (r.miterLimitFactor = a.readFixed8(p, s));
              L ? (r = r.fillStyle = {}, F(p, s, r, k, x, u)) : (r.color = n(p, s), u && (r.colorMorph = n(p, s)));
            } else {
              r.color = 22 < x ? n(p, s) : q(p, s), u && (r.colorMorph = n(p, s));
            }
            f.push(m);
          }
          b = K(b, e);
          return{fillBits:b.fillBits, lineBits:b.lineBits};
        }
        function K(b, e) {
          a.align(b, e);
          var f = a.readUb(b, e, 4), c = a.readUb(b, e, 4);
          return{fillBits:f, lineBits:c};
        }
        function F(b, e, f, c, g, h) {
          c = f.type = a.readUi8(b, e);
          switch(c) {
            case 0:
              f.color = 22 < g || h ? n(b, e) : q(b, e);
              h && (f.colorMorph = n(b, e));
              break;
            case 16:
            ;
            case 18:
            ;
            case 19:
              f.matrix = x(b, e);
              h && (f.matrixMorph = x(b, e));
              83 === g ? (f.spreadMode = a.readUb(b, e, 2), f.interpolationMode = a.readUb(b, e, 2)) : a.readUb(b, e, 4);
              for (var d = f.count = a.readUb(b, e, 4), m = f.records = [];d--;) {
                var l = {}, p = b, s = e, r = l, k = g, u = h;
                r.ratio = a.readUi8(p, s);
                r.color = 22 < k ? n(p, s) : q(p, s);
                u && (r.ratioMorph = a.readUi8(p, s), r.colorMorph = n(p, s));
                m.push(l);
              }
              19 === c && (f.focalPoint = a.readSi16(b, e), h && (f.focalPointMorph = a.readSi16(b, e)));
              break;
            case 64:
            ;
            case 65:
            ;
            case 66:
            ;
            case 67:
              f.bitmapId = a.readUi16(b, e), f.condition = 64 === c || 67 === c, f.matrix = x(b, e), h && (f.matrixMorph = x(b, e));
          }
        }
        function J(b, e, f) {
          var c = f.type = a.readUi8(b, e);
          switch(c) {
            case 0:
            ;
            case 2:
            ;
            case 3:
            ;
            case 4:
            ;
            case 7:
              var g;
              g = 4 === c || 7 === c ? a.readUi8(b, e) : 1;
              for (var h = f.colors = [], q = g;q--;) {
                h.push(n(b, e));
              }
              3 === c && (f.hightlightColor = n(b, e));
              if (4 === c || 7 === c) {
                for (h = f.ratios = [];g--;) {
                  h.push(a.readUi8(b, e));
                }
              }
              f.blurX = a.readFixed(b, e);
              f.blurY = a.readFixed(b, e);
              2 !== c && (f.angle = a.readFixed(b, e), f.distance = a.readFixed(b, e));
              f.strength = a.readFixed8(b, e);
              f.inner = a.readUb(b, e, 1);
              f.knockout = a.readUb(b, e, 1);
              f.compositeSource = a.readUb(b, e, 1);
              3 === c || 4 === c || 7 === c ? (f.onTop = a.readUb(b, e, 1), f.quality = a.readUb(b, e, 4)) : f.quality = a.readUb(b, e, 5);
              break;
            case 1:
              f.blurX = a.readFixed(b, e);
              f.blurY = a.readFixed(b, e);
              f.quality = a.readUb(b, e, 5);
              a.readUb(b, e, 3);
              break;
            case 5:
              g = f.matrixX = a.readUi8(b, e);
              h = f.matrixY = a.readUi8(b, e);
              f.divisor = a.readFloat(b, e);
              f.bias = a.readFloat(b, e);
              c = f.matrix = [];
              for (g *= h;g--;) {
                c.push(a.readFloat(b, e));
              }
              f.color = n(b, e);
              a.readUb(b, e, 6);
              f.clamp = a.readUb(b, e, 1);
              f.preserveAlpha = a.readUb(b, e, 1);
              break;
            case 6:
              for (f = f.matrix = [], c = 20;c--;) {
                f.push(a.readFloat(b, e));
              }
            ;
          }
        }
        function M(b, a, e, f, c) {
          var g, h;
          h = K(b, a);
          var n = h.fillBits, q = h.lineBits, d = e.records = [];
          do {
            var m = {};
            h = A(b, a, m, f, c, !1, n, q, !1, g);
            e = h.eos;
            n = h.fillBits;
            q = h.lineBits;
            g = h.bits;
            d.push(m);
          } while (!e);
        }
        r.defineImage = l;
        r.defineFont = h;
        r.soundStreamHead = function(b, e) {
          var f = {}, c = a.readUi8(b, e);
          f.playbackRate = c >> 2 & 3;
          f.playbackSize = c >> 1 & 1;
          f.playbackType = c & 1;
          var c = a.readUi8(b, e), g = f.streamCompression = c >> 4 & 15;
          f.streamRate = c >> 2 & 3;
          f.streamSize = c >> 1 & 1;
          f.streamType = c & 1;
          f.samplesCount = a.readUi16(b, e);
          2 == g && (f.latencySeek = a.readSi16(b, e));
          return f;
        };
        r.defineBitmap = m;
        r.defineFont2 = g;
        r.defineFont4 = f;
        r.defineScene = b;
        r.rgb = q;
        r.tagHandlers = {0:void 0, 1:void 0, 2:k, 4:u, 5:t, 6:l, 7:c, 8:void 0, 9:void 0, 10:h, 11:p, 12:void 0, 13:void 0, 14:function(b, e, f, c, g, h) {
          f || (f = {});
          f.id = a.readUi16(b, e);
          c = a.readUi8(b, e);
          f.soundFormat = c >> 4 & 15;
          f.soundRate = c >> 2 & 3;
          f.soundSize = c >> 1 & 1;
          f.soundType = c & 1;
          f.samplesCount = a.readUi32(b, e);
          f.soundData = b.subarray(e.pos, h);
          e.pos = h;
          return f;
        }, 15:s, 17:void 0, 18:void 0, 19:void 0, 20:m, 21:l, 22:k, 23:void 0, 24:void 0, 26:u, 28:t, 32:k, 33:p, 34:c, 35:l, 36:m, 37:function(b, f, c, g, h) {
          c || (c = {});
          c.id = a.readUi16(b, f);
          var q = c.bbox = {};
          e(b, f, q, g, h);
          g = a.readUi16(b, f);
          h = c.hasText = g >> 7 & 1;
          c.wordWrap = g >> 6 & 1;
          c.multiline = g >> 5 & 1;
          c.password = g >> 4 & 1;
          c.readonly = g >> 3 & 1;
          var q = c.hasColor = g >> 2 & 1, d = c.hasMaxLength = g >> 1 & 1, m = c.hasFont = g & 1, l = c.hasFontClass = g >> 15 & 1;
          c.autoSize = g >> 14 & 1;
          var p = c.hasLayout = g >> 13 & 1;
          c.noSelect = g >> 12 & 1;
          c.border = g >> 11 & 1;
          c.wasStatic = g >> 10 & 1;
          c.html = g >> 9 & 1;
          c.useOutlines = g >> 8 & 1;
          m && (c.fontId = a.readUi16(b, f));
          l && (c.fontClass = a.readString(b, f, 0));
          m && (c.fontHeight = a.readUi16(b, f));
          q && (c.color = n(b, f));
          d && (c.maxLength = a.readUi16(b, f));
          p && (c.align = a.readUi8(b, f), c.leftMargin = a.readUi16(b, f), c.rightMargin = a.readUi16(b, f), c.indent = a.readSi16(b, f), c.leading = a.readSi16(b, f));
          c.variableName = a.readString(b, f, 0);
          h && (c.initialText = a.readString(b, f, 0));
          return c;
        }, 39:void 0, 43:void 0, 45:void 0, 46:k, 48:g, 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:u, 71:void 0, 72:void 0, 73:void 0, 74:void 0, 75:g, 76:void 0, 77:void 0, 78:function(b, f, c, g, h) {
          c || (c = {});
          c.symbolId = a.readUi16(b, f);
          var n = c.splitter = {};
          e(b, f, n, g, h);
          return c;
        }, 82:void 0, 83:k, 84:k, 86:b, 87:function(b, e, f, c, g, h) {
          f || (f = {});
          f.id = a.readUi16(b, e);
          a.readUi32(b, e);
          f.data = b.subarray(e.pos, h);
          e.pos = h;
          return f;
        }, 88:void 0, 89:s, 90:l, 91:f};
        r.readHeader = function(b, e) {
          var f = a.readUb(b, e, 5), c = a.readSb(b, e, f), g = a.readSb(b, e, f), h = a.readSb(b, e, f), f = a.readSb(b, e, f);
          a.align(b, e);
          var n = a.readUi8(b, e), n = a.readUi8(b, e) + n / 256, q = a.readUi16(b, e);
          return{frameRate:n, frameCount:q, bounds:new d.Bounds(c, h, g, f)};
        };
      })(a.LowLevel || (a.LowLevel = {}));
    })(k.Parser || (k.Parser = {}));
  })(d.SWF || (d.SWF = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var r = d.IntegerUtilities.roundToMultipleOfFour, v = 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 t, l = 0;
        switch(a.format) {
          case 3:
            t = a.width;
            var l = a.height, c = a.hasAlpha, h = r(t) - t, p = c ? 4 : 3, s = r((a.colorTableSize + 1) * p), m = v.inflate(a.bmpData, s + (t + h) * l, !0), g = new Uint32Array(t * l), f = 0, b = 0;
            if (c) {
              for (c = 0;c < l;c++) {
                for (var e = 0;e < t;e++) {
                  var b = m[s++] << 2, q = m[b + 3], n = m[b + 0], x = m[b + 1], b = m[b + 2];
                  g[f++] = b << 24 | x << 16 | n << 8 | q;
                }
                s += h;
              }
            } else {
              for (c = 0;c < l;c++) {
                for (e = 0;e < t;e++) {
                  b = m[s++] * p, q = 255, n = m[b + 0], x = m[b + 1], b = m[b + 2], g[f++] = b << 24 | x << 16 | n << 8 | q;
                }
                s += h;
              }
            }
            t = new Uint8Array(g.buffer);
            l = 1;
            break;
          case 5:
            h = a.width;
            p = a.height;
            l = a.hasAlpha;
            t = v.inflate(a.bmpData, p * h * 4, !0);
            if (!l) {
              l = new Uint32Array(h * p);
              h *= p;
              for (m = p = 0;m < h;m++) {
                p++, g = t[p++], s = t[p++], f = t[p++], l[m] = f << 24 | s << 16 | g << 8 | 255;
              }
              t = new Uint8Array(l.buffer);
            }
            l = 1;
            break;
          case 4:
            d.Debug.notImplemented("parse15BPP"), t = null, l = 1;
        }
        k.leaveTimeline();
        return{definition:{type:"image", id:a.id, width:a.width, height:a.height, mimeType:"application/octet-stream", data:t, 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, t = {up:[], over:[], down:[], hitTest:[]}, l = 0, c;(c = k[l++]) && !c.eob;) {
          var h = {symbolId:d[c.symbolId].id, code:4, depth:c.depth, flags:c.matrix ? 4 : 0, matrix:c.matrix};
          c.stateUp && t.up.push(h);
          c.stateOver && t.over.push(h);
          c.stateDown && t.down.push(h);
          c.stateHitTest && t.hitTest.push(h);
        }
        return{type:"button", id:a.id, buttonActions:a.buttonActions, states:t};
      };
    })(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 s(a >> 8 & 255, a & 255);
      }
      function u(a) {
        return k(a >> 16) + k(a);
      }
      function t(a) {
        for (var c = 0, f = 0, b = 0, e = 0, h = 0;h < a.length;h++) {
          var n = a[h];
          if (n) {
            for (var n = n.records, d, l = 0, p = 0, s = 0;s < n.length;s++) {
              d = n[s];
              if (d.type) {
                d.isStraight ? (l += d.deltaX || 0, p += -(d.deltaY || 0)) : (l += d.controlDeltaX, p += -d.controlDeltaY, l += d.anchorDeltaX, p += -d.anchorDeltaY);
              } else {
                if (d.eos) {
                  break;
                }
                d.move && (l = d.moveX, p = -d.moveY);
              }
              c > l && (c = l);
              f > p && (f = p);
              b < l && (b = l);
              e < p && (e = p);
            }
          }
        }
        return 5E3 < Math.max(b - c, e - f);
      }
      var l = Math.pow, c = Math.min, h = Math.max, p = Math.log, s = String.fromCharCode;
      a.defineFont = function(a) {
        var g = "swf-font-" + a.id, f = a.name || g, 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, q = e ? a.glyphCount = e.length : 0;
        if (!q) {
          return b;
        }
        var n = {}, l = [], s = {}, A = [], H, K = !("advance" in a), F = 48 === a.code, J = 75 === a.code;
        K && (a.advance = []);
        H = Math.max.apply(null, a.codes) || 35;
        if (a.codes) {
          for (var M = 0;M < a.codes.length;M++) {
            var D = a.codes[M];
            if (32 > D || -1 < l.indexOf(D)) {
              H++, 8232 == H && (H = 8240), D = H;
            }
            l.push(D);
            s[D] = M;
          }
          H = l.concat();
          l.sort(function(b, a) {
            return b - a;
          });
          for (var M = 0, B;void 0 !== (D = l[M++]);) {
            var E = D, y = E;
            for (B = [M - 1];void 0 !== (D = l[M]) && y + 1 === D;) {
              ++y, B.push(M), ++M;
            }
            A.push([E, y, B]);
          }
        } else {
          B = [];
          for (M = 0;M < q;M++) {
            D = 57344 + M, l.push(D), s[D] = M, B.push(M);
          }
          A.push([57344, 57344 + q - 1, B]);
          H = l.concat();
        }
        var z = a.resolution || 1;
        F && t(e) && (z = 20, b.originalSize = !0);
        F = Math.ceil(a.ascent / z) || 1024;
        B = -Math.ceil(a.descent / z) || 0;
        for (var G = a.leading / z || 0, C = n["OS/2"] = "", I = "", P = "", T = "", M = 0, O;O = A[M++];) {
          E = O[0], y = O[1], D = O[2][0], C += k(E), I += k(y), P += k(D - E + 1 & 65535), T += k(0);
        }
        I += "\u00ff\u00ff";
        C += "\u00ff\u00ff";
        P += "\x00\u0001";
        T += "\x00\x00";
        A = A.length + 1;
        M = 2 * d(A);
        E = 2 * A - M;
        M = "\x00\x00" + k(2 * A) + k(M) + k(p(A) / p(2)) + k(E) + I + "\x00\x00" + C + P + T;
        n.cmap = "\x00\x00\x00\u0001\x00\u0003\x00\u0001\x00\x00\x00\f\x00\u0004" + k(M.length + 4) + M;
        var Q = "\x00\u0001\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x001\x00", C = "\x00\x00", A = 16, I = 0, T = [], E = [], y = [];
        O = [];
        for (var M = P = 0, S = {};void 0 !== (D = l[M++]);) {
          for (var V = e[s[D]], aa = V.records, $ = 0, w = 0, U = "", ba = "", R = 0, N = [], R = -1, V = 0;V < aa.length;V++) {
            U = aa[V];
            if (U.type) {
              0 > R && (R = 0, N[R] = {data:[], commands:[], xMin:0, xMax:0, yMin:0, yMax:0});
              if (U.isStraight) {
                N[R].commands.push(2);
                var Z = (U.deltaX || 0) / z, fa = -(U.deltaY || 0) / z;
              } else {
                N[R].commands.push(3), Z = U.controlDeltaX / z, fa = -U.controlDeltaY / z, $ += Z, w += fa, N[R].data.push($, w), Z = U.anchorDeltaX / z, fa = -U.anchorDeltaY / z;
              }
              $ += Z;
              w += fa;
              N[R].data.push($, w);
            } else {
              if (U.eos) {
                break;
              }
              if (U.move) {
                R++;
                N[R] = {data:[], commands:[], xMin:0, xMax:0, yMin:0, yMax:0};
                N[R].commands.push(1);
                var X = U.moveX / z, U = -U.moveY / z, Z = X - $, fa = U - w, $ = X, w = U;
                N[R].data.push($, w);
              }
            }
            -1 < R && (N[R].xMin > $ && (N[R].xMin = $), N[R].yMin > w && (N[R].yMin = w), N[R].xMax < $ && (N[R].xMax = $), N[R].yMax < w && (N[R].yMax = w));
          }
          J || N.sort(function(b, a) {
            return(a.xMax - a.xMin) * (a.yMax - a.yMin) - (b.xMax - b.xMin) * (b.yMax - b.yMin);
          });
          S[D] = N;
        }
        for (M = 0;void 0 !== (D = l[M++]);) {
          for (var V = e[s[D]], aa = V.records, N = S[D], ia = 1, R = 0, Z = w = U = $ = "", D = w = $ = 0, aa = -1024, X = 0, ga = -1024, ba = U = "", R = 0, R = -1, ca = [], da = [], V = 0;V < N.length;V++) {
            ca = ca.concat(N[V].data), da = da.concat(N[V].commands);
          }
          for (var ea = w = $ = 0, W = 0, ka = "", N = "", Y = 0, R = 0, ia = 1, ba = "", V = 0;V < da.length;V++) {
            Z = da[V], 1 === Z ? (R && (++ia, ba += k(R - 1)), ea = ca[Y++], W = ca[Y++], Z = ea - $, fa = W - w, U += "\u0001", ka += k(Z), N += k(fa), $ = ea, w = W) : 2 === Z ? (ea = ca[Y++], W = ca[Y++], Z = ea - $, fa = W - w, U += "\u0001", ka += k(Z), N += k(fa), $ = ea, w = W) : 3 === Z && (ea = ca[Y++], W = ca[Y++], Z = ea - $, fa = W - w, U += "\x00", ka += k(Z), N += k(fa), $ = ea, w = W, R++, ea = ca[Y++], W = ca[Y++], Z = ea - $, fa = W - w, U += "\u0001", ka += k(Z), N += k(fa), $ = 
            ea, w = W), R++, R > I && (I = R), D > $ && (D = $), X > w && (X = w), aa < $ && (aa = $), ga < w && (ga = w);
          }
          $ = ba += k((R || 1) - 1);
          w = ka;
          Z = N;
          V || (D = aa = X = ga = 0, U += "1");
          V = k(ia) + k(D) + k(X) + k(aa) + k(ga) + $ + "\x00\x00" + U + w + Z;
          V.length & 1 && (V += "\x00");
          Q += V;
          C += k(A / 2);
          A += V.length;
          T.push(D);
          E.push(aa);
          y.push(X);
          O.push(ga);
          ia > P && (P = ia);
          R > I && (I = R);
          K && a.advance.push((aa - D) * z * 1.3);
        }
        C += k(A / 2);
        n.glyf = Q;
        J || (M = Math.min.apply(null, y), 0 > M && (B = B || M));
        n["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(F) + k(B) + k(G) + k(F) + k(-B) + "\x00\x00\x00\x00\x00\x00\x00\x00";
        n.head = "\x00\u0001\x00\x00\x00\u0001\x00\x00\x00\x00\x00\x00_\u000f<\u00f5\x00\x0B\u0004\x00\x00\x00\x00\x00" + u(Date.now()) + "\x00\x00\x00\x00" + u(Date.now()) + k(c.apply(null, T)) + k(c.apply(null, y)) + k(h.apply(null, E)) + k(h.apply(null, O)) + k((a.italic ? 2 : 0) | (a.bold ? 1 : 0)) + "\x00\b\x00\u0002\x00\x00\x00\x00";
        l = a.advance;
        n.hhea = "\x00\u0001\x00\x00" + k(F) + k(B) + k(G) + k(l ? h.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(q + 1);
        e = "\x00\x00\x00\x00";
        for (M = 0;M < q;++M) {
          e += k(l ? l[M] / z : 1024) + "\x00\x00";
        }
        n.hmtx = e;
        if (a.kerning) {
          l = a.kerning;
          z = l.length;
          M = 2 * d(z);
          z = "\x00\x00\x00\u0001\x00\x00" + k(14 + 6 * z) + "\x00\u0001" + k(z) + k(M) + k(p(z) / p(2)) + k(2 * z - M);
          for (M = 0;U = l[M++];) {
            z += k(s[U.code1]) + k(s[U.code2]) + k(U.adjustment);
          }
          n.kern = z;
        }
        n.loca = C;
        n.maxp = "\x00\u0001\x00\x00" + k(q + 1) + k(I) + k(P) + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";
        M = f.replace(/ /g, "");
        g = [a.copyright || "Original licence", f, "Unknown", g, f, "1.0", M, "Unknown", "Unknown", "Unknown"];
        M = g.length;
        a = "\x00\x00" + k(M) + k(12 * M + 6);
        for (M = A = 0;f = g[M++];) {
          a += "\x00\u0001\x00\x00\x00\x00" + k(M - 1) + k(f.length) + k(A), A += f.length;
        }
        n.name = a + g.join("");
        n.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";
        g = Object.keys(n);
        M = g.length;
        f = "\x00\u0001\x00\x00" + k(M) + "\x00\u0080\x00\u0003\x00 ";
        q = "";
        A = 16 * M + f.length;
        for (M = 0;a = g[M++];) {
          s = n[a];
          l = s.length;
          for (f += a + "\x00\x00\x00\x00" + u(A) + u(l);l & 3;) {
            s += "\x00", ++l;
          }
          for (q += s;A & 3;) {
            ++A;
          }
          A += l;
        }
        n = f + q;
        F = {ascent:F / 1024, descent:-B / 1024, leading:G / 1024};
        B = new Uint8Array(n.length);
        for (M = 0;M < n.length;M++) {
          B[M] = n.charCodeAt(M) & 255;
        }
        b.codes = H;
        b.metrics = F;
        b.data = B;
        return b;
      };
    })(d.Parser || (d.Parser = {}));
  })(d.SWF || (d.SWF = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      function r(a, h) {
        return a[h] << 8 | a[h + 1];
      }
      function v(a, h, d) {
        var l = 0, m = h.length, g;
        do {
          for (var f = l;l < m && 255 !== h[l];) {
            ++l;
          }
          for (;l < m && 255 === h[l];) {
            ++l;
          }
          g = h[l++];
          if (218 === g) {
            l = m;
          } else {
            if (217 === g) {
              l += 2;
              continue;
            } else {
              if (208 > g || 216 < g) {
                var b = r(h, l);
                192 <= g && 195 >= g && (a.height = r(h, l + 3), a.width = r(h, l + 5));
                l += b;
              }
            }
          }
          d.push(h.subarray(f, l));
        } while (l < m);
        return d;
      }
      function u(a, h) {
        if (73 === h[12] && 72 === h[13] && 68 === h[14] && 82 === h[15]) {
          a.width = h[16] << 24 | h[17] << 16 | h[18] << 8 | h[19];
          a.height = h[20] << 24 | h[21] << 16 | h[22] << 8 | h[23];
          var d = h[26];
          a.hasAlpha = 4 === d || 6 === d;
        }
      }
      function t(a) {
        for (var h = 0, d = 0;d < a.length;d++) {
          h += a[d].length;
        }
        for (var h = new Uint8Array(h), l = 0, d = 0;d < a.length;d++) {
          var m = a[d];
          h.set(m, l);
          l += m.length;
        }
        return h;
      }
      var l = d.ArrayUtilities.Inflate;
      a.parseJpegChunks = v;
      a.parsePngHeaders = u;
      a.defineImage = function(a) {
        k.enterTimeline("defineImage");
        var h = {type:"image", id:a.id, mimeType:a.mimeType}, p = a.imgData;
        if ("image/jpeg" === a.mimeType) {
          var s = a.alphaData;
          if (s) {
            a = new d.JPEG.JpegImage;
            a.parse(t(v(h, p, [])));
            var p = h.width * h.height, s = l.inflate(s, p, !0), m = h.data = new Uint8ClampedArray(4 * p);
            a.copyToImageData(h);
            a = 0;
            for (var g = 3;a < p;a++, g += 4) {
              m[g] = s[a];
            }
            h.mimeType = "application/octet-stream";
            h.dataType = 3;
          } else {
            s = [], a.jpegTables && s.push(a.jpegTables), v(h, p, s), a.jpegTables && 0 < a.jpegTables.byteLength && (s[1] = s[1].subarray(2)), h.data = t(s), h.dataType = 4;
          }
        } else {
          u(h, p), h.data = p, h.dataType = 5;
        }
        k.leaveTimeline();
        return h;
      };
    })(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 k(b, a, e, f) {
        if (b) {
          if (a.fill0) {
            if (f = f[a.fill0 - 1], a.fill1 || a.line) {
              f.addSegment(b.toReversed());
            } else {
              b.isReversed = !0;
              return;
            }
          }
          a.line && a.fill1 && (f = e[a.line - 1], f.addSegment(b.clone()));
        }
      }
      function v(a, e, f, c) {
        f && (a.morph = u(a, e, c));
        if (e) {
          a.miterLimit = 2 * (a.miterLimitFactor || 1.5);
          if (!a.color && a.hasFill) {
            var g = v(a.fillStyle, !1, !1, c);
            a.type = g.type;
            a.transform = g.transform;
            a.colors = g.colors;
            a.ratios = g.ratios;
            a.focalPoint = g.focalPoint;
            a.bitmapId = g.bitmapId;
            a.bitmapIndex = g.bitmapIndex;
            a.repeat = g.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:
            g = a.records;
            e = a.colors = [];
            f = a.ratios = [];
            for (c = 0;c < g.length;c++) {
              var h = g[c];
              e.push(h.color);
              f.push(h.ratio);
            }
            g = 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 = c.length, c.push(a.bitmapId), g = .05;
        }
        if (!a.matrix) {
          return a.transform = b, a;
        }
        e = a.matrix;
        a.transform = {a:e.a * g, b:e.b * g, c:e.c * g, d:e.d * g, tx:e.tx / 20, ty:e.ty / 20};
        a.matrix = null;
        return a;
      }
      function u(a, e, f) {
        var c = Object.create(a);
        if (e) {
          return c.width = a.widthMorph, !a.color && a.hasFill ? (a = u(a.fillStyle, !1, f), c.transform = a.transform, c.colors = a.colors, c.ratios = a.ratios) : c.color = a.colorMorph, c;
        }
        if (void 0 === a.type) {
          return c;
        }
        if (0 === a.type) {
          return c.color = a.colorMorph, c;
        }
        var g;
        switch(a.type) {
          case 16:
          ;
          case 18:
          ;
          case 19:
            g = a.records;
            e = c.colors = [];
            f = c.ratios = [];
            for (var h = 0;h < g.length;h++) {
              var q = g[h];
              e.push(q.colorMorph);
              f.push(q.ratioMorph);
            }
            g = 819.2;
            break;
          case 64:
          ;
          case 65:
          ;
          case 66:
          ;
          case 67:
            g = .05;
        }
        if (!a.matrix) {
          return c.transform = b, c;
        }
        a = a.matrixMorph;
        c.transform = {a:a.a * g, b:a.b * g, c:a.c * g, d:a.d * g, tx:a.tx / 20, ty:a.ty / 20};
        return c;
      }
      function t(b, a, e, f) {
        for (var c = [], g = 0;g < b.length;g++) {
          var h = v(b[g], a, e, f);
          c[g] = a ? new q(null, h) : new q(h, null);
        }
        return c;
      }
      function l(b, a) {
        var e = b.noHscale ? b.noVscale ? 0 : 2 : b.noVscale ? 3 : 1, f = m(b.width, 0, 5100) | 0;
        a.lineStyle(f, 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 h(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 p = d.ArrayUtilities.DataBuffer, s = d.ShapeData, m = d.NumberUtilities.clamp, g = 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 = [], f = t(b.fillStyles, !1, !!b.recordsMorph, a), c = t(b.lineStyles, !0, !!b.recordsMorph, a), h = b.records, d = c, m = b.recordsMorph || null, c = null !== m, l = {fill0:0, fill1:0, line:0}, u = null, D, B, E = h.length - 1, y = 0, z = 0, G = 0, C = 0, I, P = 0, T = 0;P < E;P++) {
          var O = h[P], Q;
          c && (Q = m[T++]);
          if (0 === O.type) {
            u && k(u, l, d, f), O.hasNewStyles && (D || (D = []), g.apply(D, f), f = t(O.fillStyles, !1, c, a), g.apply(D, d), d = t(O.lineStyles, !0, c, a), B && (D.push(B), B = null), l = {fill0:0, fill1:0, line:0}), O.hasFillStyle0 && (l.fill0 = O.fillStyle0), O.hasFillStyle1 && (l.fill1 = O.fillStyle1), O.hasLineStyle && (l.line = O.lineStyle), l.fill1 ? I = f[l.fill1 - 1] : l.line ? I = d[l.line - 1] : l.fill0 && (I = f[l.fill0 - 1]), O.move && (y = O.moveX | 0, z = O.moveY | 0), I && (u = e.FromDefaults(c), 
            I.addSegment(u), c ? (0 === Q.type ? (G = Q.moveX | 0, C = Q.moveY | 0) : (G = y, C = z, T--), u.morphMoveTo(y, z, G, C)) : u.moveTo(y, z));
          } else {
            u || (B || (B = new q(null, v({color:{red:0, green:0, blue:0, alpha:0}, width:20}, !0, c, a))), u = e.FromDefaults(c), B.addSegment(u), c ? u.morphMoveTo(y, z, G, C) : u.moveTo(y, z));
            if (c) {
              for (;Q && 0 === Q.type;) {
                Q = m[T++];
              }
              Q || (Q = O);
            }
            if (!O.isStraight || c && !Q.isStraight) {
              var S, V, aa;
              O.isStraight ? (aa = O.deltaX | 0, O = O.deltaY | 0, S = y + (aa >> 1), V = z + (O >> 1), y += aa, z += O) : (S = y + O.controlDeltaX | 0, V = z + O.controlDeltaY | 0, y = S + O.anchorDeltaX | 0, z = V + O.anchorDeltaY | 0);
              if (c) {
                if (Q.isStraight) {
                  aa = Q.deltaX | 0, O = Q.deltaY | 0, $ = G + (aa >> 1), w = C + (O >> 1), G += aa, C += O;
                } else {
                  var $ = G + Q.controlDeltaX | 0, w = C + Q.controlDeltaY | 0, G = $ + Q.anchorDeltaX | 0, C = w + Q.anchorDeltaY | 0
                }
                u.morphCurveTo(S, V, y, z, $, w, G, C);
              } else {
                u.curveTo(S, V, y, z);
              }
            } else {
              y += O.deltaX | 0, z += O.deltaY | 0, c ? (G += Q.deltaX | 0, C += Q.deltaY | 0, u.morphLineTo(y, z, G, C)) : u.lineTo(y, z);
            }
          }
        }
        k(u, l, d, f);
        D ? g.apply(D, f) : D = f;
        g.apply(D, d);
        B && D.push(B);
        h = new s;
        c && (h.morphCoordinates = new Int32Array(h.coordinates.length), h.morphStyles = new p(16));
        for (P = 0;P < D.length;P++) {
          D[P].serialize(h);
        }
        return{type:b.isMorph ? "morphshape" : "shape", id:b.id, fillBounds:b.fillBounds, lineBounds:b.lineBounds, morphFillBounds:b.fillBoundsMorph || null, morphLineBounds:b.lineBoundsMorph || null, shape:h.toPlainObject(), transferables:h.buffers, require:a.length ? a : null};
      };
      var e = function() {
        function b(a, e, f, c, g, h) {
          this.commands = a;
          this.data = e;
          this.morphData = f;
          this.prev = c;
          this.next = g;
          this.isReversed = h;
          this.id = b._counter++;
        }
        b.FromDefaults = function(a) {
          var e = new p, f = new p;
          e.endian = f.endian = "auto";
          var c = null;
          a && (c = new p, c.endian = "auto");
          return new b(e, f, c, 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, f) {
          this.moveTo(b, a);
          this.morphData.write2Ints(e, f);
        };
        b.prototype.lineTo = function(b, a) {
          this.commands.writeUnsignedByte(10);
          this.data.write2Ints(b, a);
        };
        b.prototype.morphLineTo = function(b, a, e, f) {
          this.lineTo(b, a);
          this.morphData.write2Ints(e, f);
        };
        b.prototype.curveTo = function(b, a, e, f) {
          this.commands.writeUnsignedByte(11);
          this.data.write4Ints(b, a, e, f);
        };
        b.prototype.morphCurveTo = function(b, a, e, f, c, g, h, n) {
          this.curveTo(b, a, e, f);
          this.morphData.write4Ints(c, g, h, n);
        };
        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, f = this.data.length >> 2, c = this.morphData ? this.morphData.ints : null, g = this.data.ints, h = 0;
            g[0] === a.x && g[1] === a.y && h++;
            for (var n = this.commands.length, q = 2 * h;h < n;h++) {
              q = this._writeCommand(e[h], q, g, c, b);
            }
            a.x = g[f - 2];
            a.y = g[f - 1];
          }
        };
        b.prototype._serializeReversed = function(b, a) {
          var e = this.commands.length, f = (this.data.length >> 2) - 2, c = this.commands.bytes, g = this.data.ints, h = this.morphData ? this.morphData.ints : null;
          g[f] === a.x && g[f + 1] === a.y || this._writeCommand(9, f, g, h, b);
          if (1 !== e) {
            for (;1 < e--;) {
              var f = f - 2, n = c[e];
              b.writeCommandAndCoordinates(n, g[f], g[f + 1]);
              h && b.writeMorphCoordinates(h[f], h[f + 1]);
              11 === n && (f -= 2, b.writeCoordinates(g[f], g[f + 1]), h && b.writeMorphCoordinates(h[f], h[f + 1]));
            }
          }
          a.x = g[0];
          a.y = g[1];
        };
        b.prototype._writeCommand = function(b, a, e, f, c) {
          c.writeCommandAndCoordinates(b, e[a++], e[a++]);
          f && c.writeMorphCoordinates(f[a - 2], f[a - 1]);
          11 === b && (c.writeCoordinates(e[a++], e[a++]), f && c.writeMorphCoordinates(f[a - 2], f[a - 1]));
          return a;
        };
        b._counter = 0;
        return b;
      }(), q = 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, g = a = null, n = e.prev;e;) {
              for (;n;) {
                n.startConnectsTo(e) && n.flipDirection(), n.connectsTo(e) ? (n.next !== e && (this.removeSegment(n), this.insertSegment(n, e)), e = n, n = e.prev) : (n.startConnectsTo(f) && n.flipDirection(), f.connectsTo(n) ? (this.removeSegment(n), f.next = n, n = n.prev, f.next.prev = f, f.next.next = null, f = f.next) : n = n.prev);
              }
              n = e.prev;
              a ? (g.next = e, e.prev = g, g = f, g.next = null) : (a = e, g = f);
              if (!n) {
                break;
              }
              e = f = n;
              n = e.prev;
            }
            if (this.fillStyle) {
              switch(n = this.fillStyle, e = n.morph, n.type) {
                case 0:
                  b.beginFill(n.color);
                  e && b.writeMorphFill(e.color);
                  break;
                case 16:
                ;
                case 18:
                ;
                case 19:
                  h(2, n, b);
                  e && b.writeMorphGradient(e.colors, e.ratios, e.transform);
                  break;
                case 65:
                ;
                case 64:
                ;
                case 67:
                ;
                case 66:
                  b.beginBitmap(3, n.bitmapIndex, n.transform, n.repeat, n.smooth), e && b.writeMorphBitmap(e.transform);
              }
            } else {
              switch(n = this.lineStyle, e = n.morph, n.type) {
                case 0:
                  l(n, b);
                  e && c(e, b);
                  break;
                case 16:
                ;
                case 18:
                ;
                case 19:
                  l(n, b);
                  h(6, n, b);
                  e && (c(e, b), b.writeMorphGradient(e.colors, e.ratios, e.transform));
                  break;
                case 65:
                ;
                case 64:
                ;
                case 67:
                ;
                case 66:
                  l(n, b), b.beginBitmap(7, n.bitmapIndex, n.transform, n.repeat, n.smooth), e && (c(e, b), b.writeMorphBitmap(e.transform));
              }
            }
            e = {x:0, y:0};
            for (n = a;n;) {
              n.serialize(b, e), n = n.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, f, c, g) {
        var h = c >> 3, m = f * a * h, h = f * h, l = b.length + (b.length & 1), s = new ArrayBuffer(p.length + l), k = new Uint8Array(s);
        k.set(p);
        if (g) {
          g = 0;
          for (var r = p.length;g < b.length;g += 2, r += 2) {
            k[r] = b[g + 1], k[r + 1] = b[g];
          }
        } else {
          k.set(b, p.length);
        }
        b = new DataView(s);
        b.setUint32(4, l + 36, !0);
        b.setUint16(22, f, !0);
        b.setUint32(24, a, !0);
        b.setUint32(28, m, !0);
        b.setUint16(32, h, !0);
        b.setUint16(34, c, !0);
        b.setUint32(40, l, !0);
        return{data:k, mimeType:"audio/wav"};
      }
      function k(b, a, f) {
        function c(a) {
          for (;d < a;) {
            h = h << 8 | b[g++], d += 8;
          }
          d -= a;
          return h >>> d & (1 << a) - 1;
        }
        for (var g = 0, h = 0, d = 0, l = 0, p = c(2), r = s[p];l < a.length;) {
          var u = a[l++] = c(16) << 16 >> 16, t, v = c(6), B;
          1 < f && (t = a[l++] = c(16) << 16 >> 16, B = c(6));
          for (var E = 1 << p + 1, y = 0;4095 > y;y++) {
            for (var z = c(p + 2), G = m[v], C = 0, I = E >> 1;I;I >>= 1, G >>= 1) {
              z & I && (C += G);
            }
            u += (z & E ? -1 : 1) * (C + G);
            a[l++] = u = -32768 > u ? -32768 : 32767 < u ? 32767 : u;
            v += r[z & ~E];
            v = 0 > v ? 0 : 88 < v ? 88 : v;
            if (1 < f) {
              z = c(p + 2);
              G = m[B];
              C = 0;
              for (I = E >> 1;I;I >>= 1, G >>= 1) {
                z & I && (C += G);
              }
              t += (z & E ? -1 : 1) * (C + G);
              a[l++] = t = -32768 > t ? -32768 : 32767 < t ? 32767 : t;
              B += r[z & ~E];
              B = 0 > B ? 0 : 88 < B ? 88 : B;
            }
          }
        }
      }
      function u(b) {
        for (var a = new Float32Array(b.length), f = 0;f < a.length;f++) {
          a[f] = (b[f] - 128) / 128;
        }
        this.currentSample += a.length / this.channels;
        return{streamId:this.streamId, samplesCount:a.length / this.channels, pcm:a};
      }
      function t(b) {
        for (var a = new Float32Array(b.length / 2), f = 0, c = 0;f < a.length;f++, c += 2) {
          a[f] = (b[c] << 24 | b[c + 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), f = 0, c = 0;f < a.length;f++, c += 2) {
          a[f] = (b[c + 1] << 24 | b[c] << 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], f = b[3] << 8 | b[2];
        this.currentSample += a;
        return{streamId:this.streamId, samplesCount:a, data:new Uint8Array(b.subarray(4)), seek:f};
      }
      var h = [5512, 11250, 22500, 44100], p = 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, f = b.samplesCount, c = h[b.soundRate], g = b.soundData, l;
        switch(b.soundFormat) {
          case 0:
            l = new Float32Array(f * a);
            if (1 == b.soundSize) {
              for (var m = f = 0;f < l.length;f++, m += 2) {
                l[f] = (g[m] << 24 | g[m + 1] << 16) / 2147483648;
              }
              g = d(g, c, a, 16, !0);
            } else {
              for (f = 0;f < l.length;f++) {
                l[f] = (g[f] - 128) / 128;
              }
              g = d(g, c, a, 8, !1);
            }
            break;
          case 3:
            l = new Float32Array(f * a);
            if (1 == b.soundSize) {
              for (m = f = 0;f < l.length;f++, m += 2) {
                l[f] = (g[m + 1] << 24 | g[m] << 16) / 2147483648;
              }
              g = d(g, c, a, 16, !1);
            } else {
              for (f = 0;f < l.length;f++) {
                l[f] = (g[f] - 128) / 128;
              }
              g = d(g, c, a, 8, !1);
            }
            break;
          case 2:
            g = {data:new Uint8Array(g.subarray(2)), mimeType:"audio/mpeg"};
            break;
          case 1:
            m = new Int16Array(f * a);
            k(g, m, a);
            l = new Float32Array(f * a);
            for (f = 0;f < l.length;f++) {
              l[f] = m[f] / 32768;
            }
            g = d(new Uint8Array(m.buffer), c, a, 16, !(new Uint8Array((new Uint16Array([1])).buffer))[0]);
            break;
          default:
            throw Error("Unsupported audio format: " + b.soundFormat);;
        }
        b = {type:"sound", id:b.id, sampleRate:c, channels:a, pcm:l, packaged:null};
        g && (b.packaged = g);
        return b;
      };
      var s = [[-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], g = 0, f = function() {
        function b(b, a, f) {
          this.streamId = g++;
          this.samplesCount = b;
          this.sampleRate = a;
          this.channels = f;
          this.format = null;
          this.currentSample = 0;
        }
        b.FromTag = function(a) {
          var f = new b(a.samplesCount, h[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 ? t : l : u;
              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_715 = Shumway || (Shumway = {}), SWF$$inline_716 = Shumway$$inline_715.SWF || (Shumway$$inline_715.SWF = {}), Option$$inline_717 = Shumway$$inline_715.Options.Option;
SWF$$inline_716.parserOptions = Shumway$$inline_715.Settings.shumwayOptions.register(new Shumway$$inline_715.Options.OptionSet("Parser Options"));
SWF$$inline_716.traceLevel = SWF$$inline_716.parserOptions.register(new Option$$inline_717("parsertracelevel", "Parser Trace Level", "number", 0, "Parser Trace Level"));
(function(d) {
  (function(d) {
    function a(a, h) {
      for (var d = 0, l = [], m, g, 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 (g = 0;g < a[m];g++) {
          b = l.pop();
          for (b.children[b.index] = h[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 r(a, h, d, l, m, g, f, b, e) {
      function q() {
        if (0 < E) {
          return E--, B >> E & 1;
        }
        B = a[h++];
        if (255 == B) {
          var b = a[h++];
          if (b) {
            throw "unexpected marker: " + (B << 8 | b).toString(16);
          }
        }
        E = 7;
        return B >>> 7;
      }
      function n(b) {
        for (var a;null !== (a = q());) {
          b = b[a];
          if ("number" === typeof b) {
            return b;
          }
          if ("object" !== typeof b) {
            throw "invalid huffman sequence";
          }
        }
        return null;
      }
      function k(b) {
        for (var a = 0;0 < b;) {
          var e = q();
          if (null === e) {
            return;
          }
          a = a << 1 | e;
          b--;
        }
        return a;
      }
      function r(b) {
        if (1 === b) {
          return 1 === q() ? 1 : -1;
        }
        var a = k(b);
        return a >= 1 << b - 1 ? a : a + (-1 << b) + 1;
      }
      function u(b, a) {
        var e = n(b.huffmanTableDC), e = 0 === e ? 0 : r(e);
        b.blockData[a] = b.pred += e;
        for (e = 1;64 > e;) {
          var f = n(b.huffmanTableAC), c = f & 15, f = f >> 4;
          if (0 === c) {
            if (15 > f) {
              break;
            }
            e += 16;
          } else {
            e += f, b.blockData[a + t[e]] = r(c), e++;
          }
        }
      }
      function v(b, a) {
        var f = n(b.huffmanTableDC), f = 0 === f ? 0 : r(f) << e;
        b.blockData[a] = b.pred += f;
      }
      function K(b, a) {
        b.blockData[a] |= q() << e;
      }
      function F(b, a) {
        if (0 < y) {
          y--;
        } else {
          for (var c = g;c <= f;) {
            var h = n(b.huffmanTableAC), d = h & 15, h = h >> 4;
            if (0 === d) {
              if (15 > h) {
                y = k(h) + (1 << h) - 1;
                break;
              }
              c += 16;
            } else {
              c += h, b.blockData[a + t[c]] = r(d) * (1 << e), c++;
            }
          }
        }
      }
      function J(b, a) {
        for (var c = g, h = 0, d;c <= f;) {
          d = t[c];
          switch(z) {
            case 0:
              h = n(b.huffmanTableAC);
              d = h & 15;
              h >>= 4;
              if (0 === d) {
                15 > h ? (y = k(h) + (1 << h), z = 4) : (h = 16, z = 1);
              } else {
                if (1 !== d) {
                  throw "invalid ACn encoding";
                }
                G = r(d);
                z = h ? 2 : 3;
              }
              continue;
            case 1:
            ;
            case 2:
              b.blockData[a + d] ? b.blockData[a + d] += q() << e : (h--, 0 === h && (z = 2 == z ? 3 : 0));
              break;
            case 3:
              b.blockData[a + d] ? b.blockData[a + d] += q() << e : (b.blockData[a + d] = G << e, z = 0);
              break;
            case 4:
              b.blockData[a + d] && (b.blockData[a + d] += q() << e);
          }
          c++;
        }
        4 === z && (y--, 0 === y && (z = 0));
      }
      var M = d.mcusPerLine, D = h, B = 0, E = 0, y = 0, z = 0, G, C = l.length, I, P, T, O, Q;
      b = d.progressive ? 0 === g ? 0 === b ? v : K : 0 === b ? F : J : u;
      var S = 0;
      d = 1 == C ? l[0].blocksPerLine * l[0].blocksPerColumn : M * d.mcusPerColumn;
      m || (m = d);
      for (var V, aa;S < d;) {
        for (P = 0;P < C;P++) {
          l[P].pred = 0;
        }
        y = 0;
        if (1 == C) {
          for (I = l[0], Q = 0;Q < m;Q++) {
            b(I, 64 * ((I.blocksPerLine + 1) * (S / I.blocksPerLine | 0) + S % I.blocksPerLine)), S++;
          }
        } else {
          for (Q = 0;Q < m;Q++) {
            for (P = 0;P < C;P++) {
              for (I = l[P], V = I.h, aa = I.v, T = 0;T < aa;T++) {
                for (O = 0;O < V;O++) {
                  b(I, 64 * ((I.blocksPerLine + 1) * ((S / M | 0) * I.v + T) + (S % M * I.h + O)));
                }
              }
            }
            S++;
          }
        }
        E = 0;
        I = a[h] << 8 | a[h + 1];
        if (65280 >= I) {
          throw "marker was not found";
        }
        if (65488 <= I && 65495 >= I) {
          h += 2;
        } else {
          break;
        }
      }
      return h - D;
    }
    function v(a, h) {
      for (var d = h.blocksPerLine, l = h.blocksPerColumn, m = new Int32Array(64), g = 0;g < l;g++) {
        for (var f = 0;f < d;f++) {
          for (var b = h, e = 64 * ((h.blocksPerLine + 1) * g + f), q = m, n = b.quantizationTable, k = void 0, r = void 0, u = void 0, t = void 0, v = void 0, F = void 0, J = void 0, M = void 0, D = void 0, B = void 0, B = 0;64 > B;B++) {
            q[B] = b.blockData[e + B] * n[B];
          }
          for (B = 0;8 > B;++B) {
            n = 8 * B, 0 === q[1 + n] && 0 === q[2 + n] && 0 === q[3 + n] && 0 === q[4 + n] && 0 === q[5 + n] && 0 === q[6 + n] && 0 === q[7 + n] ? (D = 5793 * q[0 + n] + 512 >> 10, q[0 + n] = D, q[1 + n] = D, q[2 + n] = D, q[3 + n] = D, q[4 + n] = D, q[5 + n] = D, q[6 + n] = D, q[7 + n] = D) : (k = 5793 * q[0 + n] + 128 >> 8, r = 5793 * q[4 + n] + 128 >> 8, u = q[2 + n], t = q[6 + n], v = 2896 * (q[1 + n] - q[7 + n]) + 128 >> 8, M = 2896 * (q[1 + n] + q[7 + n]) + 128 >> 8, F = q[3 + n] << 4, J = 
            q[5 + n] << 4, D = k - r + 1 >> 1, k = k + r + 1 >> 1, r = D, D = 3784 * u + 1567 * t + 128 >> 8, u = 1567 * u - 3784 * t + 128 >> 8, t = D, D = v - J + 1 >> 1, v = v + J + 1 >> 1, J = D, D = M + F + 1 >> 1, F = M - F + 1 >> 1, M = D, D = k - t + 1 >> 1, k = k + t + 1 >> 1, t = D, D = r - u + 1 >> 1, r = r + u + 1 >> 1, u = D, D = 2276 * v + 3406 * M + 2048 >> 12, v = 3406 * v - 2276 * M + 2048 >> 12, M = D, D = 799 * F + 4017 * J + 2048 >> 12, F = 4017 * F - 799 * J + 2048 >> 12, J = 
            D, q[0 + n] = k + M, q[7 + n] = k - M, q[1 + n] = r + J, q[6 + n] = r - J, q[2 + n] = u + F, q[5 + n] = u - F, q[3 + n] = t + v, q[4 + n] = t - v);
          }
          for (B = 0;8 > B;++B) {
            n = B, 0 === q[8 + n] && 0 === q[16 + n] && 0 === q[24 + n] && 0 === q[32 + n] && 0 === q[40 + n] && 0 === q[48 + n] && 0 === q[56 + n] ? (D = 5793 * q[B + 0] + 8192 >> 14, q[0 + n] = D, q[8 + n] = D, q[16 + n] = D, q[24 + n] = D, q[32 + n] = D, q[40 + n] = D, q[48 + n] = D, q[56 + n] = D) : (k = 5793 * q[0 + n] + 2048 >> 12, r = 5793 * q[32 + n] + 2048 >> 12, u = q[16 + n], t = q[48 + n], v = 2896 * (q[8 + n] - q[56 + n]) + 2048 >> 12, M = 2896 * (q[8 + n] + q[56 + n]) + 2048 >> 12, 
            F = q[24 + n], J = q[40 + n], D = k - r + 1 >> 1, k = k + r + 1 >> 1, r = D, D = 3784 * u + 1567 * t + 2048 >> 12, u = 1567 * u - 3784 * t + 2048 >> 12, t = D, D = v - J + 1 >> 1, v = v + J + 1 >> 1, J = D, D = M + F + 1 >> 1, F = M - F + 1 >> 1, M = D, D = k - t + 1 >> 1, k = k + t + 1 >> 1, t = D, D = r - u + 1 >> 1, r = r + u + 1 >> 1, u = D, D = 2276 * v + 3406 * M + 2048 >> 12, v = 3406 * v - 2276 * M + 2048 >> 12, M = D, D = 799 * F + 4017 * J + 2048 >> 12, F = 4017 * F - 799 * 
            J + 2048 >> 12, J = D, q[0 + n] = k + M, q[56 + n] = k - M, q[8 + n] = r + J, q[48 + n] = r - J, q[16 + n] = u + F, q[40 + n] = u - F, q[24 + n] = t + v, q[32 + n] = t - v);
          }
          for (B = 0;64 > B;++B) {
            k = e + B, r = q[B], r = -2056 >= r ? 0 : 2024 <= r ? 255 : r + 2056 >> 4, b.blockData[k] = r;
          }
        }
      }
      return h.blockData;
    }
    function u(a) {
      return 0 >= a ? 0 : 255 <= a ? 255 : a;
    }
    var t = 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[g] << 8 | c[g + 1];
          g += 2;
          return b;
        }
        function l() {
          var b = d(), b = c.subarray(g, g + b - 2);
          g += 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), f = 0;f < b.components.length;f++) {
            B = b.components[f];
            var c = Math.ceil(Math.ceil(b.samplesPerLine / 8) * B.h / b.maxH), g = Math.ceil(Math.ceil(b.scanLines / 8) * B.v / b.maxV);
            B.blockData = new Int16Array(64 * e * B.v * (a * B.h + 1));
            B.blocksPerLine = c;
            B.blocksPerColumn = g;
          }
          b.mcusPerLine = a;
          b.mcusPerColumn = e;
        }
        var g = 0, f = null, b = null, e, q, n = [], k = [], u = [], A = d();
        if (65496 != A) {
          throw "SOI not found";
        }
        for (A = d();65497 != A;) {
          var H, K;
          switch(A) {
            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:
              H = l();
              65504 === A && 74 === H[0] && 70 === H[1] && 73 === H[2] && 70 === H[3] && 0 === H[4] && (f = {version:{major:H[5], minor:H[6]}, densityUnits:H[7], xDensity:H[8] << 8 | H[9], yDensity:H[10] << 8 | H[11], thumbWidth:H[12], thumbHeight:H[13], thumbData:H.subarray(14, 14 + 3 * H[12] * H[13])});
              65518 === A && 65 === H[0] && 100 === H[1] && 111 === H[2] && 98 === H[3] && 101 === H[4] && 0 === H[5] && (b = {version:H[6], flags0:H[7] << 8 | H[8], flags1:H[9] << 8 | H[10], transformCode:H[11]});
              break;
            case 65499:
              for (var A = d() + g - 2, F;g < A;) {
                var J = c[g++], M = new Int32Array(64);
                if (0 === J >> 4) {
                  for (H = 0;64 > H;H++) {
                    F = t[H], M[F] = c[g++];
                  }
                } else {
                  if (1 === J >> 4) {
                    for (H = 0;64 > H;H++) {
                      F = t[H], M[F] = d();
                    }
                  } else {
                    throw "DQT: invalid table spec";
                  }
                }
                n[J & 15] = M;
              }
              break;
            case 65472:
            ;
            case 65473:
            ;
            case 65474:
              if (e) {
                throw "Only single frame JPEGs supported";
              }
              d();
              e = {};
              e.extended = 65473 === A;
              e.progressive = 65474 === A;
              e.precision = c[g++];
              e.scanLines = d();
              e.samplesPerLine = d();
              e.components = [];
              e.componentIds = {};
              H = c[g++];
              for (A = M = J = 0;A < H;A++) {
                F = c[g];
                K = c[g + 1] >> 4;
                var D = c[g + 1] & 15;
                J < K && (J = K);
                M < D && (M = D);
                K = e.components.push({h:K, v:D, quantizationTable:n[c[g + 2]]});
                e.componentIds[F] = K - 1;
                g += 3;
              }
              e.maxH = J;
              e.maxV = M;
              m(e);
              break;
            case 65476:
              F = d();
              for (A = 2;A < F;) {
                J = c[g++];
                M = new Uint8Array(16);
                for (H = K = 0;16 > H;H++, g++) {
                  K += M[H] = c[g];
                }
                D = new Uint8Array(K);
                for (H = 0;H < K;H++, g++) {
                  D[H] = c[g];
                }
                A += 17 + K;
                (0 === J >> 4 ? u : k)[J & 15] = a(M, D);
              }
              break;
            case 65501:
              d();
              q = d();
              break;
            case 65498:
              d();
              F = c[g++];
              H = [];
              for (var B, A = 0;A < F;A++) {
                J = e.componentIds[c[g++]], B = e.components[J], J = c[g++], B.huffmanTableDC = u[J >> 4], B.huffmanTableAC = k[J & 15], H.push(B);
              }
              A = c[g++];
              F = c[g++];
              J = c[g++];
              A = r(c, g, e, H, q, A, F, J >> 4, J & 15);
              g += A;
              break;
            default:
              if (255 == c[g - 3] && 192 <= c[g - 2] && 254 >= c[g - 2]) {
                g -= 3;
                break;
              }
              throw "unknown JPEG marker " + A.toString(16);;
          }
          A = d();
        }
        this.width = e.samplesPerLine;
        this.height = e.scanLines;
        this.jfif = f;
        this.adobe = b;
        this.components = [];
        for (A = 0;A < e.components.length;A++) {
          B = e.components[A], this.components.push({output:v(e, B), scaleX:B.h / e.maxH, scaleY:B.v / e.maxV, blocksPerLine:B.blocksPerLine, blocksPerColumn:B.blocksPerColumn});
        }
        this.numComponents = this.components.length;
      };
      c.prototype._getLinearizedBlockData = function(a, c) {
        var d = this.width / a, l = this.height / c, g, f, b, e, q, n, k = 0, r, u = this.components.length, t = a * c * u, v = new Uint8Array(t), F = new Uint32Array(a);
        for (n = 0;n < u;n++) {
          g = this.components[n];
          f = g.scaleX * d;
          b = g.scaleY * l;
          k = n;
          r = g.output;
          e = g.blocksPerLine + 1 << 3;
          for (q = 0;q < a;q++) {
            g = 0 | q * f, F[q] = (g & 4294967288) << 3 | g & 7;
          }
          for (f = 0;f < c;f++) {
            for (g = 0 | f * b, g = e * (g & 4294967288) | (g & 7) << 3, q = 0;q < a;q++) {
              v[k] = r[g + F[q]], k += u;
            }
          }
        }
        if (l = this.decodeTransform) {
          for (n = 0;n < t;) {
            for (d = g = 0;g < u;g++, n++, d += 2) {
              v[n] = (v[n] * l[d] >> 8) + l[d + 1];
            }
          }
        }
        return v;
      };
      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, l, g = 0, f = a.length;g < f;g += 3) {
          c = a[g], d = a[g + 1], l = a[g + 2], a[g] = u(c - 179.456 + 1.402 * l), a[g + 1] = u(c + 135.459 - .344 * d - .714 * l), a[g + 2] = u(c - 226.816 + 1.772 * d);
        }
        return a;
      };
      c.prototype._convertYcckToRgb = function(a) {
        for (var c, d, l, g, f, b, e, q, n, k, r, t, v, K, F = 0, J = 0, M = a.length;J < M;J += 4) {
          c = a[J];
          d = a[J + 1];
          l = a[J + 2];
          g = a[J + 3];
          f = d * d;
          b = d * l;
          e = d * c;
          q = d * g;
          n = l * l;
          k = l * g;
          r = l * c;
          t = c * c;
          v = c * g;
          K = g * g;
          var D = -122.67195406894 - 6.60635669420364E-5 * f + 4.37130475926232E-4 * b - 5.4080610064599E-5 * e + 4.8449797120281E-4 * q - .154362151871126 * d - 9.57964378445773E-4 * n + 8.17076911346625E-4 * r - .00477271405408747 * k + 1.53380253221734 * l + 9.61250184130688E-4 * t - .00266257332283933 * v + .48357088451265 * c - 3.36197177618394E-4 * K + .484791561490776 * g, B = 107.268039397724 + 2.19927104525741E-5 * f - 6.40992018297945E-4 * b + 6.59397001245577E-4 * e + 4.26105652938837E-4 * 
          q - .176491792462875 * d - 7.78269941513683E-4 * n + .00130872261408275 * r + 7.70482631801132E-4 * k - .151051492775562 * l + .00126935368114843 * t - .00265090189010898 * v + .25802910206845 * c - 3.18913117588328E-4 * K - .213742400323665 * g;
          c = -20.810012546947 - 5.70115196973677E-4 * f - 2.63409051004589E-5 * b + .0020741088115012 * e - .00288260236853442 * q + .814272968359295 * d - 1.53496057440975E-5 * n - 1.32689043961446E-4 * r + 5.60833691242812E-4 * k - .195152027534049 * l + .00174418132927582 * t - .00255243321439347 * v + .116935020465145 * c - 3.43531996510555E-4 * K + .24165260232407 * g;
          a[F++] = u(D);
          a[F++] = u(B);
          a[F++] = u(c);
        }
        return a;
      };
      c.prototype._convertYcckToCmyk = function(a) {
        for (var c, d, l, g = 0, f = a.length;g < f;g += 4) {
          c = a[g], d = a[g + 1], l = a[g + 2], a[g] = u(434.456 - c - 1.402 * l), a[g + 1] = u(119.541 - c + .344 * d + .714 * l), a[g + 2] = u(481.816 - c - 1.772 * d);
        }
        return a;
      };
      c.prototype._convertCmykToRgb = function(a) {
        for (var c, d, l, g, f = 0, b = 1 / 255 / 255, e = 0, q = a.length;e < q;e += 4) {
          c = a[e];
          d = a[e + 1];
          l = a[e + 2];
          g = a[e + 3];
          var n = c * (-4.387332384609988 * c + 54.48615194189176 * d + 18.82290502165302 * l + 212.25662451639585 * g - 72734.4411664936) + d * (1.7149763477362134 * d - 5.6096736904047315 * l - 17.873870861415444 * g - 1401.7366389350734) + l * (-2.5217340131683033 * l - 21.248923337353073 * g + 4465.541406466231) - g * (21.86122147463605 * g + 48317.86113160301), k = c * (8.841041422036149 * c + 60.118027045597366 * d + 6.871425592049007 * l + 31.159100130055922 * g - 20220.756542821975) + d * 
          (-15.310361306967817 * d + 17.575251261109482 * l + 131.35250912493976 * g - 48691.05921601825) + l * (4.444339102852739 * l + 9.8632861493405 * g - 6341.191035517494) - g * (20.737325471181034 * g + 47890.15695978492);
          c = c * (.8842522430003296 * c + 8.078677503112928 * d + 30.89978309703729 * l - .23883238689178934 * g - 3616.812083916688) + d * (10.49593273432072 * d + 63.02378494754052 * l + 50.606957656360734 * g - 28620.90484698408) + l * (.03296041114873217 * l + 115.60384449646641 * g - 49363.43385999684) - g * (22.33816807309886 * g + 45932.16563550634);
          a[f++] = 0 <= n ? 255 : -16581375 >= n ? 0 : 255 + n * b | 0;
          a[f++] = 0 <= k ? 255 : -16581375 >= k ? 0 : 255 + k * 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, l = c * d * 4;
        a = a.data;
        var c = this.getData(c, d, !0), g = d = 0, f, b, e, q;
        switch(this.components.length) {
          case 1:
            for (;g < l;) {
              f = c[d++], a[g++] = f, a[g++] = f, a[g++] = f, a[g++] = 255;
            }
            break;
          case 3:
            for (;g < l;) {
              e = c[d++], q = c[d++], f = c[d++], a[g++] = e, a[g++] = q, a[g++] = f, a[g++] = 255;
            }
            break;
          case 4:
            for (;g < l;) {
              e = c[d++], q = c[d++], f = c[d++], b = c[d++], e = 255 - u(e * (1 - b / 255) + b), q = 255 - u(q * (1 - b / 255) + b), f = 255 - u(f * (1 - b / 255) + b), a[g++] = e, a[g++] = q, a[g++] = f, a[g++] = 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 r(a) {
      if (this.pos + a > this.end) {
        throw d.StreamNoDataError;
      }
    }
    function v() {
      return this.end - this.pos;
    }
    function u(a, h) {
      var d = new l(this.bytes);
      d.pos = a;
      d.end = h;
      return d;
    }
    function t(a) {
      var h = this.bytes, d = this.end + a.length;
      if (d > h.length) {
        throw "stream buffer overfow";
      }
      h.set(a, this.end);
      this.end = d;
    }
    d.StreamNoDataError = {};
    var l = function() {
      return function(c, h, d, l) {
        void 0 === h && (h = 0);
        c.buffer instanceof ArrayBuffer && (h += c.byteOffset, c = c.buffer);
        void 0 === d && (d = c.byteLength - h);
        void 0 === l && (l = d);
        var m = new Uint8Array(c, h, l);
        c = new DataView(c, h, l);
        c.bytes = m;
        c.pos = 0;
        c.end = d;
        c.bitBuffer = 0;
        c.bitLength = 0;
        c.align = a;
        c.ensure = r;
        c.remaining = v;
        c.substream = u;
        c.push = t;
        return c;
      };
    }();
    d.Stream = l;
  })(d.SWF || (d.SWF = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    function a() {
      r || (r = new Worker(k.MP3WORKER_PATH), r.addEventListener("message", function(a) {
        "console" === a.data.action && console[a.data.method].call(console, a.data.message);
      }));
      return r;
    }
    k.MP3WORKER_PATH = "../../lib/mp3/mp3worker.js";
    var r = null, v = 0, u = function() {
      function k() {
        this._sessionId = v++;
        this._onworkermessageBound = this.onworkermessage.bind(this);
        this._worker = a();
        this._worker.addEventListener("message", this._onworkermessageBound, !1);
        this._worker.postMessage({sessionId:this._sessionId, action:"create"});
      }
      k.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);
              }
            ;
          }
        }
      };
      k.prototype.pushAsync = function(a) {
        this._worker.postMessage({sessionId:this._sessionId, action:"decode", data:a});
      };
      k.prototype.close = function() {
        this._worker.postMessage({sessionId:this._sessionId, action:"close"});
      };
      k.processAll = function(a) {
        var c = 8E3, h = new Float32Array(c), p = 0, s = [], m = !1, g = new d.PromiseWrapper, f = new k;
        f.onframedata = function(b, a, f, g) {
          a = b.length + p;
          if (a > c) {
            do {
              c *= 2;
            } while (a > c);
            a = new Float32Array(c);
            a.set(h);
            h = a;
          }
          h.set(b, p);
          p += b.length;
        };
        f.onid3tag = function(b) {
          s.push(b);
        };
        f.onclosed = function() {
          m || g.resolve({data:h.subarray(0, p), id3Tags:s});
        };
        f.onerror = function(b) {
          m || (m = !0, g.reject(b));
        };
        f.pushAsync(a);
        f.close();
        return g.promise;
      };
      return k;
    }();
    k.MP3DecoderSession = u;
  })(d.SWF || (d.SWF = {}));
})(Shumway || (Shumway = {}));
__extends = this.__extends || function(d, k) {
  function a() {
    this.constructor = d;
  }
  for (var r in k) {
    k.hasOwnProperty(r) && (d[r] = k[r]);
  }
  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 r(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 v = d.SWF.Parser, u = k.Stream, t = d.ArrayUtilities.Inflate, l = d.ArrayUtilities.LzmaDecoder, c = v.SwfTag, h = v.DefinitionTags, p = v.ImageDefinitionTags, s = v.FontDefinitionTags, m = v.ControlTags, g = function() {
      function g(b, a) {
        this.isCompressed = !1;
        this.swfVersion = 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);
      }
      g.prototype.appendLoadedData = function(b) {
        this.bytesLoaded += b.length;
        this._endTagEncountered || (this.isCompressed ? this._decompressor.push(b) : this.processDecompressedData(b), this.scanLoadedData());
      };
      g.prototype.finishLoading = function() {
        this.isCompressed && (this._decompressor.close(), this._decompressor = null, this.scanLoadedData());
      };
      g.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;
      };
      g.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 = b.byteOffset + b.byteLength;
        (0,v.LowLevel.tagHandlers[b.tagCode])(this.data, this._dataStream, a, this.swfVersion, b.tagCode, e);
        this._dataStream.pos < e && (this._dataStream.pos = e);
        b = r(a, this.dictionary);
        k.leaveTimeline();
        return b;
      };
      g.prototype.readHeaderAndInitialize = function(b) {
        k.enterTimeline("Initialize SWFFile");
        var a = 67 === b[0], e = 90 === b[0];
        this.isCompressed = a || e;
        this.swfVersion = b[3];
        this._loadStarted = Date.now();
        this._uncompressedLength = b[4] | b[5] << 8 | b[6] << 16 | b[7] << 24;
        this.bytesLoaded = b.length;
        this.data = new Uint8Array(this._uncompressedLength);
        this._dataStream = new u(this.data.buffer);
        this._dataStream.pos = 8;
        this._dataView = this._dataStream;
        a ? (this.data.set(b.subarray(0, 8)), this._uncompressedLoadedLength = 8, this._decompressor = t.create(!0), this._decompressor.onData = this.processFirstBatchOfDecompressedData.bind(this), 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.push(b)) : (this.data.set(b), this._uncompressedLoadedLength = 
        b.length, this._decompressor = null, this.parseHeaderContents());
        k.leaveTimeline();
        this._lastScanPosition = this._dataStream.pos;
        this.scanLoadedData();
      };
      g.prototype.parseHeaderContents = function() {
        var b = v.LowLevel.readHeader(this.data, this._dataStream);
        this.bounds = b.bounds;
        this.frameRate = b.frameRate;
        this.frameCount = b.frameCount;
      };
      g.prototype.processFirstBatchOfDecompressedData = function(b) {
        this.data.set(b, this._uncompressedLoadedLength);
        this._uncompressedLoadedLength += b.length;
        this.parseHeaderContents();
        this._decompressor.onData = this.processDecompressedData.bind(this);
      };
      g.prototype.processDecompressedData = function(b) {
        this.data.set(b, this._uncompressedLoadedLength);
        this._uncompressedLoadedLength += b.length;
      };
      g.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();
      };
      g.prototype.scanTagsToOffset = function(b, a) {
        for (var e = new q(0, 0, 0), f;(f = 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 c = e.byteOffset + e.byteLength;
          if (c > b) {
            this._dataStream.pos = f;
            break;
          }
          this.scanTag(e, a);
          this._dataStream.pos < c && this.emitTagSlopWarning(e, c);
        }
      };
      g.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;
      };
      g.prototype.scanTag = function(a, f) {
        var g = this._dataStream, n = g.pos, d = a.tagCode, q = a.byteLength;
        if (39 === d) {
          this.addLazySymbol(d, n, q), n += q, g.pos += 4, this.scanTagsToOffset(n, !1), this._dataStream.pos < l && (this.emitTagSlopWarning(a, l), g.pos = n);
        } else {
          if (p[d]) {
            g = this.addLazySymbol(d, n, q), this.decodeEmbeddedImage(g);
          } else {
            if (s[d]) {
              g = this.addLazySymbol(d, n, q), this.registerEmbeddedFont(g);
            } else {
              if (h[d]) {
                this.addLazySymbol(d, n, q), this.jumpToNextTag(q);
              } else {
                if (f || 76 === d || 56 === d) {
                  if (m[d]) {
                    this.addControlTag(d, n, q);
                  } else {
                    switch(d) {
                      case 69:
                        this.setFileAttributes(q);
                        break;
                      case 86:
                        this.setSceneAndFrameLabelData(q);
                        break;
                      case 9:
                        this.backgroundColor = v.LowLevel.rgb(this.data, this._dataStream);
                        break;
                      case 8:
                        this._jpegTables || (this._jpegTables = 0 === q ? new Uint8Array(0) : this.data.subarray(g.pos, g.pos + q - 2));
                        this.jumpToNextTag(q);
                        break;
                      case 82:
                      ;
                      case 72:
                        if (this.useAVM1) {
                          this.jumpToNextTag(q);
                        } else {
                          var l = n + q, n = new b;
                          82 === d ? (n.flags = v.readUi32(this.data, g), n.name = v.readString(this.data, g, 0)) : (n.flags = 0, n.name = "");
                          n.data = this.data.subarray(g.pos, l);
                          this.abcBlocks.push(n);
                          g.pos = l;
                        }
                        break;
                      case 76:
                        l = n + q;
                        for (q = v.readUi16(this.data, g);q--;) {
                          n = v.readUi16(this.data, g), d = v.readString(this.data, g, 0), this.symbolClassesMap[n] = d, this.symbolClassesList.push({id:n, className:d});
                        }
                        g.pos = l;
                        break;
                      case 59:
                        this.useAVM1 && (l = this._currentInitActionBlocks || (this._currentInitActionBlocks = []), g = this._dataView.getUint16(g.pos, !0), l.push({spriteId:g, actionsData:this.data.subarray(n + 2, n + q)}));
                        this.jumpToNextTag(q);
                        break;
                      case 12:
                        this.useAVM1 && (this._currentActionBlocks || (this._currentActionBlocks = [])).push(this.data.subarray(g.pos, g.pos + q));
                        this.jumpToNextTag(q);
                        break;
                      case 18:
                      ;
                      case 45:
                        g = v.LowLevel.soundStreamHead(this.data, this._dataStream);
                        this._currentSoundStreamHead = v.SoundStream.FromTag(g);
                        break;
                      case 19:
                        this._currentSoundStreamBlock = this.data.subarray(g.pos, g.pos += q);
                        break;
                      case 43:
                        l = g.pos + q;
                        this._currentFrameLabel = v.readString(this.data, g, 0);
                        g.pos = l;
                        break;
                      case 1:
                        this.finishFrame();
                        break;
                      case 0:
                        break;
                      case 56:
                        l = g.pos + q;
                        q = v.readUi16(this.data, g);
                        for (d = this._currentExports || (this._currentExports = []);q--;) {
                          var n = v.readUi16(this.data, g), k = v.readString(this.data, g, 0);
                          if (g.pos > l) {
                            g.pos = l;
                            break;
                          }
                          d.push(new e(n, k));
                        }
                        g.pos = l;
                        break;
                      case 23:
                      ;
                      case 17:
                      ;
                      case 13:
                      ;
                      case 62:
                      ;
                      case 78:
                      ;
                      case 57:
                      ;
                      case 71:
                        this.jumpToNextTag(q);
                        break;
                      case 74:
                      ;
                      case 73:
                      ;
                      case 65:
                      ;
                      case 66:
                        this.jumpToNextTag(q);
                        break;
                      case 58:
                      ;
                      case 64:
                      ;
                      case 63:
                      ;
                      case 88:
                      ;
                      case 41:
                      ;
                      case 77:
                      ;
                      case 24:
                        this.jumpToNextTag(q);
                        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) " + d + ": " + c[d]);
                        this.jumpToNextTag(q);
                        break;
                      default:
                        this.jumpToNextTag(q);
                    }
                  }
                } else {
                  this.jumpToNextTag(q);
                }
              }
            }
          }
        }
      };
      g.prototype.parseSpriteTimeline = function(b) {
        k.enterTimeline("parseSpriteTimeline");
        var a = this.data, e = this._dataStream, c = this._dataView, g = {id:b.id, type:"sprite", frames:[]}, h = b.byteOffset + b.byteLength, n = g.frames, d = null, l = [], m = null, p = null, s = null, r = null;
        e.pos = b.byteOffset + 2;
        g.frameCount = c.getUint16(e.pos, !0);
        e.pos += 2;
        for (b = new q(0, 0, 0);e.pos < h;) {
          this.parseNextTagHeader(b);
          var u = b.byteLength, x = b.tagCode;
          if (e.pos + u > h) {
            break;
          }
          if (v.ControlTags[x]) {
            l.push(new q(x, e.pos, u));
          } else {
            switch(x) {
              case 12:
                this.useAVM1 && (s || (s = []), s.push(a.subarray(e.pos, e.pos + u)));
                break;
              case 59:
                this.useAVM1 && (r || (r = []), x = c.getUint16(e.pos, !0), e.pos += 2, r.push({spriteId:x, actionsData:a.subarray(e.pos, e.pos + u)}));
                break;
              case 43:
                u = e.pos + u;
                d = v.readString(a, e, 0);
                e.pos = u;
                u = 0;
                break;
              case 1:
                n.push(new f(l, d, m, p, s, r, null));
                d = null;
                l = [];
                r = s = p = m = null;
                break;
              case 0:
                e.pos = h, u = 0;
            }
          }
          e.pos += u;
        }
        k.leaveTimeline();
        return g;
      };
      g.prototype.jumpToNextTag = function(b) {
        this._dataStream.pos += b;
      };
      g.prototype.emitTagSlopWarning = function(b, a) {
        this._dataStream.pos = a;
      };
      g.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;
      };
      g.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;
      };
      g.prototype.setSceneAndFrameLabelData = function(b) {
        this.sceneAndFrameLabelData && this.jumpToNextTag(b);
        this.sceneAndFrameLabelData = v.LowLevel.defineScene(this.data, this._dataStream, null);
      };
      g.prototype.addControlTag = function(b, a, e) {
        (this._currentControlTags || (this._currentControlTags = [])).push(new q(b, a, e));
        this.jumpToNextTag(e);
      };
      g.prototype.addLazySymbol = function(b, a, e) {
        var f = this._dataStream.getUint16(this._dataStream.pos, !0);
        b = new n(f, b, a, e);
        return this.dictionary[f] = b;
      };
      g.prototype.decodeEmbeddedFont = function(b) {
        var e = this.getParsedTag(b);
        b = new x(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)});
      };
      g.prototype.registerEmbeddedFont = function(b) {
        if (inFirefox) {
          var e = this._dataStream, f = e.getUint16(e.pos, !0), c, g;
          10 === b.tagCode ? (g = "__autofont__" + b.byteOffset, c = "regular") : (c = this.data[e.pos + 2], c = a(!!(c & 2), !!(c & 1)), g = this.data[e.pos + 4], e.pos += 5, g = v.readString(this.data, e, g));
          this.fonts.push({name:g, id:f, style:c});
          e.pos = b.byteOffset + b.byteLength;
        } else {
          this.decodeEmbeddedFont(b);
        }
      };
      g.prototype.decodeEmbeddedImage = function(b) {
        var a = this.getParsedTag(b);
        b = new x(a.id, b, "image", a);
        this.eagerlyParsedSymbolsMap[b.id] = b;
        this.eagerlyParsedSymbolsList.push(b);
      };
      return g;
    }();
    k.SWFFile = g;
    var f = function() {
      return function(b, a, e, f, c, g, h) {
        this.controlTags = b;
        this.labelName = a;
        this.soundStreamHead = e;
        this.soundStreamBlock = f;
        this.actionBlocks = c;
        this.initActionBlocks = g;
        this.exports = h;
      };
    }();
    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 q = function() {
      return function(b, a, e) {
        this.tagCode = b;
        this.byteOffset = a;
        this.byteLength = e;
      };
    }();
    k.UnparsedTag = q;
    var n = function(b) {
      function a(e, f, c, g) {
        b.call(this, f, c, g);
        this.id = e;
      }
      __extends(a, b);
      return a;
    }(q);
    k.DictionaryEntry = n;
    var x = function(b) {
      function a(e, f, c, g) {
        b.call(this, e, f.tagCode, f.byteOffset, f.byteLength);
        this.type = c;
        this.definition = g;
        this.ready = !1;
      }
      __extends(a, b);
      return a;
    }(n);
    k.EagerlyParsedDictionaryEntry = x;
  })(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, k) {
      this.type = 4;
      this.bytesLoaded = a.length;
      a.length === k ? this.data = a : (this.data = new Uint8Array(k), 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 r = function() {
    function r(a) {
      this._file = null;
      this._listener = a;
      this._delayedUpdatesPromise = this._loadingServiceSession = null;
      this._bytesLoaded = 0;
    }
    r.prototype.loadFile = function(a) {
      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);
    };
    r.prototype.abortLoad = function() {
    };
    r.prototype.loadBytes = function(a) {
      this.processNewData(a, {bytesLoaded:a.length, bytesTotal:a.length});
      this.processLoadClose();
    };
    r.prototype.processLoadOpen = function() {
    };
    r.prototype.processNewData = function(r, l) {
      this._bytesLoaded += r.length;
      if (8192 > this._bytesLoaded && this._bytesLoaded < l.bytesTotal) {
        this._queuedInitialData || (this._queuedInitialData = new Uint8Array(Math.min(8192, l.bytesTotal))), this._queuedInitialData.set(r, this._bytesLoaded - r.length);
      } else {
        if (this._queuedInitialData) {
          var c = new Uint8Array(this._bytesLoaded);
          c.set(this._queuedInitialData);
          c.set(r, this._bytesLoaded - r.length);
          r = c;
          this._queuedInitialData = null;
        }
        var h = this._file, p = c = 0;
        if (h) {
          h instanceof k && (c = h.eagerlyParsedSymbolsList.length, p = h.framesLoaded), h.appendLoadedData(r);
        } else {
          var h = r, s = l.bytesTotal, m = h[0] << 16 | h[1] << 8 | h[2], h = 22355 === (m & 65535) ? new k(h, s) : 16767231 === m || 8998990 === m || 4671814 === m ? new d.ImageFile(h, s) : null;
          h = this._file = h;
          this._listener.onLoadOpen(h);
        }
        if (h instanceof k) {
          this.processSWFFileUpdate(h, c, p);
        } else {
          if (this._listener.onLoadProgress(new a(l.bytesLoaded, -1)), l.bytesLoaded === l.bytesTotal) {
            this._listener.onImageBytesLoaded();
          }
        }
      }
    };
    r.prototype.processError = function(a) {
    };
    r.prototype.processLoadClose = function() {
      var a = this._file;
      if (a instanceof k) {
        var d = a.eagerlyParsedSymbolsList.length, c = a.framesLoaded;
        a.finishLoading();
        this.processSWFFileUpdate(a, d, c);
      }
    };
    r.prototype.processSWFFileUpdate = function(d, l, c) {
      var h;
      if (l = d.eagerlyParsedSymbolsList.length - l) {
        h = this._listener.onNewEagerlyParsedSymbols(d.eagerlyParsedSymbolsList, l);
        this._delayedUpdatesPromise && (h = Promise.all([this._delayedUpdatesPromise, h]));
        this._delayedUpdatesPromise = h;
        this._lastDelayedUpdate = s = new a(d.bytesLoaded, d.frames.length);
        d.pendingUpdateDelays++;
        var p = this;
        d.framesLoaded = c;
        h.then(function() {
          d.pendingUpdateDelays--;
          d.framesLoaded = s.framesLoaded;
          p._listener.onLoadProgress(s);
          p._delayedUpdatesPromise === h && (p._delayedUpdatesPromise = null, p._lastDelayedUpdate = null);
        });
      } else {
        var s = this._lastDelayedUpdate;
        if (s) {
          s.bytesLoaded = d.bytesLoaded, s.framesLoaded = d.frames.length;
        } else {
          this._listener.onLoadProgress(new a(d.bytesLoaded, d.framesLoaded));
        }
      }
    };
    return r;
  }();
  d.FileLoader = r;
  var v;
  (function(a) {
    a[a.SWF = 22355] = "SWF";
    a[a.JPG = 16767231] = "JPG";
    a[a.PNG = 8998990] = "PNG";
    a[a.GIF = 4671814] = "GIF";
  })(v || (v = {}));
})(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 g = 0;g < a.length;g++) {
      c[a[g]] = !0;
    }
    return c;
  }
  var a = /^<([-A-Za-z0-9_]+)((?:\s+[-A-Za-z0-9_]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/, r = /^<\/([-A-Za-z0-9_]+)[^>]*>/, v = /([-A-Za-z0-9_]+)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g, u = k("area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed"), t = 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"), h = k("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected"), p = k("script,style");
  d.HTMLParser = function(d, m) {
    function g() {
      return this[this.length - 1];
    }
    function f(a, e, f, d) {
      e = e.toLowerCase();
      if (t[e]) {
        for (;g() && l[g()];) {
          b("", g());
        }
      }
      c[e] && g() == e && b("", e);
      (d = u[e] || !!d) || n.push(e);
      if (m.start) {
        var q = Object.create(null);
        f.replace(v, function(b, a, e, f, c) {
          a = a.toLowerCase();
          q[a] = e ? e : f ? f : c ? c : h[a] ? a : "";
          return b;
        });
        m.start && m.start(e, q, !!d);
      }
    }
    function b(b, a) {
      if (a) {
        for (e = n.length - 1;0 <= e && n[e] != a;e--) {
        }
      } else {
        var e = 0
      }
      if (0 <= e) {
        for (var f = n.length - 1;f >= e;f--) {
          m.end && m.end(n[f]);
        }
        n.length = e;
      }
    }
    for (var e, q, n = [], k = d;d;) {
      q = !0;
      if (g() && p[g()]) {
        d = d.replace(new RegExp("(.*)</" + g() + "[^>]*>"), function(b, a) {
          a = a.replace(/\x3c!--(.*?)--\x3e/g, "$1").replace(/<!\[CDATA\[(.*?)]]\x3e/g, "$1");
          m.chars && m.chars(a);
          return "";
        }), b("", g());
      } 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), q = !1);
        } else {
          if (0 == d.indexOf("</")) {
            if (e = d.match(r)) {
              d = d.substring(e[0].length), e[0].replace(r, b), q = !1;
            }
          } else {
            0 == d.indexOf("<") && (e = d.match(a)) && (d = d.substring(e[0].length), e[0].replace(a, f), q = !1);
          }
        }
        q && (e = d.indexOf("<"), q = 0 > e ? d : d.substring(0, e), d = 0 > e ? "" : d.substring(e), m.chars && m.chars(q));
      }
      if (d == k) {
        throw "Parse Error: " + d;
      }
      k = d;
    }
    b();
  };
})(Shumway || (Shumway = {}));
(function(d) {
  var k = d.Debug.notImplemented, a = d.Debug.somewhatImplemented, r = d.Bounds, v = d.ArrayUtilities.DataBuffer, u = d.ColorUtilities, t = d.AVM2.AS.flash;
  (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 l = {lt:"<", gt:">", amp:"&", quot:'"', apos:"'", nbsp:"\u00a0"}, c = function() {
    function c(a) {
      this._id = t.display.DisplayObject.getNextSyncID();
      this._bounds = new r(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 t.text.TextFormat;
      this.textRuns = [];
      this.textRunData = new v;
      this.coords = this.matrix = null;
    }
    c.prototype.parseHtml = function(c, h, m) {
      var g = "", f = this.textRuns, b = f.length = 0, e = 0, q = this.defaultTextFormat.clone(), n = null, r = [], v;
      d.HTMLParser(c, v = {chars:function(a) {
        for (var c = "", h = 0;h < a.length;h++) {
          var m = a.charAt(h);
          if ("&" !== m) {
            c += m;
          } else {
            if (m = d.StringUtilities.indexOfAny(a, ["&", ";"], h + 1), 0 < m) {
              h = a.substring(h + 1, m);
              if (1 < h.length && "#" === h.charAt(0)) {
                var p = 0, p = 2 < h.length && "x" === h.charAt(1) ? parseInt(h.substring(1)) : parseInt(h.substring(2), 16), c = c + String.fromCharCode(p)
              } else {
                void 0 !== l[h] ? c += l[h] : d.Debug.unexpected(h);
              }
              h = m;
            } else {
              for (var s in l) {
                if (a.indexOf(s, h + 1) === h + 1) {
                  c += l[s];
                  h += s.length;
                  break;
                }
              }
            }
          }
        }
        a = c;
        g += a;
        e += a.length;
        e - b && (n && n.textFormat.equals(q) ? n.endIndex = e : (n = new t.text.TextRun(b, e, q), f.push(n)), b = e);
      }, start:function(b, e) {
        var f = !1;
        h && (f = h.hasStyle(b)) && (r.push(q), q = q.clone(), h.applyStyle(q, b));
        switch(b) {
          case "a":
            r.push(q);
            a("<a/>");
            var c = e.target || q.target, n = e.url || q.url;
            if (c !== q.target || n !== q.url) {
              f || (q = q.clone()), q.target = c, q.url = n;
            }
            break;
          case "b":
            r.push(q);
            q.bold || (f || (q = q.clone()), q.bold = !0);
            break;
          case "font":
            r.push(q);
            var c = u.isValidHexColor(e.color) ? u.hexToRGB(e.color) : q.color, n = e.face || q.font, d = isNaN(e.size) ? q.size : +e.size;
            if (c !== q.color || n !== q.font || d !== q.size) {
              f || (q = q.clone()), q.color = c, q.font = n, q.size = d;
            }
            break;
          case "img":
            k("<img/>");
            break;
          case "i":
            r.push(q);
            q.italic || (f || (q = q.clone()), q.italic = !0);
            break;
          case "li":
            if (r.push(q), q.bullet || (f || (q = q.clone()), q.bullet = !0), "\r" === g[g.length - 1]) {
              break;
            }
          ;
          case "br":
            m && v.chars("\r");
            break;
          case "span":
          ;
          case "p":
            c = !1;
            r.push(q);
            h && e.class && (n = "." + e.class, c = h.hasStyle(n)) && (f || (q = q.clone()), h.applyStyle(q, n));
            if ("span" === b) {
              break;
            }
            n = e.align;
            -1 < t.text.TextFormatAlign.toNumber(n) && n !== q.align && (f || c || (q = q.clone()), q.align = n);
            break;
          case "textformat":
            r.push(q);
            var c = isNaN(e.blockindent) ? q.blockIndent : +e.blockindent, n = isNaN(e.indent) ? q.indent : +e.indent, d = isNaN(e.leading) ? q.leading : +e.leading, l = isNaN(e.leftmargin) ? q.leftMargin : +e.leftmargin, p = isNaN(e.rightmargin) ? q.rightMargin : +e.rightmargin;
            if (c !== q.blockIndent || n !== q.indent || d !== q.leading || l !== q.leftMargin || p !== q.rightMargin) {
              f || (q = q.clone()), q.blockIndent = c, q.indent = n, q.leading = d, q.leftMargin = l, q.rightMargin = p;
            }
            break;
          case "u":
            r.push(q), q.underline || (f || (q = q.clone()), q.underline = !0);
        }
      }, end:function(b) {
        switch(b) {
          case "li":
          ;
          case "p":
            m && v.chars("\r");
          case "a":
          ;
          case "b":
          ;
          case "font":
          ;
          case "i":
          ;
          case "textformat":
          ;
          case "u":
            q = r.pop(), h && h.hasStyle(b) && (q = r.pop());
        }
      }});
      this._plainText = g;
      this._serializeTextRuns();
    };
    Object.defineProperty(c.prototype, "plainText", {get:function() {
      return this._plainText;
    }, set:function(a) {
      this._plainText = a;
      this.textRuns.length = 0;
      a && (a = new t.text.TextRun(0, a.length, this.defaultTextFormat), this.textRuns[0] = a);
      this._serializeTextRuns();
    }, enumerable:!0, configurable:!0});
    Object.defineProperty(c.prototype, "bounds", {get:function() {
      return this._bounds;
    }, set:function(a) {
      this._bounds.copyFrom(a);
      this.flags |= 1;
    }, enumerable:!0, configurable:!0});
    Object.defineProperty(c.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(c.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(c.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(c.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(c.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(c.prototype, "borderColor", {get:function() {
      return this._borderColor;
    }, set:function(a) {
      a !== this._borderColor && (this._borderColor = a, this.flags |= 4);
    }, enumerable:!0, configurable:!0});
    c.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;
    };
    c.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 g = t.text.Font.getByNameAndStyle(a.font, a.style) || t.text.Font.getDefaultFont();
      g.fontType === t.text.FontType.EMBEDDED ? c.writeUTF("swffont" + g._id) : c.writeUTF(g._fontFamily);
      c.writeInt(g.ascent * h);
      c.writeInt(g.descent * h);
      c.writeInt(null === a.leading ? g.leading * h : +a.leading);
      var f = h = !1;
      g.fontType === t.text.FontType.DEVICE && (h = null === a.bold ? g.fontStyle === t.text.FontStyle.BOLD || g.fontType === t.text.FontStyle.BOLD_ITALIC : !!a.bold, f = null === a.italic ? g.fontStyle === t.text.FontStyle.ITALIC || g.fontType === t.text.FontStyle.BOLD_ITALIC : !!a.italic);
      c.writeBoolean(h);
      c.writeBoolean(f);
      c.writeInt(+a.color);
      c.writeInt(t.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);
    };
    c.prototype.appendText = function(a, c) {
      c || (c = this.defaultTextFormat);
      var h = this._plainText, g = new t.text.TextRun(h.length, h.length + a.length, c);
      this._plainText = h + a;
      this.textRuns.push(g);
      this._writeTextRun(g);
    };
    c.prototype.prependText = function(a, c) {
      c || (c = this.defaultTextFormat);
      this._plainText = a + this._plainText;
      for (var h = this.textRuns, g = a.length, f = 0;f < h.length;f++) {
        var b = h[f];
        b.beginIndex += g;
        b.endIndex += g;
      }
      h.unshift(new t.text.TextRun(0, g, c));
      this._serializeTextRuns();
    };
    c.prototype.replaceText = function(a, c, h, g) {
      if (!(c < a) && h) {
        if (0 === c) {
          this.prependText(h, g);
        } else {
          var f = this._plainText;
          if (a >= f.length) {
            this.appendText(h, g);
          } else {
            var b = this.defaultTextFormat, e = b;
            g && (e = e.clone(), e.merge(g));
            if (0 >= a && c >= f.length) {
              g ? (this.defaultTextFormat = e, this.plainText = h, this.defaultTextFormat = b) : this.plainText = h;
            } else {
              for (var b = this.textRuns, d = [], n = a + h.length, l = n - c, k = 0;k < b.length;k++) {
                var r = b[k];
                if (a < r.endIndex) {
                  if (a <= r.beginIndex && n >= r.endIndex) {
                    continue;
                  }
                  var u = r.containsIndex(a), v = r.containsIndex(c);
                  if (u && v) {
                    if (g) {
                      u = r.clone();
                      u.endIndex = a;
                      d.push(u);
                      k--;
                      r.beginIndex = a + 1;
                      continue;
                    }
                  } else {
                    u ? r.endIndex = a : v ? g ? (d.push(new t.text.TextRun(a, n, e)), r.beginIndex = n) : (r.beginIndex = a, r.endIndex += l) : (r.beginIndex += l, r.endIndex += l);
                  }
                }
                d.push(r);
              }
              this._plainText = f.substring(0, a) + h + f.substring(c);
              this.textRuns = d;
              this._serializeTextRuns();
            }
          }
        }
      }
    };
    return c;
  }();
  d.TextContent = c;
})(Shumway || (Shumway = {}));
var Shumway$$inline_763 = Shumway || (Shumway = {}), AVM2$$inline_764 = Shumway$$inline_763.AVM2 || (Shumway$$inline_763.AVM2 = {}), AS$$inline_765 = AVM2$$inline_764.AS || (AVM2$$inline_764.AS = {});
AS$$inline_765.flashOptions = Shumway$$inline_763.Settings.shumwayOptions.register(new Shumway$$inline_763.Options.OptionSet("Flash Options"));
AS$$inline_765.traceEventsOption = AS$$inline_765.flashOptions.register(new Shumway$$inline_763.Options.Option("te", "Trace Events", "boolean", !1, "Trace dispatching of events."));
AS$$inline_765.traceLoaderOption = AS$$inline_765.flashOptions.register(new Shumway$$inline_763.Options.Option("tp", "Trace Loader", "boolean", !1, "Trace loader execution."));
AS$$inline_765.disableAudioOption = AS$$inline_765.flashOptions.register(new Shumway$$inline_763.Options.Option("da", "Disable Audio", "boolean", !1, "Disables audio."));
AS$$inline_765.webAudioOption = AS$$inline_765.flashOptions.register(new Shumway$$inline_763.Options.Option(null, "Use WebAudio for Sound", "boolean", !1, "Enables WebAudio API for MovieClip sound stream. (MP3 format is an exception)"));
AS$$inline_765.webAudioMP3Option = AS$$inline_765.flashOptions.register(new Shumway$$inline_763.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_765.mediaSourceOption = AS$$inline_765.flashOptions.register(new Shumway$$inline_763.Options.Option(null, "Use Media Source for Video", "boolean", !1, "Enables Media Source Extension API for NetStream."));
AS$$inline_765.mediaSourceMP3Option = AS$$inline_765.flashOptions.register(new Shumway$$inline_763.Options.Option(null, "Use Media Source for MP3", "boolean", !0, "Enables Media Source Extension API for MP3 streams."));
__extends = this.__extends || function(d, k) {
  function a() {
    this.constructor = d;
  }
  for (var r in k) {
    k.hasOwnProperty(r) && (d[r] = k[r]);
  }
  a.prototype = k.prototype;
  d.prototype = new a;
};
(function(d) {
  (function(k) {
    var a = d.Debug.warning, r = d.Bounds, v = d.AVM2.AS.flash, u = function() {
      function l(c, h) {
        this.data = c;
        if (c.className) {
          var l = d.AVM2.Runtime.AVM2.instance.applicationDomain;
          try {
            this.symbolClass = l.getClass(c.className);
          } catch (s) {
            a("Symbol " + c.id + " bound to non-existing class " + c.className), this.symbolClass = h;
          }
        } else {
          this.symbolClass = h;
        }
        this.isAVM1Object = !1;
      }
      Object.defineProperty(l.prototype, "id", {get:function() {
        return this.data.id;
      }, enumerable:!0, configurable:!0});
      return l;
    }();
    k.Symbol = u;
    var t = function(a) {
      function c(c, d, s) {
        a.call(this, c, d);
        this.dynamic = s;
      }
      __extends(c, a);
      c.prototype._setBoundsFromData = function(a) {
        this.fillBounds = a.fillBounds ? r.FromUntyped(a.fillBounds) : null;
        this.lineBounds = a.lineBounds ? r.FromUntyped(a.lineBounds) : null;
        !this.lineBounds && this.fillBounds && (this.lineBounds = this.fillBounds.clone());
      };
      return c;
    }(u);
    k.DisplaySymbol = t;
    u = function(a) {
      function c(c) {
        a.call(this, c, v.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;
    }(u);
    k.BinarySymbol = u;
    k.SoundStart = function() {
      return function(a, c) {
        this.soundId = a;
        this.soundInfo = c;
      };
    }();
  })(d.Timeline || (d.Timeline = {}));
})(Shumway || (Shumway = {}));
var 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, k) {
      if (this.onmessage) {
        if (d && k || !this.buffer) {
          this.onmessage({timestamp:this.lastTimestamp, streamId:this.lastStreamId, chunkedStreamId:this.id, typeId:this.lastTypeId, data:a, firstChunk:d, lastChunk:k});
        } 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, k) {
            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 k = 2 * this.buffer.length;d > k;) {
          k *= 2;
        }
        524288 < k && this._fail("Buffer overflow");
        k = new Uint8Array(k);
        k.set(this.buffer);
        this.buffer = k;
      }
      for (var k = 0, l = this.bufferLength;k < a.length;k++, l++) {
        this.buffer[l] = a[k];
      }
      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 (k = 8;1536 > k;k++) {
              this.buffer[k] !== this.randomData[k] && this._fail("Random data do not match @" + k);
            }
            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 k = new Uint8Array(2 + d.length);
      k[0] = a >> 8 & 255;
      k[1] = a & 255;
      k.set(d, 2);
      this._sendMessage(2, {typeId:4, streamId:0, data:k});
    };
    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 k = d.data, l = k.length, c = this._getChunkStream(a), h = ("timestamp" in d ? d.timestamp : Date.now() - this.epochStart) | 0, p = h - c.sentTimestamp | 0, s = new Uint8Array(this.chunkSize + 18), m;
      64 > a ? (m = 1, s[0] = a) : 320 > a ? (m = 2, s[0] = 0, s[1] = a - 64) : (m = 3, s[0] = 1, s[1] = a - 64 >> 8 & 255, s[2] = a - 64 & 255);
      var g = m, f = 0;
      d.streamId !== c.sentStreamId || 0 > p ? (0 !== (h & 4278190080) ? (f = h, s[g] = s[g + 1] = s[g + 2] = 255) : (s[g] = h >> 16 & 255, s[g + 1] = h >> 8 & 255, s[g + 2] = h & 255), g += 3, s[g++] = l >> 16 & 255, s[g++] = l >> 8 & 255, s[g++] = l & 255, s[g++] = d.typeId, s[g++] = d.streamId & 255, s[g++] = d.streamId >> 8 & 255, s[g++] = d.streamId >> 16 & 255, s[g++] = d.streamId >> 24 & 255) : l !== c.sentLength || d.typeId !== c.sentTypeId ? (s[0] |= 64, 0 !== (p & 4278190080) ? (f = p, 
      s[g] = s[g + 1] = s[g + 2] = 255) : (s[g] = p >> 16 & 255, s[g + 1] = p >> 8 & 255, s[g + 2] = p & 255), g += 3, s[g++] = l >> 16 & 255, s[g++] = l >> 8 & 255, s[g++] = l & 255, s[g++] = d.typeId) : 0 !== p ? (s[0] |= 128, 0 !== (p & 4278190080) ? (f = p, s[g] = s[g + 1] = s[g + 2] = 255) : (s[g] = p >> 16 & 255, s[g + 1] = p >> 8 & 255, s[g + 2] = p & 255), g += 3) : s[0] |= 192;
      f && (s[g++] = f >>> 24 & 255, s[g++] = f >>> 16 & 255, s[g++] = f >>> 8 & 255, s[g++] = f & 255);
      c.sentTimestamp = h;
      c.sentStreamId = d.streamId;
      c.sentTypeId = d.typeId;
      c.sentLength = l;
      for (c = 0;c < l;) {
        p = Math.min(l - c, this.chunkSize), s.set(k.subarray(c, c + p), g), c += p, this.ondata(s.subarray(0, g + p)), s[0] |= 192, g = m;
      }
      return h;
    };
    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, k = this.buffer[0] & 63;
        if (0 === k) {
          if (2 > this.bufferLength) {
            return;
          }
          k = this.buffer[1] + 64;
          d = 2;
        } else {
          if (1 === k) {
            if (2 > this.bufferLength) {
              return;
            }
            k = (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, h = d + l + c;
          if (!(this.bufferLength < h)) {
            var k = this._getChunkStream(k), p;
            p = 3 === a ? k.lastTimestamp : this.buffer[d] << 16 | this.buffer[d + 1] << 8 | this.buffer[d + 2];
            c && (p = d + l, p = this.buffer[p] << 24 | this.buffer[p + 1] << 16 | this.buffer[p + 2] << 8 | this.buffer[p + 3]);
            if (1 === a || 2 === a) {
              p = k.lastTimestamp + p | 0;
            }
            var l = k.lastLength, c = k.lastTypeId, s = k.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 && (s = this.buffer[d + 10] << 24 | this.buffer[d + 9] << 16 | this.buffer[d + 8] << 8 | this.buffer[d + 7]);
            var m;
            3 === a && k.waitingForBytes ? (m = !1, a = Math.min(k.waitingForBytes, this.peerChunkSize), d = k.waitingForBytes - a) : (m = !0, a = Math.min(l, this.peerChunkSize), d = l - a);
            if (!(this.bufferLength < h + a)) {
              return k.lastTimestamp = p, k.lastLength = l, k.lastTypeId = c, k.lastStreamId = s, k.lastMessageComplete = !d, k.waitingForBytes = d, k._push(this.buffer.subarray(h, h + a), m, !d), h + 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, t) {
      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(t || 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 g = new r(c, d);
                  c._streams[d] = g;
                  c.onstreamcreated({transactionId:l, commandObject:m, streamId:d, stream:g, 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 h = this.channel, p = new k.utils.ByteArray;
      p.objectEncoding = 0;
      p.writeObject(a);
      p.writeObject(d);
      p.writeObject(l);
      p.writeObject(c);
      h.send(3, {streamId:0, typeId:20, data:new Uint8Array(p._buffer, 0, p.length)});
    };
    a.prototype.createStream = function(a) {
      this.sendCommandOrResponse("createStream", a, null);
    };
    a.prototype.sendCommandOrResponse = function(a, d, l, c) {
      var h = this.channel, p = new k.utils.ByteArray;
      p.writeByte(0);
      p.objectEncoding = 0;
      p.writeObject(a);
      p.writeObject(d);
      p.writeObject(l || null);
      3 < arguments.length && p.writeObject(c);
      h.send(3, {streamId:0, typeId:17, data:new Uint8Array(p._buffer, 0, p.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 r = function() {
    function a(d, k) {
      this.transport = d;
      this.streamId = k;
    }
    a.prototype.play = function(a, d, l, c) {
      var h = new k.utils.ByteArray;
      h.objectEncoding = 0;
      h.writeObject("play");
      h.writeObject(0);
      h.writeObject(null);
      h.writeObject(a);
      1 < arguments.length && h.writeObject(d);
      2 < arguments.length && h.writeObject(l);
      3 < arguments.length && h.writeObject(c);
      this.transport._sendCommand(this.streamId, new Uint8Array(h._buffer, 0, h.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 k = a.substring(0, d).toLocaleLowerCase();
    if ("rtmp" !== k && "rtmpt" !== k && "rtmps" !== k && "rtmpe" !== k && "rtmpte" !== k && "rtmfp" !== k) {
      return null;
    }
    var l, c, h = d + 1;
    if ("/" === a[d + 2]) {
      h = a.indexOf("/", d + 3);
      if (0 > h) {
        return;
      }
      var p = a.indexOf(":", d + 1);
      0 <= p && p < h ? (l = a.substring(d + 3, p), c = +a.substring(p + 1, h)) : l = a.substring(d + 3, h);
    }
    return{protocol:k, host:l, port:c, app:a.substring(h + 1)};
  };
})(RtmpJs || (RtmpJs = {}));
(function(d) {
  (function(k) {
    function a(a, d, c) {
      d || (d = u);
      var h = window.createRtmpXHR, p = h ? h() : new XMLHttpRequest({mozSystem:!0});
      p.open("POST", a, !0);
      p.responseType = "arraybuffer";
      p.setRequestHeader("Content-Type", "application/x-fcs");
      p.onload = function(a) {
        c(new Uint8Array(p.response), p.status);
      };
      p.onerror = function(a) {
        console.log("error");
        throw Error("HTTP error");
      };
      p.send(d);
    }
    var r = navigator.mozTCPSocket, v = function(a) {
      function d(c) {
        a.call(this);
        "string" === typeof c && (c = {host:c});
        this.host = c.host || "localhost";
        this.port = c.port || 1935;
        this.ssl = !!c.ssl || !1;
      }
      __extends(d, a);
      d.prototype.connect = function(a, d) {
        function l(a) {
          return b.send(a.buffer, a.byteOffset, a.byteLength);
        }
        if (!r) {
          throw Error("Your browser does not support socket communication.\nCurrenly only Firefox with enabled mozTCPSocket is allowed (see README.md).");
        }
        var s = this._initChannel(a, d), m = [], g = !1, f = window.createRtmpSocket, b = f ? f({host:this.host, port:this.port, ssl:this.ssl}) : r.open(this.host, this.port, {useSecureTransport:this.ssl, binaryType:"arraybuffer"});
        b.onopen = function(a) {
          s.ondata = function(b) {
            b = new Uint8Array(b);
            m.push(b);
            1 < m.length || l(b) && m.shift();
          };
          s.onclose = function() {
            b.close();
          };
          s.start();
        };
        b.ondrain = function(b) {
          for (m.shift();0 < m.length && l(m[0]);) {
            m.shift();
          }
        };
        b.onclose = function(b) {
          s.stop(g);
        };
        b.onerror = function(b) {
          g = !0;
          console.error("socket error: " + b.data);
        };
        b.ondata = function(b) {
          s.push(new Uint8Array(b.data));
        };
      };
      return d;
    }(d.BaseTransport);
    k.RtmpTransport = v;
    v = function(d) {
      function l(a) {
        d.call(this);
        var h = (a.ssl ? "https" : "http") + "://" + (a.host || "localhost");
        a.port && (h += ":" + a.port);
        this.baseUrl = h;
        this.stopped = !1;
        this.sessionId = null;
        this.requestId = 0;
        this.data = [];
      }
      __extends(l, d);
      l.prototype.connect = function(c, d) {
        var l = this._initChannel(c, d);
        l.ondata = function(a) {
          this.data.push(new Uint8Array(a));
        }.bind(this);
        l.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, f) {
            this.sessionId = String.fromCharCode.apply(null, a).slice(0, -1);
            console.log("session id: " + this.sessionId);
            this.tick();
            l.start();
          }.bind(this));
        }.bind(this));
      };
      l.prototype.tick = function() {
        var c = function(a, c) {
          if (200 !== c) {
            throw Error("Invalid HTTP status");
          }
          var f = a[0];
          1 < a.length && this.channel.push(a.subarray(1));
          setTimeout(this.tick.bind(this), 16 * f);
        }.bind(this);
        if (this.stopped) {
          a(this.baseUrl + "/close/2", null, function() {
          });
        } else {
          if (0 < this.data.length) {
            var d, l = 0;
            this.data.forEach(function(a) {
              l += a.length;
            });
            var s = 0;
            d = new Uint8Array(l);
            this.data.forEach(function(a) {
              d.set(a, s);
              s += a.length;
            });
            this.data.length = 0;
            a(this.baseUrl + "/send/" + this.sessionId + "/" + this.requestId++, d, c);
          } else {
            a(this.baseUrl + "/idle/" + this.sessionId + "/" + this.requestId++, null, c);
          }
        }
      };
      return l;
    }(d.BaseTransport);
    k.RtmptTransport = v;
    var u = new Uint8Array([0]);
  })(d.Browser || (d.Browser = {}));
})(RtmpJs || (RtmpJs = {}));
(function(d) {
  (function(d) {
    (function(a) {
      function d(a) {
        for (var f = [], b = 1;b < arguments.length;b++) {
          f[b - 1] = arguments[b];
        }
        return Array.prototype.concat.apply(a, f);
      }
      function k(a, f, b) {
        a[f] = b >> 24 & 255;
        a[f + 1] = b >> 16 & 255;
        a[f + 2] = b >> 8 & 255;
        a[f + 3] = b & 255;
      }
      function u(a) {
        return a.charCodeAt(0) << 24 | a.charCodeAt(1) << 16 | a.charCodeAt(2) << 8 | a.charCodeAt(3);
      }
      var t = Shumway.StringUtilities.utf8decode, l = [1, 0, 0, 0, 1, 0, 0, 0, 1], c = [0, 0, 0], h = function() {
        function a(f, b) {
          this.boxtype = f;
          "uuid" === f && (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, u(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 = h;
      var p = function(a) {
        function f(b, e, f) {
          void 0 === e && (e = 0);
          void 0 === f && (f = 0);
          a.call(this, b);
          this.version = e;
          this.flags = f;
        }
        __extends(f, a);
        f.prototype.layout = function(b) {
          return this.size = a.prototype.layout.call(this, b) + 4;
        };
        f.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 f;
      }(h);
      a.FullBox = p;
      var s = function(a) {
        function f(b, e, f) {
          a.call(this, "ftype");
          this.majorBrand = b;
          this.minorVersion = e;
          this.compatibleBrands = f;
        }
        __extends(f, a);
        f.prototype.layout = function(b) {
          return this.size = a.prototype.layout.call(this, b) + 4 * (2 + this.compatibleBrands.length);
        };
        f.prototype.write = function(b) {
          var e = this, f = a.prototype.write.call(this, b);
          k(b, this.offset + f, u(this.majorBrand));
          k(b, this.offset + f + 4, this.minorVersion);
          f += 8;
          this.compatibleBrands.forEach(function(a) {
            k(b, e.offset + f, u(a));
            f += 4;
          }, this);
          return f;
        };
        return f;
      }(h);
      a.FileTypeBox = s;
      s = function(a) {
        function f(b, e) {
          a.call(this, b);
          this.children = e;
        }
        __extends(f, a);
        f.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;
        };
        f.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 f;
      }(h);
      a.BoxContainerBox = s;
      var m = function(a) {
        function f(b, e, f, c) {
          a.call(this, "moov", d([b], e, [f, c]));
          this.header = b;
          this.tracks = e;
          this.extendsBox = f;
          this.userData = c;
        }
        __extends(f, a);
        return f;
      }(s);
      a.MovieBox = m;
      m = function(a) {
        function f(b, e, f, c, d, h, m, p) {
          void 0 === c && (c = 1);
          void 0 === d && (d = 1);
          void 0 === h && (h = l);
          void 0 === m && (m = -20828448E5);
          void 0 === p && (p = -20828448E5);
          a.call(this, "mvhd", 0, 0);
          this.timescale = b;
          this.duration = e;
          this.nextTrackId = f;
          this.rate = c;
          this.volume = d;
          this.matrix = h;
          this.creationTime = m;
          this.modificationTime = p;
        }
        __extends(f, a);
        f.prototype.layout = function(b) {
          return this.size = a.prototype.layout.call(this, b) + 16 + 4 + 2 + 2 + 8 + 36 + 24 + 4;
        };
        f.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 f;
      }(p);
      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 f(b, e, f, c, d, h, m, p, s, k, r) {
          void 0 === m && (m = 0);
          void 0 === p && (p = 0);
          void 0 === s && (s = l);
          void 0 === k && (k = -20828448E5);
          void 0 === r && (r = -20828448E5);
          a.call(this, "tkhd", 0, b);
          this.trackId = e;
          this.duration = f;
          this.width = c;
          this.height = d;
          this.volume = h;
          this.alternateGroup = m;
          this.layer = p;
          this.matrix = s;
          this.creationTime = k;
          this.modificationTime = r;
        }
        __extends(f, a);
        f.prototype.layout = function(b) {
          return this.size = a.prototype.layout.call(this, b) + 20 + 8 + 6 + 2 + 36 + 8;
        };
        f.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 f;
      }(p);
      a.TrackHeaderBox = m;
      m = function(a) {
        function f(b, e, f, c, d) {
          void 0 === f && (f = "unk");
          void 0 === c && (c = -20828448E5);
          void 0 === d && (d = -20828448E5);
          a.call(this, "mdhd", 0, 0);
          this.timescale = b;
          this.duration = e;
          this.language = f;
          this.creationTime = c;
          this.modificationTime = d;
        }
        __extends(f, a);
        f.prototype.layout = function(b) {
          return this.size = a.prototype.layout.call(this, b) + 16 + 4;
        };
        f.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 f = this.language;
          k(b, this.offset + e + 16, ((f.charCodeAt(0) & 31) << 10 | (f.charCodeAt(1) & 31) << 5 | f.charCodeAt(2) & 31) << 16);
          return e + 20;
        };
        return f;
      }(p);
      a.MediaHeaderBox = m;
      m = function(a) {
        function f(b, e) {
          a.call(this, "hdlr", 0, 0);
          this.handlerType = b;
          this.name = e;
          this._encodedName = t(this.name);
        }
        __extends(f, a);
        f.prototype.layout = function(b) {
          return this.size = a.prototype.layout.call(this, b) + 8 + 12 + (this._encodedName.length + 1);
        };
        f.prototype.write = function(b) {
          var e = a.prototype.write.call(this, b);
          k(b, this.offset + e, 0);
          k(b, this.offset + e + 4, u(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 f;
      }(p);
      a.HandlerBox = m;
      m = function(a) {
        function f(b) {
          void 0 === b && (b = 0);
          a.call(this, "smhd", 0, 0);
          this.balance = b;
        }
        __extends(f, a);
        f.prototype.layout = function(b) {
          return this.size = a.prototype.layout.call(this, b) + 4;
        };
        f.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 f;
      }(p);
      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;
      }(p);
      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 = t(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;
      }(p);
      a.DataEntryUrlBox = m;
      m = function(a) {
        function f(b) {
          a.call(this, "dref", 0, 0);
          this.entries = b;
        }
        __extends(f, a);
        f.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;
        };
        f.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 f;
      }(p);
      a.DataReferenceBox = m;
      m = function(a) {
        function f(b) {
          a.call(this, "dinf", [b]);
          this.dataReference = b;
        }
        __extends(f, a);
        return f;
      }(s);
      a.DataInformationBox = m;
      m = function(a) {
        function f(b) {
          a.call(this, "stsd", 0, 0);
          this.entries = b;
        }
        __extends(f, a);
        f.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;
        };
        f.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 f;
      }(p);
      a.SampleDescriptionBox = m;
      m = function(a) {
        function f(b, e, f, c, d) {
          a.call(this, "stbl", [b, e, f, c, d]);
          this.sampleDescriptions = b;
          this.timeToSample = e;
          this.sampleToChunk = f;
          this.sampleSizes = c;
          this.chunkOffset = d;
        }
        __extends(f, a);
        return f;
      }(s);
      a.SampleTableBox = m;
      m = function(a) {
        function f(b, e, f) {
          a.call(this, "minf", [b, e, f]);
          this.header = b;
          this.info = e;
          this.sampleTable = f;
        }
        __extends(f, a);
        return f;
      }(s);
      a.MediaInformationBox = m;
      m = function(a) {
        function f(b, e, f) {
          a.call(this, "mdia", [b, e, f]);
          this.header = b;
          this.handler = e;
          this.info = f;
        }
        __extends(f, a);
        return f;
      }(s);
      a.MediaBox = m;
      m = function(a) {
        function f(b, e) {
          a.call(this, "trak", [b, e]);
          this.header = b;
          this.media = e;
        }
        __extends(f, a);
        return f;
      }(s);
      a.TrackBox = m;
      m = function(a) {
        function f(b, e, f, c, d) {
          a.call(this, "trex", 0, 0);
          this.trackId = b;
          this.defaultSampleDescriptionIndex = e;
          this.defaultSampleDuration = f;
          this.defaultSampleSize = c;
          this.defaultSampleFlags = d;
        }
        __extends(f, a);
        f.prototype.layout = function(b) {
          return this.size = a.prototype.layout.call(this, b) + 20;
        };
        f.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 f;
      }(p);
      a.TrackExtendsBox = m;
      m = function(a) {
        function f(b, e, f) {
          a.call(this, "mvex", d([b], e, [f]));
          this.header = b;
          this.tracDefaults = e;
          this.levels = f;
        }
        __extends(f, a);
        return f;
      }(s);
      a.MovieExtendsBox = m;
      m = function(a) {
        function f(b, e) {
          a.call(this, "meta", 0, 0);
          this.handler = b;
          this.otherBoxes = e;
        }
        __extends(f, a);
        f.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;
        };
        f.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 f;
      }(p);
      a.MetaBox = m;
      m = function(a) {
        function f(b) {
          a.call(this, "mfhd", 0, 0);
          this.sequenceNumber = b;
        }
        __extends(f, a);
        f.prototype.layout = function(b) {
          return this.size = a.prototype.layout.call(this, b) + 4;
        };
        f.prototype.write = function(b) {
          var e = a.prototype.write.call(this, b);
          k(b, this.offset + e, this.sequenceNumber);
          return e + 4;
        };
        return f;
      }(p);
      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 f(b, e, f, c, d, h, l) {
          a.call(this, "tfhd", 0, b);
          this.trackId = e;
          this.baseDataOffset = f;
          this.sampleDescriptionIndex = c;
          this.defaultSampleDuration = d;
          this.defaultSampleSize = h;
          this.defaultSampleFlags = l;
        }
        __extends(f, a);
        f.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;
        };
        f.prototype.write = function(b) {
          var e = a.prototype.write.call(this, b), f = this.flags;
          k(b, this.offset + e, this.trackId);
          e += 4;
          f & 1 && (k(b, this.offset + e, 0), k(b, this.offset + e + 4, this.baseDataOffset), e += 8);
          f & 2 && (k(b, this.offset + e, this.sampleDescriptionIndex), e += 4);
          f & 8 && (k(b, this.offset + e, this.defaultSampleDuration), e += 4);
          f & 16 && (k(b, this.offset + e, this.defaultSampleSize), e += 4);
          f & 32 && (k(b, this.offset + e, this.defaultSampleFlags), e += 4);
          return e;
        };
        return f;
      }(p);
      a.TrackFragmentHeaderBox = m;
      m = function(a) {
        function f(b) {
          a.call(this, "tfdt", 0, 0);
          this.baseMediaDecodeTime = b;
        }
        __extends(f, a);
        f.prototype.layout = function(b) {
          return this.size = a.prototype.layout.call(this, b) + 4;
        };
        f.prototype.write = function(b) {
          var e = a.prototype.write.call(this, b);
          k(b, this.offset + e, this.baseMediaDecodeTime);
          return e + 4;
        };
        return f;
      }(p);
      a.TrackFragmentBaseMediaDecodeTimeBox = m;
      m = function(a) {
        function f(b, e, f) {
          a.call(this, "traf", [b, e, f]);
          this.header = b;
          this.decodeTime = e;
          this.run = f;
        }
        __extends(f, a);
        return f;
      }(s);
      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 = {}));
      p = function(a) {
        function f(b, e, f, c) {
          a.call(this, "trun", 1, b);
          this.samples = e;
          this.dataOffset = f;
          this.firstSampleFlags = c;
        }
        __extends(f, a);
        f.prototype.layout = function(b) {
          b = a.prototype.layout.call(this, b) + 4;
          var e = this.samples.length, f = this.flags;
          f & 1 && (b += 4);
          f & 4 && (b += 4);
          f & 256 && (b += 4 * e);
          f & 512 && (b += 4 * e);
          f & 1024 && (b += 4 * e);
          f & 2048 && (b += 4 * e);
          return this.size = b;
        };
        f.prototype.write = function(b) {
          var e = a.prototype.write.call(this, b), f = this.samples.length, c = this.flags;
          k(b, this.offset + e, f);
          e += 4;
          c & 1 && (k(b, this.offset + e, this.dataOffset), e += 4);
          c & 4 && (k(b, this.offset + e, this.firstSampleFlags), e += 4);
          for (var d = 0;d < f;d++) {
            var h = this.samples[d];
            c & 256 && (k(b, this.offset + e, h.duration), e += 4);
            c & 512 && (k(b, this.offset + e, h.size), e += 4);
            c & 1024 && (k(b, this.offset + e, h.flags), e += 4);
            c & 2048 && (k(b, this.offset + e, h.compositionTimeOffset), e += 4);
          }
          return e;
        };
        return f;
      }(p);
      a.TrackRunBox = p;
      p = function(a) {
        function f(b, e) {
          a.call(this, "moof", d([b], e));
          this.header = b;
          this.trafs = e;
        }
        __extends(f, a);
        return f;
      }(s);
      a.MovieFragmentBox = p;
      p = function(a) {
        function f(b) {
          a.call(this, "mdat");
          this.chunks = b;
        }
        __extends(f, a);
        f.prototype.layout = function(b) {
          var e = a.prototype.layout.call(this, b);
          this.chunks.forEach(function(b) {
            e += b.length;
          });
          return this.size = e;
        };
        f.prototype.write = function(b) {
          var e = this, f = a.prototype.write.call(this, b);
          this.chunks.forEach(function(a) {
            b.set(a, e.offset + f);
            f += a.length;
          }, this);
          return f;
        };
        return f;
      }(h);
      a.MediaDataBox = p;
      p = function(a) {
        function f(b, e) {
          a.call(this, b);
          this.dataReferenceIndex = 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, 0);
          k(b, this.offset + e + 4, this.dataReferenceIndex);
          return e + 8;
        };
        return f;
      }(h);
      a.SampleEntry = p;
      s = function(a) {
        function f(b, e, f, c, d, h) {
          void 0 === f && (f = 2);
          void 0 === c && (c = 16);
          void 0 === d && (d = 44100);
          void 0 === h && (h = null);
          a.call(this, b, e);
          this.channelCount = f;
          this.sampleSize = c;
          this.sampleRate = d;
          this.otherBoxes = h;
        }
        __extends(f, a);
        f.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;
        };
        f.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 f;
      }(p);
      a.AudioSampleEntry = s;
      a.COLOR_NO_ALPHA_VIDEO_SAMPLE_DEPTH = 24;
      p = function(c) {
        function f(b, e, f, d, h, l, m, p, s, k) {
          void 0 === h && (h = "");
          void 0 === l && (l = 72);
          void 0 === m && (m = 72);
          void 0 === p && (p = 1);
          void 0 === s && (s = a.COLOR_NO_ALPHA_VIDEO_SAMPLE_DEPTH);
          void 0 === k && (k = null);
          c.call(this, b, e);
          this.width = f;
          this.height = d;
          this.compressorName = h;
          this.horizResolution = l;
          this.vertResolution = m;
          this.frameCount = p;
          this.depth = s;
          this.otherBoxes = k;
          if (31 < h.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(f) {
            a += f.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(f) {
            a += f.write(b);
          });
          return a;
        };
        return f;
      }(p);
      a.VideoSampleEntry = p;
      h = function(a) {
        function f(b, e) {
          a.call(this, b);
          this.data = e;
        }
        __extends(f, a);
        f.prototype.layout = function(b) {
          return this.size = a.prototype.layout.call(this, b) + this.data.length;
        };
        f.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 f;
      }(h);
      a.RawTag = h;
    })(d.Iso || (d.Iso = {}));
  })(d.MP4 || (d.MP4 = {}));
})(RtmpJs || (RtmpJs = {}));
(function(d) {
  (function(d) {
    function a(a) {
      for (var c = a.length >> 1, d = new Uint8Array(c), g = 0;g < c;g++) {
        d[g] = parseInt(a.substr(2 * g, 2), 16);
      }
      return d;
    }
    var r = [5500, 11025, 22050, 44100], v = ["PCM", "ADPCM", "MP3", "PCM le", "Nellymouser16", "Nellymouser8", "Nellymouser", "G.711 A-law", "G.711 mu-law", null, "AAC", "Speex", "MP3 8khz"], u;
    (function(a) {
      a[a.HEADER = 0] = "HEADER";
      a[a.RAW = 1] = "RAW";
    })(u || (u = {}));
    var t = [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 h;
    (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";
    })(h || (h = {}));
    u = function() {
      function c(a) {
        var d = 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, f) {
          var b = {trackId:f + 1, trackInfo:a, cachedDuration:0, samplesProcessed:0, initializationData:[]};
          d.metadata.audioTrackId === f && (d.audioTrackState = b);
          d.metadata.videoTrackId === f && (d.videoTrackState = b);
          return b;
        }, this);
        this._checkIfNeedHeaderData();
        this.filePos = 0;
        this.cachedPackets = [];
        this.chunkIndex = 0;
      }
      c.prototype.pushPacket = function(a, c, g) {
        0 === this.state && this._tryGenerateHeader();
        switch(a) {
          case 8:
            a = this.audioTrackState;
            var f = 0, b = 1, e = c[f], d = e >> 4, h;
            f++;
            switch(d) {
              case 10:
                b = c[f++];
                h = 1024;
                break;
              case 2:
                h = c[f + 1] >> 3 & 3;
                var l = c[f + 1] >> 1 & 3;
                h = 1 === l ? 3 === h ? 1152 : 576 : 3 === l ? 384 : 1152;
            }
            c = {codecDescription:v[d], codecId:d, data:c.subarray(f), rate:r[e >> 2 & 3], size:e & 2 ? 16 : 8, channels:e & 1 ? 2 : 1, samples:h, 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:g, 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:t[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:g, 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"], h = [], g = 0;g < this.trackStates.length;g++) {
            var f = this.trackStates[g], 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 n = new Uint8Array(41 + l.length);
                n.set(a("0000000003808080"), 0);
                n[8] = 32 + l.length;
                n.set(a("00020004808080"), 9);
                n[16] = 18 + l.length;
                n.set(a("40150000000000FA000000000005808080"), 17);
                n[34] = l.length;
                n.set(l, 35);
                n.set(a("068080800102"), 35 + l.length);
                e.otherBoxes = [new d.Iso.RawTag("esds", n)];
                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 p;
            f === this.audioTrackState ? p = new d.Iso.TrackBox(new d.Iso.TrackHeaderBox(3, f.trackId, -1, 0, 0, 1, g), 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 && (p = new d.Iso.TrackBox(new d.Iso.TrackHeaderBox(3, f.trackId, -1, b.width, b.height, 0, g), 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")))))));
            h.push(p);
          }
          g = 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);
          h = new d.Iso.MovieBox(b, h, g, f);
          c = new d.Iso.FileTypeBox("isom", 512, c);
          g = c.layout(0);
          f = h.layout(g);
          g = new Uint8Array(g + f);
          c.write(g);
          h.write(g);
          this.oncodecinfo(this.trackStates.map(function(b) {
            return b.mimeTypeCodec;
          }));
          this.ondata(g);
          this.filePos += g.length;
          this.state = 2;
        }
      };
      c.prototype._chunk = function() {
        var a, c = this.cachedPackets;
        if (0 !== c.length) {
          for (var g = [], f = 0, b = [], e = [], h = 0;h < this.trackStates.length;h++) {
            var n = this.trackStates[h], l = n.trackInfo, p = n.trackId, r = c.filter(function(b) {
              return b.trackId === p;
            });
            if (0 !== r.length) {
              var u = new d.Iso.TrackFragmentBaseMediaDecodeTimeBox(n.cachedDuration), t;
              e.push(f);
              switch(l.codecId) {
                case 10:
                ;
                case 2:
                  t = [];
                  for (a = 0;a < r.length;a++) {
                    var v = r[a].packet, J = Math.round(v.samples * l.timescale / l.samplerate);
                    g.push(v.data);
                    f += v.data.length;
                    t.push({duration:J, size:v.data.length});
                    n.samplesProcessed += v.samples;
                  }
                  a = 32;
                  a = new d.Iso.TrackFragmentHeaderBox(a, p, 0, 0, 0, 0, 33554432);
                  r = 769;
                  t = new d.Iso.TrackRunBox(r, t, 0, 0);
                  n.cachedDuration = Math.round(n.samplesProcessed * l.timescale / l.samplerate);
                  break;
                case 7:
                ;
                case 4:
                  t = [];
                  v = n.samplesProcessed;
                  J = Math.round(v * l.timescale / l.framerate);
                  for (a = 0;a < r.length;a++) {
                    var M = r[a].packet;
                    v++;
                    var D = Math.round(v * l.timescale / l.framerate), B = D - J, J = D, E = Math.round(v * l.timescale / l.framerate + M.compositionTime * l.timescale / 1E3);
                    g.push(M.data);
                    f += M.data.length;
                    t.push({duration:B, size:M.data.length, flags:1 === M.frameType ? 33554432 : 16842752, compositionTimeOffset:E - D});
                  }
                  a = 32;
                  a = new d.Iso.TrackFragmentHeaderBox(a, p, 0, 0, 0, 0, 33554432);
                  r = 3841;
                  t = new d.Iso.TrackRunBox(r, t, 0, 0);
                  n.cachedDuration = J;
                  n.samplesProcessed = v;
                  break;
                default:
                  throw Error("Un codec");;
              }
              n = new d.Iso.TrackFragmentBox(a, u, t);
              b.push(n);
            }
          }
          this.cachedPackets.splice(0, c.length);
          h = new d.Iso.MovieFragmentHeaderBox(++this.chunkIndex);
          c = new d.Iso.MovieFragmentBox(h, b);
          f = c.layout(0);
          g = new d.Iso.MediaDataBox(g);
          n = g.layout(f);
          l = f + 8;
          for (h = 0;h < b.length;h++) {
            b[h].run.dataOffset = l + e[h];
          }
          b = new Uint8Array(f + n);
          c.write(b);
          g.write(b);
          this.ondata(b);
          this.filePos += b.length;
        }
      };
      return c;
    }();
    d.MP4Mux = u;
    d.parseFLVMetadata = function(a) {
      var c = [], d = -1, g = -1, f = +a.asGetPublicProperty("duration"), b, e, h = a.asGetPublicProperty("audiocodecid");
      switch(h) {
        case 2:
        ;
        case "mp3":
          b = "mp3";
          e = 2;
          break;
        case 10:
        ;
        case "mp4a":
          b = "mp4a";
          e = 10;
          break;
        default:
          if (!isNaN(h)) {
            throw Error("Unsupported audio codec: " + h);
          }
          b = null;
          e = -1;
      }
      var n, l, k = a.asGetPublicProperty("videocodecid");
      switch(k) {
        case 4:
        ;
        case "vp6f":
          n = "vp6f";
          l = 4;
          break;
        case 7:
        ;
        case "avc1":
          n = "avc1";
          l = 7;
          break;
        default:
          if (!isNaN(k)) {
            throw Error("Unsupported video codec: " + k);
          }
          n = 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};
      n = null === n ? null : {codecDescription:n, 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 r = e.asGetPublicProperty("sampledescription")[0];
          r.asGetPublicProperty("sampletype") === h ? (b.language = e.asGetPublicProperty("language"), b.timescale = +e.asGetPublicProperty("timescale")) : r.asGetPublicProperty("sampletype") === k && (n.language = e.asGetPublicProperty("language"), n.timescale = +e.asGetPublicProperty("timescale"));
        }
      }
      n && (g = c.length, c.push(n));
      b && (d = c.length, c.push(b));
      return{tracks:c, duration:f, audioTrackId:d, videoTrackId:g};
    };
  })(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 k = new Uint8Array(this.buffer, 0, this.bufferSize);
            this.buffer = new ArrayBuffer(d);
            d = new Uint8Array(this.buffer);
            d.set(k);
          } else {
            d = new Uint8Array(this.buffer, 0, d);
          }
          d.set(a, this.bufferSize);
        } else {
          d = a;
        }
        a = 0;
        for (k = d.length;a < k;) {
          var l = 0;
          switch(this.state) {
            case 0:
              if (a + 9 > k) {
                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 > k) {
                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 h = d[a + 4], l = 9 < c ? d.subarray(a + 9, a + c) : null;
              this.onHeader && this.onHeader({hasAudio:!!(h & 4), hasVideo:!!(h & 1), extra:l});
              this.state = 2;
              l = c;
              break;
            case 2:
              if (a + 4 + 11 > k) {
                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], p = a + 4 + 11;
              if (p + c > k) {
                break;
              }
              h = d[a + 4];
              if (0 !== (d[a + 12] << 16 | d[a + 13] << 8 | d[a + 14]) || 0 !== (h & 192)) {
                this._error("Invalid FLV tag");
                break;
              }
              var s = h & 31;
              if (8 !== s && 9 !== s && 18 !== s) {
                this._error("Invalid FLV tag type");
                break;
              }
              var h = !!(h & 32), m = d[a + 8] << 16 | d[a + 9] << 8 | d[a + 10] | d[d + 11] << 24;
              this.onTag && this.onTag({type:s, needPreprocessing:h, timestamp:m, data:d.subarray(p, p + 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 u(a) {
            switch(a) {
              case c:
              ;
              case -h:
                return 0;
              case l:
              ;
              case -l:
                return-1;
              case h:
              ;
              case -c:
                return 0;
              default:
                return Math.cos(a);
            }
          }
          function t(a) {
            switch(a) {
              case c:
              ;
              case -h:
                return 1;
              case l:
              ;
              case -l:
                return 0;
              case h:
              ;
              case -c:
                return-1;
              default:
                return Math.sin(a);
            }
          }
          var l = Math.PI, c = l / 2, h = l + c, p = 2 * l, s = function(a) {
            function c(a, b, e, g, d, h) {
              void 0 === a && (a = 1);
              void 0 === b && (b = 0);
              void 0 === e && (e = 0);
              void 0 === g && (g = 1);
              void 0 === d && (d = 0);
              void 0 === h && (h = 0);
              var l = this._data = new Float64Array(6);
              l[0] = a;
              l[1] = b;
              l[2] = e;
              l[3] = g;
              l[4] = d;
              l[5] = h;
            }
            __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, g = 0, d = b[3] * a[3], h = b[4] * a[0] + a[4], l = b[5] * a[3] + a[5];
              if (0 !== b[1] || 0 !== b[2] || 0 !== a[1] || 0 !== a[2]) {
                e += b[1] * a[2], d += b[2] * a[1], c += b[0] * a[1] + b[1] * a[3], g += b[2] * a[0] + b[3] * a[2], h += b[5] * a[2], l += b[4] * a[1];
              }
              b[0] = e;
              b[1] = c;
              b[2] = g;
              b[3] = d;
              b[4] = h;
              b[5] = l;
            };
            c.prototype.preMultiply = function(a) {
              this.preMultiplyInto(a, this);
            };
            c.prototype.preMultiplyInto = function(a, b) {
              var e = this._data, c = a._data, g = b._data, d = c[0] * e[0], h = 0, l = 0, m = c[3] * e[3], p = c[4] * e[0] + e[4], s = c[5] * e[3] + e[5];
              if (0 !== c[1] || 0 !== c[2] || 0 !== e[1] || 0 !== e[2]) {
                d += c[1] * e[2], m += c[2] * e[1], h += c[0] * e[1] + c[1] * e[3], l += c[2] * e[0] + c[3] * e[2], p += c[5] * e[2], s += c[4] * e[1];
              }
              g[0] = d;
              g[1] = h;
              g[2] = l;
              g[3] = m;
              g[4] = p;
              g[5] = s;
            };
            c.prototype.invert = function() {
              this.invertInto(this);
            };
            c.prototype.invertInto = function(a) {
              var b = this._data, e = a._data, c = b[1], g = b[2], d = b[4], h = b[5];
              if (0 === c && 0 === g) {
                var l = e[0] = 1 / b[0], b = e[3] = 1 / b[3];
                e[1] = e[2] = 0;
                e[4] = -l * d;
                e[5] = -b * h;
              } else {
                var l = b[0], b = b[3], m = l * b - c * g;
                0 === m ? a.identity() : (m = 1 / m, a = 0, a = e[0] = b * m, c = e[1] = -c * m, g = e[2] = -g * m, b = e[3] = l * m, e[4] = -(a * d + g * h), e[5] = -(c * d + b * h));
              }
            };
            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, g) {
              void 0 === e && (e = 0);
              void 0 === c && (c = 0);
              void 0 === g && (g = 0);
              var d = this._data;
              if (0 !== e) {
                var h = u(e);
                e = t(e);
                d[0] = h * a;
                d[1] = e * b;
                d[2] = -e * a;
                d[3] = h * b;
              } else {
                d[0] = a, d[1] = 0, d[2] = 0, d[3] = b;
              }
              d[4] = c;
              d[5] = g;
            };
            c.prototype.createGradientBox = function(a, b, e, c, g) {
              void 0 === e && (e = 0);
              void 0 === c && (c = 0);
              void 0 === g && (g = 0);
              this.createBox(a / 1638.4, b / 1638.4, e, c + a / 2, g + b / 2);
            };
            c.prototype.rotate = function(a) {
              a = +a;
              if (0 !== a) {
                var b = this._data, e = u(a);
                a = t(a);
                var c = b[0], g = b[1], d = b[2], h = b[3], l = b[4], m = b[5];
                b[0] = c * e - g * a;
                b[1] = c * a + g * e;
                b[2] = d * e - h * a;
                b[3] = d * a + h * e;
                b[4] = l * e - m * a;
                b[5] = l * a + m * 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], g = b[2], d = b[3], h = b[4], l = b[5], m = a.xMin, p = a.yMin, s = a.width, k = a.height, b = Math.round(e * m + g * p + h), r = Math.round(c * m + d * p + l), u = Math.round(e * (m + s) + g * p + h), t = Math.round(c * (m + s) + d * p + l), v = Math.round(e * (m + s) + g * (p + k) + h), s = Math.round(c * (m + s) + d * (p + k) + l), e = Math.round(e * m + g * (p + k) + h), c = Math.round(c * m + d * (p + k) + l), d = 0;
              b > u && (d = b, b = u, u = d);
              v > e && (d = v, v = e, e = d);
              a.xMin = b < v ? b : v;
              a.xMax = u > e ? u : e;
              r > t && (d = r, r = t, t = d);
              s > c && (d = s, s = c, c = d);
              a.yMin = r < s ? r : s;
              a.yMax = t > c ? t : 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, g, d) {
              var h = this._data;
              h[0] = a;
              h[1] = b;
              h[2] = e;
              h[3] = c;
              h[4] = g;
              h[5] = d;
            };
            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 g = this._data;
              if (0 !== e && e !== p || 0 !== c && c !== p) {
                var d = u(e), h = t(e);
                e === c ? (g[0] = d * a, g[1] = h * a) : (g[0] = u(c) * a, g[1] = t(c) * a);
                g[2] = -h * b;
                g[3] = d * b;
              } else {
                g[0] = a, g[1] = g[2] = 0, g[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 = s;
        })(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(k) {
        (function(v) {
          function u(a, c, d, g, f, b, e) {
            var h = c * c, n = d * d, l = g * g, u = h + n + l, t = Math.sqrt(u);
            c /= t;
            d /= t;
            g /= t;
            h /= u;
            n /= u;
            l /= u;
            u = Math.cos(a);
            a = Math.sin(a);
            return new k.geom.Matrix3D([h + (n + l) * u, c * d * (1 - u) + g * a, c * g * (1 - u) - d * a, 0, c * d * (1 - u) - g * a, n + (h + l) * u, d * g * (1 - u) + c * a, 0, c * g * (1 - u) + d * a, d * g * (1 - u) - c * a, l + (h + n) * u, 0, (f * (n + l) - c * (b * d + e * g)) * (1 - u) + (b * g - e * d) * a, (b * (h + l) - d * (f * c + e * g)) * (1 - u) + (e * c - f * g) * a, (e * (h + n) - g * (f * c + b * d)) * (1 - u) + (f * d - b * c) * a, 1]);
          }
          var t = 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]), h = function(d) {
            function h(a) {
              void 0 === a && (a = null);
              this._matrix = new Float32Array(16);
              a && 16 <= a.length ? this.copyRawDataFrom(a) : this.identity();
            }
            __extends(h, d);
            h.interpolate = function(a, c, f) {
              t("public flash.geom.Matrix3D::static interpolate");
            };
            Object.defineProperty(h.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(h.prototype, "position", {get:function() {
              var a = this._matrix;
              return new k.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(h.prototype, "determinant", {get:function() {
              var a = this._matrix, c = a[4], f = a[8], b = a[12], e = a[5], d = a[9], h = a[13], l = a[6], p = a[10], s = a[14], k = a[7], r = a[11], u = a[15];
              return a[0] * (e * (p * u - r * s) - l * (d * u - r * h) + k * (d * s - p * h)) - a[1] * (c * (p * u - r * s) - l * (f * u - r * b) + k * (f * s - p * b)) + a[2] * (c * (d * u - r * h) - e * (f * u - r * b) + k * (f * h - d * b)) - a[3] * (c * (d * s - p * h) - e * (f * s - p * b) + l * (f * h - d * b));
            }, enumerable:!0, configurable:!0});
            h.prototype.clone = function() {
              return new k.geom.Matrix3D(this._matrix);
            };
            h.prototype.copyToMatrix3D = function(a) {
              a._matrix.set(this._matrix);
            };
            h.prototype.append = function(a) {
              var c = a._matrix, f = this._matrix;
              a = this._matrix;
              var b = c[0], e = c[4], d = c[8], h = c[12], l = c[1], p = c[5], s = c[9], k = c[13], r = c[2], u = c[6], t = c[10], v = c[14], D = c[3], B = c[7], E = c[11], c = c[15], y = f[0], z = f[4], G = f[8], C = f[12], I = f[1], P = f[5], T = f[9], O = f[13], Q = f[2], S = f[6], V = f[10], aa = f[14], $ = f[3], w = f[7], U = f[11], f = f[15];
              a[0] = b * y + e * I + d * Q + h * $;
              a[1] = l * y + p * I + s * Q + k * $;
              a[2] = r * y + u * I + t * Q + v * $;
              a[3] = D * y + B * I + E * Q + c * $;
              a[4] = b * z + e * P + d * S + h * w;
              a[5] = l * z + p * P + s * S + k * w;
              a[6] = r * z + u * P + t * S + v * w;
              a[7] = D * z + B * P + E * S + c * w;
              a[8] = b * G + e * T + d * V + h * U;
              a[9] = l * G + p * T + s * V + k * U;
              a[10] = r * G + u * T + t * V + v * U;
              a[11] = D * G + B * T + E * V + c * U;
              a[12] = b * C + e * O + d * aa + h * f;
              a[13] = l * C + p * O + s * aa + k * f;
              a[14] = r * C + u * O + t * aa + v * f;
              a[15] = D * C + B * O + E * aa + c * f;
            };
            h.prototype.prepend = function(a) {
              var c = this._matrix, f = a._matrix;
              a = this._matrix;
              var b = c[0], e = c[4], d = c[8], h = c[12], l = c[1], p = c[5], s = c[9], k = c[13], r = c[2], u = c[6], t = c[10], v = c[14], D = c[3], B = c[7], E = c[11], c = c[15], y = f[0], z = f[4], G = f[8], C = f[12], I = f[1], P = f[5], T = f[9], O = f[13], Q = f[2], S = f[6], V = f[10], aa = f[14], $ = f[3], w = f[7], U = f[11], f = f[15];
              a[0] = b * y + e * I + d * Q + h * $;
              a[1] = l * y + p * I + s * Q + k * $;
              a[2] = r * y + u * I + t * Q + v * $;
              a[3] = D * y + B * I + E * Q + c * $;
              a[4] = b * z + e * P + d * S + h * w;
              a[5] = l * z + p * P + s * S + k * w;
              a[6] = r * z + u * P + t * S + v * w;
              a[7] = D * z + B * P + E * S + c * w;
              a[8] = b * G + e * T + d * V + h * U;
              a[9] = l * G + p * T + s * V + k * U;
              a[10] = r * G + u * T + t * V + v * U;
              a[11] = D * G + B * T + E * V + c * U;
              a[12] = b * C + e * O + d * aa + h * f;
              a[13] = l * C + p * O + s * aa + k * f;
              a[14] = r * C + u * O + t * aa + v * f;
              a[15] = D * C + B * O + E * aa + c * f;
            };
            h.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], d = c[3], h = c[4], l = c[5], p = c[6], s = c[7], k = c[8], r = c[9], u = c[10], t = c[11], v = c[12], D = c[13], B = c[14], E = c[15];
              c[0] = a * (l * (u * E - B * t) - r * (p * E - B * s) + D * (p * t - u * s));
              c[1] = -a * (b * (u * E - B * t) - r * (e * E - B * d) + D * (e * t - u * d));
              c[2] = a * (b * (p * E - B * s) - l * (e * E - B * d) + D * (e * s - p * d));
              c[3] = -a * (b * (p * t - u * s) - l * (e * t - u * d) + r * (e * s - p * d));
              c[4] = -a * (h * (u * E - B * t) - k * (p * E - B * s) + v * (p * t - u * s));
              c[5] = a * (f * (u * E - B * t) - k * (e * E - B * d) + v * (e * t - u * d));
              c[6] = -a * (f * (p * E - B * s) - h * (e * E - B * d) + v * (e * s - p * d));
              c[7] = a * (f * (p * t - u * s) - h * (e * t - u * d) + k * (e * s - p * d));
              c[8] = a * (h * (r * E - D * t) - k * (l * E - D * s) + v * (l * t - r * s));
              c[9] = -a * (f * (r * E - D * t) - k * (b * E - D * d) + v * (b * t - r * d));
              c[10] = a * (f * (l * E - D * s) - h * (b * E - D * d) + v * (b * s - l * d));
              c[11] = -a * (f * (l * t - r * s) - h * (b * t - r * d) + k * (b * s - l * d));
              c[12] = -a * (h * (r * B - D * u) - k * (l * B - D * p) + v * (l * u - r * p));
              c[13] = a * (f * (r * B - D * u) - k * (b * B - D * e) + v * (b * u - r * e));
              c[14] = -a * (f * (l * B - D * p) - h * (b * B - D * e) + v * (b * p - l * e));
              c[15] = a * (f * (l * u - r * p) - h * (b * u - r * e) + k * (b * p - l * e));
              return!0;
            };
            h.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;
            };
            h.prototype.decompose = function(a) {
              void 0 === a && (a = "eulerAngles");
              l(a);
              t("public flash.geom.Matrix3D::decompose");
            };
            h.prototype.recompose = function(a, c) {
              void 0 === c && (c = "eulerAngles");
              l(c);
              t("public flash.geom.Matrix3D::recompose");
            };
            h.prototype.appendTranslation = function(a, c, f) {
              a = +a;
              c = +c;
              f = +f;
              var b = this._matrix, e = b[3], d = b[7], h = b[11], l = b[15];
              b[0] += a * e;
              b[1] += c * e;
              b[2] += f * e;
              b[4] += a * d;
              b[5] += c * d;
              b[6] += f * d;
              b[8] += a * h;
              b[9] += c * h;
              b[10] += f * h;
              b[12] += a * l;
              b[13] += c * l;
              b[14] += f * l;
            };
            h.prototype.appendRotation = function(a, c, f) {
              void 0 === f && (f = null);
              this.append(u(+a / 180 * Math.PI, c.x, c.y, c.z, f ? f.x : 0, f ? f.y : 0, f ? f.z : 0));
            };
            h.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;
            };
            h.prototype.prependTranslation = function(a, c, f) {
              a = +a;
              c = +c;
              f = +f;
              var b = this._matrix, e = b[1], d = b[5], h = b[9], l = b[2], p = b[6], s = b[10], k = b[3], r = b[7], u = b[11];
              b[12] += b[0] * a + b[4] * c + b[8] * f;
              b[13] += e * a + d * c + h * f;
              b[14] += l * a + p * c + s * f;
              b[15] += k * a + r * c + u * f;
            };
            h.prototype.prependRotation = function(a, c, f) {
              void 0 === f && (f = null);
              this.prepend(u(+a / 180 * Math.PI, c.x, c.y, c.z, f ? f.x : 0, f ? f.y : 0, f ? f.z : 0));
            };
            h.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;
            };
            h.prototype.transformVector = function(a) {
              var c = this._matrix, f = a.x, b = a.y;
              a = a.z;
              return new k.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]);
            };
            h.prototype.deltaTransformVector = function(a) {
              var c = this._matrix, f = a.x, b = a.y;
              a = a.z;
              return new k.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);
            };
            h.prototype.transformVectors = function(a, c) {
              for (var f = this._matrix, b = f[0], e = f[4], d = f[8], h = f[12], l = f[1], p = f[5], s = f[9], k = f[13], r = f[2], u = f[6], t = f[10], f = f[14], v = 0;v < a.length - 2;v += 3) {
                var D = a.asGetNumericProperty(v), B = a.asGetNumericProperty(v + 1), E = a.asGetNumericProperty(v + 2);
                c.push(b * D + e * B + d * E + h);
                c.push(l * D + p * B + s * E + k);
                c.push(r * D + u * B + t * E + f);
              }
            };
            h.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;
            };
            h.prototype.pointAt = function(a, c, f) {
              t("public flash.geom.Matrix3D::pointAt");
            };
            h.prototype.interpolateTo = function(a, c) {
              t("public flash.geom.Matrix3D::interpolateTo");
            };
            h.prototype.copyFrom = function(a) {
              this._matrix.set(a._matrix);
            };
            h.prototype.copyRawDataTo = function(a) {
              var g = 0, f = !1;
              void 0 === g && (g = 0);
              void 0 === f && (f = !1);
              var g = g >>> 0, b = this._matrix;
              if (f) {
                for (f = 0, g |= 0;16 > f;f++, g++) {
                  a.asSetNumericProperty(g, b[c[f]]);
                }
              } else {
                for (f = 0, g |= 0;16 > f;f++, g++) {
                  a.asSetNumericProperty(g, b[f]);
                }
              }
            };
            h.prototype.copyRawDataFrom = function(a) {
              var g = 0, f = !1;
              void 0 === g && (g = 0);
              void 0 === f && (f = !1);
              var g = g >>> 0, b = this._matrix;
              if (f) {
                for (f = 0, g |= 0;16 > f;f++, g++) {
                  b[c[f]] = a.asGetNumericProperty(g) || 0;
                }
              } else {
                for (f = 0, g |= 0;16 > f;f++, g++) {
                  b[f] = a.asGetNumericProperty(g) || 0;
                }
              }
            };
            h.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];
            };
            h.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];
            };
            h.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;
            };
            h.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;
            };
            h.classInitializer = null;
            h.initializer = null;
            h.classSymbols = null;
            h.instanceSymbols = null;
            return h;
          }(a.ASNative);
          v.Matrix3D = h;
        })(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(k) {
        (function(k) {
          var r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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);
          k.Orientation3D = t;
        })(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(k) {
        (function(k) {
          var r = d.Debug.notImplemented, t = d.Debug.dummyConstructor, l = function(a) {
            function d() {
              t("public flash.geom.PerspectiveProjection");
            }
            __extends(d, a);
            Object.defineProperty(d.prototype, "fieldOfView", {get:function() {
              r("public flash.geom.PerspectiveProjection::get fieldOfView");
            }, set:function(a) {
              r("public flash.geom.PerspectiveProjection::set fieldOfView");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "projectionCenter", {get:function() {
              r("public flash.geom.PerspectiveProjection::get projectionCenter");
            }, set:function(a) {
              r("public flash.geom.PerspectiveProjection::set projectionCenter");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "focalLength", {get:function() {
              r("public flash.geom.PerspectiveProjection::get focalLength");
            }, set:function(a) {
              r("public flash.geom.PerspectiveProjection::set focalLength");
            }, enumerable:!0, configurable:!0});
            d.prototype.toMatrix3D = function() {
              r("public flash.geom.PerspectiveProjection::toMatrix3D");
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(a.ASNative);
          k.PerspectiveProjection = l;
        })(k.geom || (k.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 k = function(a) {
            function d(a, h) {
              void 0 === a && (a = 0);
              void 0 === h && (h = 0);
              this.x = +a;
              this.y = +h;
            }
            __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, d) {
              void 0 === a && (a = 0);
              void 0 === d && (d = 0);
              this.x = a;
              this.y = d;
            };
            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, h, p) {
              var s = 1 - p;
              return new d(a.x * p + h.x * s, a.y * p + h.y * s);
            };
            d.distance = function(a, d) {
              var l = d.x - a.x, s = d.y - a.y;
              return 0 === l ? Math.abs(s) : 0 === s ? Math.abs(l) : Math.sqrt(l * l + s * s);
            };
            d.polar = function(a, h) {
              a = +a;
              h = +h;
              return new d(a * Math.cos(h), a * Math.sin(h));
            };
            d.prototype.clone = function() {
              return new d(this.x, this.y);
            };
            d.prototype.offset = function(a, d) {
              this.x += +a;
              this.y += +d;
            };
            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, d) {
              this.x = +a;
              this.y = +d;
            };
            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 = k;
        })(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 k = function(a) {
            function l(a, d, l, s) {
              void 0 === a && (a = 0);
              void 0 === d && (d = 0);
              void 0 === l && (l = 0);
              void 0 === s && (s = 0);
              this.x = +a;
              this.y = +d;
              this.width = +l;
              this.height = +s;
            }
            __extends(l, a);
            l.FromBounds = function(a) {
              var d = a.xMin, p = a.yMin;
              return new l(d / 20, p / 20, (a.xMax - d) / 20, (a.yMax - p) / 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, d) {
              a = +a;
              d = +d;
              this.x -= a;
              this.y -= d;
              this.width += 2 * a;
              this.height += 2 * d;
            };
            l.prototype.inflatePoint = function(a) {
              this.inflate(a.x, a.y);
            };
            l.prototype.offset = function(a, d) {
              this.x += +a;
              this.y += +d;
            };
            l.prototype.offsetPoint = function(a) {
              this.offset(a.x, a.y);
            };
            l.prototype.contains = function(a, d) {
              a = +a;
              d = +d;
              return a >= this.x && a < this.right && d >= this.y && d < this.bottom;
            };
            l.prototype.containsPoint = function(a) {
              return this.contains(a.x, a.y);
            };
            l.prototype.containsRect = function(a) {
              var d = a.x + a.width, l = a.y + a.height, s = this.x + this.width, m = this.y + this.height;
              return a.x >= this.x && a.x < s && a.y >= this.y && a.y < m && d > this.x && d <= s && l > this.y && l <= 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 d = this.x, l = this.y, s = a.x, m = a.y, g = Math.max(d, s), d = Math.min(d + this.width, s + a.width);
              if (g <= d && (s = Math.max(l, m), a = Math.min(l + this.height, m + a.height), s <= a)) {
                return this.setTo(g, s, d - g, a - s), this;
              }
              this.setEmpty();
              return this;
            };
            l.prototype.intersectInPlaceInt32 = function(a) {
              var d = this.x | 0, l = this.y | 0, s = this.width | 0, m = this.height | 0, g = a.x | 0, f = a.width | 0, b = Math.max(d, g) | 0, d = Math.min(d + s | 0, g + f | 0) | 0;
              if (b <= d && (s = a.y | 0, g = a.height | 0, a = Math.max(l, s) | 0, l = Math.min(l + m | 0, s + g | 0), a <= l)) {
                return this.setTo(b, a, d - b, l - 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 d = Math.min(this.x, a.x), l = Math.min(this.y, a.y);
              this.setTo(d, l, Math.max(this.right, a.right) - d, Math.max(this.bottom, a.bottom) - l);
              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, d, l, s) {
              this.x = +a;
              this.y = +d;
              this.width = +l;
              this.height = +s;
            };
            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), d = 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 = d - this.y;
              return this;
            };
            l.prototype.roundInPlace = function() {
              var a = Math.round(this.x + this.width), d = 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 = d - 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 = k;
        })(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(k) {
        (function(v) {
          var u = d.Debug.notImplemented, t = d.Debug.somewhatImplemented, l = d.AVM2.Runtime.throwError, c = d.AVM2.Errors, h = function(a) {
            function d(a) {
              a || l("ArgumentError", c.NullPointerError, "displayObject");
              this._displayObject = a;
            }
            __extends(d, a);
            Object.defineProperty(d.prototype, "matrix", {get:function() {
              return this._displayObject._getMatrix().clone().toPixelsInPlace();
            }, set:function(a) {
              this._displayObject._setMatrix(a, !0);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "colorTransform", {get:function() {
              return this._displayObject._colorTransform.clone();
            }, set:function(a) {
              this._displayObject._setColorTransform(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.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(d.prototype, "concatenatedColorTransform", {get:function() {
              return this._displayObject._getConcatenatedColorTransform();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "pixelBounds", {get:function() {
              u("public flash.geom.Transform::get pixelBounds");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "matrix3D", {get:function() {
              var a = this._displayObject._matrix3D;
              return a && a.clone();
            }, set:function(a) {
              v.Matrix3D.isType(a) || l("TypeError", c.CheckTypeFailedError, a, "flash.geom.Matrix3D");
              a = a.rawData;
              this.matrix = new k.geom.Matrix(a.asGetPublicProperty(0), a.asGetPublicProperty(1), a.asGetPublicProperty(4), a.asGetPublicProperty(5), a.asGetPublicProperty(12), a.asGetPublicProperty(13));
              t("public flash.geom.Transform::set matrix3D");
            }, enumerable:!0, configurable:!0});
            d.prototype.getRelativeMatrix3D = function(a) {
              u("public flash.geom.Transform::getRelativeMatrix3D");
            };
            Object.defineProperty(d.prototype, "perspectiveProjection", {get:function() {
              u("public flash.geom.Transform::get perspectiveProjection");
            }, set:function(a) {
              u("public flash.geom.Transform::set perspectiveProjection");
            }, enumerable:!0, configurable:!0});
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(a.ASNative);
          v.Transform = h;
        })(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(k) {
        (function(k) {
          var r = d.Debug.notImplemented, t = d.Debug.dummyConstructor, l = function(a) {
            function d() {
              t("public flash.geom.Utils3D");
            }
            __extends(d, a);
            d.projectVector = function(a, c) {
              r("public flash.geom.Utils3D::static projectVector");
            };
            d.projectVectors = function(a, c, d, g) {
              r("public flash.geom.Utils3D::static projectVectors");
            };
            d.pointTowards = function(a, c, d, g, f) {
              r("public flash.geom.Utils3D::static pointTowards");
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(a.ASNative);
          k.Utils3D = l;
        })(k.geom || (k.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 k = function(a) {
            function d(a, h, l, s) {
              void 0 === a && (a = 0);
              void 0 === h && (h = 0);
              void 0 === l && (l = 0);
              void 0 === s && (s = 0);
              this.x = +a;
              this.y = +h;
              this.z = +l;
              this.w = +s;
            }
            __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, d) {
              return Math.acos(a.dotProduct(d) / (a.length * d.length));
            };
            d.distance = function(a, d) {
              return a.subtract(d).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, d) {
              return this.x === a.x && this.y === a.y && this.z === a.z && (!d || this.w === a.w);
            };
            d.prototype.nearEquals = function(a, d, l) {
              return Math.abs(this.x - a.x) < d && Math.abs(this.y - a.y) < d && Math.abs(this.z - a.z) < d && (!l || Math.abs(this.w - a.w) < d);
            };
            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, d, l) {
              this.x = +a;
              this.y = +d;
              this.z = +l;
            };
            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 = k;
        })(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(k) {
        (function(k) {
          var r = d.Debug.notImplemented, t = d.Debug.dummyConstructor, l = d.Debug.somewhatImplemented, c = function(a) {
            function c() {
              t("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, g, f) {
              r("public flash.accessibility.Accessibility::static sendEvent");
            };
            c.updateProperties = function() {
              r("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);
          k.Accessibility = c;
        })(k.accessibility || (k.accessibility = {}));
      })(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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("public flash.accessibility.AccessibilityImplementation");
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.ASNative);
          k.AccessibilityImplementation = t;
        })(k.accessibility || (k.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 k = 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 = k;
        })(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(k) {
        (function(k) {
          var r = d.AVM2.Runtime.asCoerceString, t = function(a) {
            function c(a, c, d) {
              this._type = r(a);
              this._bubbles = !!c;
              this._cancelable = !!d;
              this._currentTarget = this._target = null;
              this._eventPhase = k.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 g = c[l], f = this.asGetPublicProperty(g);
                "string" === typeof f && (f = '"' + f + '"');
                d += " " + g + "=" + 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);
          k.Event = t;
        })(k.events || (k.events = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      (function(r) {
        (function(v) {
          var u = d.AVM2.Runtime.asCoerceString, t = d.isFunction, l = d.isNullOrUndefined, c = d.AVM2.Runtime.throwError, h = function() {
            return function(a, c, b) {
              this.listener = a;
              this.useCapture = c;
              this.priority = b;
            };
          }(), p = 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, d = c.length, g = d - 1;0 <= g;g--) {
                var l = c[g];
                if (l.listener === a) {
                  return;
                }
                if (e > l.priority) {
                  d = g;
                } else {
                  break;
                }
              }
              c = this.ensureNonAliasedEntries();
              c.splice(d, 0, new h(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;
          }(), s = 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 d = b[c];
                  if (null === d) {
                    e++;
                  } else {
                    try {
                      d.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;
          }();
          v.BroadcastEventDispatchQueue = s;
          var m = function(d) {
            function f(a) {
              void 0 === a && (a = null);
              this._target = a || this;
            }
            __extends(f, d);
            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, d, g, h) {
              void 0 === d && (d = !1);
              void 0 === g && (g = 0);
              void 0 === h && (h = !1);
              (2 > arguments.length || 5 < arguments.length) && c("ArgumentError", k.Errors.WrongArgumentCountError, "flash.events::EventDispatcher/addEventListener()", 2, arguments.length);
              t(e) || c("TypeError", k.Errors.CheckTypeFailedError, e, "Function");
              l(a) && c("TypeError", k.Errors.NullPointerError, "type");
              a = u(a);
              d = !!d;
              g |= 0;
              h = !!h;
              var m = this._getListeners(d);
              (m[a] || (m[a] = new p)).insert(e, d, g);
              !d && v.Event.isBroadcastEventType(a) && f.broadcastEventDispatchQueue.add(a, this);
            };
            f.prototype.removeEventListener = function(a, e, d) {
              void 0 === d && (d = !1);
              (2 > arguments.length || 3 < arguments.length) && c("ArgumentError", k.Errors.WrongArgumentCountError, "flash.events::EventDispatcher/removeEventListener()", 2, arguments.length);
              t(e) || c("TypeError", k.Errors.CheckTypeFailedError, e, "Function");
              l(a) && c("TypeError", k.Errors.NullPointerError, "type");
              a = u(a);
              var g = this._getListeners(!!d), h = g[a];
              h && (h.remove(e), h.isEmpty() && (!d && v.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 = u(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 = u(a);
              if (this._hasEventListener(a)) {
                return!0;
              }
              if (r.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 && r.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, d = this._target, g = !0, h = [];
              if (!a.isBroadcastEvent() && r.display.DisplayObject.isType(this)) {
                for (var l = this._parent;l;) {
                  l._hasEventListener(e) && h.push(l), l = l._parent;
                }
                for (l = h.length - 1;0 <= l && g;l--) {
                  var m = h[l];
                  if (m._hasCaptureEventListener(e)) {
                    var p = m._getListenersForType(!0, e), g = f.callListeners(p, a, d, m, v.EventPhase.CAPTURING_PHASE)
                  }
                }
              }
              g && (p = this._getListenersForType(!1, e)) && (g = f.callListeners(p, a, d, d, v.EventPhase.AT_TARGET));
              if (!a.isBroadcastEvent() && g && a.bubbles) {
                for (l = 0;l < h.length && g;l++) {
                  m = h[l], m._hasTargetOrBubblingEventListener(e) && (p = m._getListenersForType(!1, e), g = f.callListeners(p, a, d, m, v.EventPhase.BUBBLING_PHASE));
                }
              }
              return!a._isDefaultPrevented;
            };
            f.callListeners = function(a, e, c, f, d) {
              if (a.isEmpty()) {
                return!0;
              }
              e._target && (e = e.asCallPublicProperty("clone", null));
              for (var g = a.snapshot(), h = 0;h < g.length;h++) {
                var l = g[h];
                e._target = c;
                e._currentTarget = f;
                e._eventPhase = d;
                l.listener(e);
                if (e._stopImmediatePropagation) {
                  break;
                }
              }
              a.releaseSnapshot(g);
              return!e._stopPropagation;
            };
            f.classInitializer = function() {
              f.broadcastEventDispatchQueue = new s;
            };
            f.initializer = function() {
              this._target = this;
              this._targetOrBubblingListeners = this._captureListeners = null;
            };
            f.classSymbols = null;
            f.instanceSymbols = null;
            return f;
          }(a.ASNative);
          v.EventDispatcher = m;
        })(r.events || (r.events = {}));
      })(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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              a.call(this);
              r("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);
          k.EventPhase = t;
        })(k.events || (k.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 u = d.Debug.notImplemented, t = function(a) {
            function c(c, d, k, m) {
              a.call(this, c, d, k);
              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) {
              u("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 = t;
        })(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, h, l, k, m) {
              void 0 === h && (h = !1);
              void 0 === l && (l = !1);
              void 0 === k && (k = "");
              void 0 === m && (m = 0);
              a.call(this, c, h, l, k);
              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 u = d.Debug.dummyConstructor, t = function(a) {
            function c(c, d, k, m) {
              a.call(this, void 0, void 0, void 0);
              u("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 = t;
        })(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 u = d.AVM2.Runtime.asCoerceString, t = d.Debug.dummyConstructor, l = d.Debug.somewhatImplemented, c = function(c) {
            function d(a, l, g, f, b, e, q, n, p) {
              c.call(this, void 0, void 0, void 0);
              t("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 = u(a);
            }, enumerable:!0, configurable:!0});
            d.prototype.updateAfterEvent = function() {
              l("public flash.events.GestureEvent::updateAfterEvent");
            };
            d.prototype.NativeCtor = function(a, c, d, f, b, e) {
              this._phase = u(a);
              this._localX = +c;
              this._localY = +d;
              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 u = d.Debug.dummyConstructor, t = function(a) {
            function c(c, d, k, m) {
              a.call(this, void 0, void 0, void 0);
              u("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 = t;
        })(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, h, l, k, m) {
              void 0 === h && (h = !1);
              void 0 === l && (l = !1);
              void 0 === k && (k = "");
              void 0 === m && (m = 0);
              a.call(this, c, h, l, k, 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 u = d.Debug.dummyConstructor, t = function(a) {
            function c(c, d, k, m, g, f, b, e, q) {
              a.call(this, void 0, void 0, void 0);
              u("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 = t;
        })(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 u = d.Debug.notImplemented, t = d.Debug.dummyConstructor, l = function(c) {
            function h(a, d, h, g, f, b, e, l, n, k, r) {
              c.call(this, void 0, void 0, void 0);
              t("public flash.events.MouseEvent");
            }
            __extends(h, c);
            h.typeFromDOMType = function(a) {
              switch(a) {
                case "click":
                  return h.CLICK;
                case "dblclick":
                  return h.DOUBLE_CLICK;
                case "mousedown":
                  return h.MOUSE_DOWN;
                case "mouseout":
                ;
                case "mouseover":
                ;
                case "mousemove":
                  return h.MOUSE_MOVE;
                case "mouseup":
                  return h.MOUSE_UP;
                default:
                  u(a);
              }
            };
            Object.defineProperty(h.prototype, "localX", {get:function() {
              return this._localX / 20 | 0;
            }, set:function(a) {
              this._localX = 20 * a | 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "localY", {get:function() {
              return this._localY / 20 | 0;
            }, set:function(a) {
              this._localY = 20 * a | 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "stageX", {get:function() {
              return isNaN(this.localX + this.localY) ? Number.NaN : this._getGlobalPoint().x / 20 | 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "stageY", {get:function() {
              return isNaN(this.localX + this.localY) ? Number.NaN : this._getGlobalPoint().y / 20 | 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "movementX", {get:function() {
              return this._movementX || 0;
            }, set:function(a) {
              this._movementX = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "movementY", {get:function() {
              return this._movementY || 0;
            }, set:function(a) {
              this._movementY = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "delta", {get:function() {
              return this._delta;
            }, set:function(a) {
              this._delta = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "ctrlKey", {get:function() {
              return this._ctrlKey;
            }, set:function(a) {
              this._ctrlKey = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "altKey", {get:function() {
              return this._altKey;
            }, set:function(a) {
              this._altKey = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "shiftKey", {get:function() {
              return this._shiftKey;
            }, set:function(a) {
              this._shiftKey = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "buttonDown", {get:function() {
              return this._buttonDown;
            }, set:function(a) {
              this._buttonDown = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "relatedObject", {get:function() {
              return this._relatedObject;
            }, set:function(a) {
              this._relatedObject = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "isRelatedObjectInaccessible", {get:function() {
              return this._isRelatedObjectInaccessible;
            }, set:function(a) {
              this._isRelatedObjectInaccessible = a;
            }, enumerable:!0, configurable:!0});
            h.prototype.updateAfterEvent = function() {
              d.AVM2.Runtime.AVM2.instance.globals["Shumway.Player.Utils"].requestRendering();
            };
            h.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;
            };
            h.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);
            };
            h.prototype.toString = function() {
              return this.formatToString("MouseEvent", "type", "bubbles", "cancelable", "eventPhase", "localX", "localY", "relatedObject", "ctrlKey", "altKey", "shiftKey", "buttonDown", "delta");
            };
            h.classInitializer = null;
            h.initializer = null;
            h.classSymbols = null;
            h.instanceSymbols = null;
            h.CLICK = "click";
            h.DOUBLE_CLICK = "doubleClick";
            h.MOUSE_DOWN = "mouseDown";
            h.MOUSE_MOVE = "mouseMove";
            h.MOUSE_OUT = "mouseOut";
            h.MOUSE_OVER = "mouseOver";
            h.MOUSE_UP = "mouseUp";
            h.RELEASE_OUTSIDE = "releaseOutside";
            h.MOUSE_WHEEL = "mouseWheel";
            h.ROLL_OUT = "rollOut";
            h.ROLL_OVER = "rollOver";
            h.MIDDLE_CLICK = "middleClick";
            h.MIDDLE_MOUSE_DOWN = "middleMouseDown";
            h.MIDDLE_MOUSE_UP = "middleMouseUp";
            h.RIGHT_CLICK = "rightClick";
            h.RIGHT_MOUSE_DOWN = "rightMouseDown";
            h.RIGHT_MOUSE_UP = "rightMouseUp";
            h.CONTEXT_MENU = "contextMenu";
            return h;
          }(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, d, l, k) {
            }
            __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 u = d.Debug.dummyConstructor, t = function(d) {
            function c(a, c, k, m, g) {
              d.call(this, void 0, void 0, void 0);
              u("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 = t;
        })(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 u = d.Debug.dummyConstructor, t = function(a) {
            function c(c, d, k, m, g) {
              a.call(this, void 0, void 0, void 0, void 0, void 0);
              u("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 = t;
        })(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 u = d.Debug.dummyConstructor, t = function(a) {
            function c(c, d, k) {
              a.call(this, void 0, void 0, void 0);
              u("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 = t;
        })(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 u = d.Debug.somewhatImplemented, t = d.Debug.dummyConstructor, l = function(a) {
            function h(d, h, l, g, f, b, e, q, n, k, r, u, v, K) {
              a.call(this, void 0, void 0, void 0);
              t("public flash.events.TouchEvent");
            }
            __extends(h, a);
            Object.defineProperty(h.prototype, "touchPointID", {get:function() {
              return this._touchPointID;
            }, set:function(a) {
              this._touchPointID = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "isPrimaryTouchPoint", {get:function() {
              return this._isPrimaryTouchPoint;
            }, set:function(a) {
              this._isPrimaryTouchPoint = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "localX", {get:function() {
              return this._localX;
            }, set:function(a) {
              this._localX = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "localY", {get:function() {
              return this._localY;
            }, set:function(a) {
              this._localY = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "sizeX", {get:function() {
              return this._sizeX;
            }, set:function(a) {
              this._sizeX = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "sizeY", {get:function() {
              return this._sizeY;
            }, set:function(a) {
              this._sizeY = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "pressure", {get:function() {
              return this._pressure;
            }, set:function(a) {
              this._pressure = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "relatedObject", {get:function() {
              return this._relatedObject;
            }, set:function(a) {
              this._relatedObject = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "ctrlKey", {get:function() {
              return this._ctrlKey;
            }, set:function(a) {
              this._ctrlKey = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "altKey", {get:function() {
              return this._altKey;
            }, set:function(a) {
              this._altKey = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "shiftKey", {get:function() {
              return this._shiftKey;
            }, set:function(a) {
              this._shiftKey = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "stageX", {get:function() {
              u("TouchEvent::get stageX");
              return this._localX;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "stageY", {get:function() {
              u("TouchEvent::get stageY");
              return this._localY;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "isRelatedObjectInaccessible", {get:function() {
              return this._isRelatedObjectInaccessible;
            }, set:function(a) {
              this._isRelatedObjectInaccessible = a;
            }, enumerable:!0, configurable:!0});
            h.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);
            };
            h.prototype.toString = function() {
              return this.formatToString("TouchEvent", "type", "bubbles", "cancelable", "eventPhase", "touchPointID", "isPrimaryTouchPoint", "localX", "localY", "sizeX", "sizeY", "pressure", "relatedObject", "ctrlKey", "altKey", "shiftKey");
            };
            h.prototype.updateAfterEvent = function() {
              d.AVM2.Runtime.AVM2.instance.globals["Shumway.Player.Utils"].requestRendering();
            };
            h.classInitializer = null;
            h.initializer = null;
            h.classSymbols = null;
            h.instanceSymbols = null;
            h.TOUCH_BEGIN = "touchBegin";
            h.TOUCH_END = "touchEnd";
            h.TOUCH_MOVE = "touchMove";
            h.TOUCH_OVER = "touchOver";
            h.TOUCH_OUT = "touchOut";
            h.TOUCH_ROLL_OVER = "touchRollOver";
            h.TOUCH_ROLL_OUT = "touchRollOut";
            h.TOUCH_TAP = "touchTap";
            h.PROXIMITY_BEGIN = "proximityBegin";
            h.PROXIMITY_END = "proximityEnd";
            h.PROXIMITY_MOVE = "proximityMove";
            h.PROXIMITY_OUT = "proximityOut";
            h.PROXIMITY_OVER = "proximityOver";
            h.PROXIMITY_ROLL_OUT = "proximityRollOut";
            h.PROXIMITY_ROLL_OVER = "proximityRollOver";
            return h;
          }(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 u = d.Debug.dummyConstructor, t = function(a) {
            function c(c, d, k, m) {
              a.call(this, void 0, void 0, void 0, void 0, void 0);
              u("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 = t;
        })(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(v) {
          var u = d.Debug.notImplemented, t = d.Debug.somewhatImplemented, l = d.isNullOrUndefined, c = d.AVM2.Runtime.asCoerceString, h = d.AVM2.Runtime.throwError, p = d.AVM2.Runtime.checkNullParameter, s = d.Bounds, m = a.geom, g = 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";
          })(v.DisplayObjectFlags || (v.DisplayObjectFlags = {}));
          var f = v.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";
          })(v.VisitorFlags || (v.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";
          })(v.HitTestingType || (v.HitTestingType = {}));
          (function(a) {
            a[a.None = 0] = "None";
            a[a.Bounds = 1] = "Bounds";
            a[a.Shape = 2] = "Shape";
          })(v.HitTestingResult || (v.HitTestingResult = {}));
          var b = function(b) {
            function q() {
              g.EventDispatcher.instanceConstructorNoInitialize.call(this);
              this._addReference();
              this._setFlags(256);
            }
            __extends(q, b);
            q.getNextSyncID = function() {
              return this._syncID++;
            };
            q.reset = function() {
              this._advancableInstances = new d.WeakList;
            };
            q.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;
            };
            q.performFrameNavigation = function(b, e) {
              b ? (q._runScripts = e, k.enterTimeline("DisplayObject.performFrameNavigation", {instances:0})) : e = q._runScripts;
              v.DisplayObject._advancableInstances.forEach(function(a) {
                a._initFrame(b);
              });
              b && e && q._broadcastFrameEvent(g.Event.ENTER_FRAME);
              v.DisplayObject._advancableInstances.forEach(function(a) {
                a._constructFrame();
              });
              e ? (q._broadcastFrameEvent(g.Event.FRAME_CONSTRUCTED), v.DisplayObject._advancableInstances.forEach(function(a) {
                v.DisplayObjectContainer.isInstanceOf(a) && !a.parent && a._enqueueFrameScripts();
              }), a.display.DisplayObject._stage._enqueueFrameScripts(), v.MovieClip.runFrameScripts(), q._broadcastFrameEvent(g.Event.EXIT_FRAME)) : v.MovieClip.reset();
              b && (k.leaveTimeline(), q._runScripts = !0);
            };
            q._broadcastFrameEvent = function(a) {
              var b;
              switch(a) {
                case g.Event.ENTER_FRAME:
                ;
                case g.Event.FRAME_CONSTRUCTED:
                ;
                case g.Event.EXIT_FRAME:
                ;
                case g.Event.RENDER:
                  b = g.Event.getBroadcastInstance(a);
              }
              g.EventDispatcher.broadcastEventDispatchQueue.dispatchEvent(b);
            };
            q.prototype._setInitialName = function() {
              this._name = "instance" + a.display.DisplayObject._instanceID++;
            };
            q.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();
            };
            q.prototype._setDepth = function(a) {
              -1 < a ? this._setFlags(2048) : this._removeFlags(2048);
              this._depth = a;
            };
            q.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);
            };
            q.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);
            };
            q.prototype._setFlags = function(a) {
              this._displayObjectFlags |= a;
            };
            q.prototype._setDirtyFlags = function(a) {
              this._displayObjectFlags |= a;
              this._parent && this._parent._propagateFlagsUp(536870912);
            };
            q.prototype._toggleFlags = function(a, b) {
              this._displayObjectFlags = b ? this._displayObjectFlags | a : this._displayObjectFlags & ~a;
            };
            q.prototype._removeFlags = function(a) {
              this._displayObjectFlags &= ~a;
            };
            q.prototype._hasFlags = function(a) {
              return(this._displayObjectFlags & a) === a;
            };
            q.prototype._hasAnyFlags = function(a) {
              return!!(this._displayObjectFlags & a);
            };
            q.prototype._propagateFlagsUp = function(a) {
              if (!this._hasFlags(a)) {
                this._setFlags(a);
                var b = this._parent;
                b && b._propagateFlagsUp(a);
              }
            };
            q.prototype._propagateFlagsDown = function(a) {
              this._setFlags(a);
            };
            q.prototype._findNearestAncestor = function() {
              for (var a = this;a;) {
                if (!1 === a._hasFlags(128)) {
                  return a;
                }
                a = a._parent;
              }
              return null;
            };
            q.prototype._findFurthestAncestorOrSelf = function() {
              for (var a = this;a;) {
                if (!a._parent) {
                  return a;
                }
                a = a._parent;
              }
            };
            q.prototype._isAncestor = function(a) {
              for (;a;) {
                if (a === this) {
                  return!0;
                }
                a = a._parent;
              }
              return!1;
            };
            q._clampRotation = function(a) {
              a %= 360;
              180 < a ? a -= 360 : -180 > a && (a += 360);
              return a;
            };
            q._getAncestors = function(a, b) {
              var e = q._path;
              for (e.length = 0;a && a !== b;) {
                e.push(a), a = a._parent;
              }
              return e;
            };
            q.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;
            };
            q.prototype._getInvertedConcatenatedMatrix = function() {
              this._hasFlags(64) && (this._getConcatenatedMatrix().invertInto(this._invertedConcatenatedMatrix), this._removeFlags(64));
              return this._invertedConcatenatedMatrix;
            };
            q.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 = q._clampRotation(180 * this._skewY / Math.PI);
                this._removeFlags(8);
                this._setFlags(16);
                this._setDirtyFlags(1048576);
                this._invalidatePosition();
              }
            };
            q.prototype._getMatrix = function() {
              this._hasFlags(8) && (this._matrix.updateScaleAndRotation(this._scaleX, this._scaleY, this._skewX, this._skewY), this._removeFlags(8));
              return this._matrix;
            };
            q.prototype._getInvertedMatrix = function() {
              this._hasFlags(16) && (this._getMatrix().invertInto(this._invertedMatrix), this._removeFlags(16));
              return this._invertedMatrix;
            };
            q.prototype._getConcatenatedColorTransform = function() {
              if (!this.stage) {
                return this._colorTransform.clone();
              }
              if (this._hasFlags(128)) {
                var b = this._findNearestAncestor(), e = q._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;
            };
            q.prototype._setColorTransform = function(a) {
              this._colorTransform.copyFrom(a);
              this._colorTransform.convertToFixedPoint();
              this._propagateFlagsDown(128);
              this._setDirtyFlags(67108864);
            };
            q.prototype._invalidateFillAndLineBounds = function(a, b) {
              this._propagateFlagsUp((b ? 2 : 0) | (a ? 4 : 0));
            };
            q.prototype._invalidateParentFillAndLineBounds = function(a, b) {
              this._parent && this._parent._invalidateFillAndLineBounds(a, b);
            };
            q.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;
            };
            q.prototype._getChildBounds = function(a, b) {
            };
            q.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;
            };
            q.prototype._stopTimelineAnimation = function() {
              this._removeFlags(4096);
            };
            q.prototype._invalidateMatrix = function() {
              this._setDirtyFlags(1048576);
              this._setFlags(24);
              this._invalidatePosition();
            };
            q.prototype._invalidatePosition = function() {
              this._propagateFlagsDown(96);
              this._invalidateParentFillAndLineBounds(!0, !0);
            };
            q.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, d = 0;d < f.length;d++) {
                  var g = f[d], h;
                  switch(g.type) {
                    case 0:
                      h = a.filters.DropShadowFilter.FromUntyped(g);
                      break;
                    case 1:
                      h = a.filters.BlurFilter.FromUntyped(g);
                      break;
                    case 2:
                      h = a.filters.GlowFilter.FromUntyped(g);
                      break;
                    case 3:
                      h = a.filters.BevelFilter.FromUntyped(g);
                      break;
                    case 4:
                      h = a.filters.GradientGlowFilter.FromUntyped(g);
                      break;
                    case 5:
                      h = a.filters.ConvolutionFilter.FromUntyped(g);
                      break;
                    case 6:
                      h = a.filters.ColorMatrixFilter.FromUntyped(g);
                      break;
                    case 7:
                      h = a.filters.GradientBevelFilter.FromUntyped(g);
                  }
                  c.push(h);
                }
                this._filters = c;
                this._setDirtyFlags(1073741824);
              } else {
                e && (this._filters = null, this._setDirtyFlags(1073741824));
              }
              if (b.flags & 512 || e) {
                h = a.display.BlendMode.fromNumber(void 0 === b.blendMode ? 1 : b.blendMode), h !== this._blendMode && (this._blendMode = h, this._setDirtyFlags(1073741824));
              }
              if (b.flags & 1024 || e) {
                h = 0 < b.bmpCache, h !== this._hasFlags(65536) && (this._toggleFlags(65536, h), this._setDirtyFlags(1073741824));
              }
              if (b.flags & 8192 || e) {
                b = 0 !== b.visibility, b !== this._hasFlags(1) && (this._toggleFlags(1, b), this._setDirtyFlags(1073741824));
              }
            };
            q.prototype._propagateEvent = function(a) {
              this.visit(function(b) {
                b.dispatchEvent(a);
                return 0;
              }, 0);
            };
            Object.defineProperty(q.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});
            q.prototype._getX = function() {
              var a = this._matrix.tx;
              if (this._canHaveTextContent()) {
                var b = this._getContentBounds(), a = a + b.xMin
              }
              return a / 20;
            };
            Object.defineProperty(q.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});
            q.prototype._getY = function() {
              var a = this._matrix.ty;
              if (this._canHaveTextContent()) {
                var b = this._getContentBounds(), a = a + b.yMin
              }
              return a / 20;
            };
            Object.defineProperty(q.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(q.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(q.prototype, "scaleZ", {get:function() {
              return this._scaleZ;
            }, set:function(a) {
              u("public DisplayObject::set scaleZ");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "rotation", {get:function() {
              return this._rotation;
            }, set:function(a) {
              a = +a;
              this._stopTimelineAnimation();
              a = q._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(q.prototype, "rotationX", {get:function() {
              return this._rotationX;
            }, set:function(a) {
              u("public DisplayObject::set rotationX");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "rotationY", {get:function() {
              return this._rotationY;
            }, set:function(a) {
              u("public DisplayObject::set rotationY");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "rotationZ", {get:function() {
              return this._rotationZ;
            }, set:function(a) {
              u("public DisplayObject::set rotationZ");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "width", {get:function() {
              return this._getWidth();
            }, set:function(a) {
              this._setWidth(a);
            }, enumerable:!0, configurable:!0});
            q.prototype._getWidth = function() {
              return this._getTransformedBounds(this._parent, !0).width / 20;
            };
            q.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(q.prototype, "height", {get:function() {
              return this._getHeight();
            }, set:function(a) {
              this._setHeight(a);
            }, enumerable:!0, configurable:!0});
            q.prototype._getHeight = function() {
              return this._getTransformedBounds(this._parent, !0).height / 20;
            };
            q.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(q.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(q.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});
            q.prototype._getTransform = function() {
              return new a.geom.Transform(this);
            };
            q.prototype.destroy = function() {
              this._setFlags(512);
            };
            Object.defineProperty(q.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(q.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(q.prototype, "name", {get:function() {
              return this._name;
            }, set:function(a) {
              p(a, "name");
              this._name = c(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "parent", {get:function() {
              return this._parent;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.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(q.prototype, "blendMode", {get:function() {
              return this._blendMode;
            }, set:function(a) {
              this._stopTimelineAnimation();
              a = c(a);
              a !== this._blendMode && (0 > v.BlendMode.toNumber(a) && h("ArgumentError", k.Errors.InvalidEnumError, "blendMode"), this._blendMode = a, this._setDirtyFlags(1073741824));
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "scale9Grid", {get:function() {
              return this._getScale9Grid();
            }, set:function(a) {
              this._stopTimelineAnimation();
              this._scale9Grid = s.FromRectangle(a);
              this._setDirtyFlags(1073741824);
            }, enumerable:!0, configurable:!0});
            q.prototype._getScale9Grid = function() {
              return this._scale9Grid ? a.geom.Rectangle.FromBounds(this._scale9Grid) : null;
            };
            Object.defineProperty(q.prototype, "cacheAsBitmap", {get:function() {
              return this._getCacheAsBitmap();
            }, set:function(a) {
              this._hasFlags(65536) || (this._toggleFlags(65536, !!a), this._setDirtyFlags(1073741824));
            }, enumerable:!0, configurable:!0});
            q.prototype._getCacheAsBitmap = function() {
              return this._filters && 0 < this._filters.length || this._hasFlags(65536);
            };
            Object.defineProperty(q.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});
            q.prototype._getFilters = function() {
              return this._filters ? this._filters.map(function(a) {
                return a.clone();
              }) : [];
            };
            Object.defineProperty(q.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(q.prototype, "z", {get:function() {
              return this._z;
            }, set:function(a) {
              this._z = +a;
              u("public DisplayObject::set z");
            }, enumerable:!0, configurable:!0});
            q.prototype.getBounds = function(a) {
              return m.Rectangle.FromBounds(this._getTransformedBounds(a || this, !0));
            };
            q.prototype.getRect = function(a) {
              return m.Rectangle.FromBounds(this._getTransformedBounds(a || this, !1));
            };
            q.prototype.globalToLocal = function(a) {
              return this._getInvertedConcatenatedMatrix().transformPointInPlace(a.clone().toTwips()).round().toPixels();
            };
            q.prototype.localToGlobal = function(a) {
              return this._getConcatenatedMatrix().transformPointInPlace(a.clone().toTwips()).round().toPixels();
            };
            q.prototype.globalToLocal3D = function(a) {
              u("public DisplayObject::globalToLocal3D");
              return null;
            };
            q.prototype.localToGlobal3D = function(a) {
              u("public DisplayObject::localToGlobal3D");
              return null;
            };
            q.prototype.local3DToGlobal = function(a) {
              u("public DisplayObject::local3DToGlobal");
              return null;
            };
            q.prototype.visit = function(a, b, e) {
              void 0 === e && (e = 0);
              var c, f, d = b & 8;
              for (c = [this];0 < c.length;) {
                f = c.pop();
                var g = 0, g = b & 16 && !f._hasAnyFlags(e) ? 2 : a(f);
                if (0 === g) {
                  if (f = f._children) {
                    for (var g = f.length, h = 0;h < g;h++) {
                      c.push(f[d ? h : g - 1 - h]);
                    }
                  }
                } else {
                  if (1 === g) {
                    break;
                  }
                }
              }
            };
            Object.defineProperty(q.prototype, "loaderInfo", {get:function() {
              var a = this.root;
              return a ? a._loaderInfo : null;
            }, enumerable:!0, configurable:!0});
            q.prototype._canHaveGraphics = function() {
              return!1;
            };
            q.prototype._getGraphics = function() {
              return null;
            };
            q.prototype._canHaveTextContent = function() {
              return!1;
            };
            q.prototype._getTextContent = function() {
              return null;
            };
            q.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;
            };
            q.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);
            };
            q.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);
            };
            q.prototype.hitTestPoint = function(a, b, e) {
              return!!this._containsGlobalPoint(20 * +a | 0, 20 * +b | 0, e ? 2 : 0, null);
            };
            q.prototype._containsPoint = function(a, b, e, c, f, d) {
              var g = this._boundsAndMaskContainPoint(a, b, e, c, f);
              if (0 === g || 2 > f) {
                return g;
              }
              (a = this._containsPointDirectly(e, c, a, b)) && d && (5 === f ? d[0] = this : (4 === f || v.InteractiveObject.isType(this) && this._mouseEnabled) && d.push(this));
              return a ? 2 : g;
            };
            q.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);
            };
            q.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;
            };
            q.prototype._containsPointDirectly = function(a, b, e, c) {
              return!1;
            };
            Object.defineProperty(q.prototype, "scrollRect", {get:function() {
              return this._getScrollRect();
            }, set:function(a) {
              this._scrollRect = a ? a.clone() : null;
              t("public DisplayObject::set scrollRect");
            }, enumerable:!0, configurable:!0});
            q.prototype._getScrollRect = function() {
              return this._scrollRect ? this._scrollRect.clone() : null;
            };
            Object.defineProperty(q.prototype, "opaqueBackground", {get:function() {
              return this._opaqueBackground;
            }, set:function(a) {
              this._opaqueBackground = a;
            }, enumerable:!0, configurable:!0});
            q.prototype._getDistance = function(a) {
              for (var b = 0, e = this;e !== a;) {
                b++, e = e._parent;
              }
              return b;
            };
            q.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;
            };
            q.prototype._getLocalMousePosition = function() {
              var b = a.ui.Mouse._currentPosition;
              this._parent && (b = this._parent.globalToLocal(a.ui.Mouse._currentPosition));
              return b;
            };
            Object.defineProperty(q.prototype, "mouseX", {get:function() {
              return this._getLocalMousePosition().x;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "mouseY", {get:function() {
              return this._getLocalMousePosition().y;
            }, enumerable:!0, configurable:!0});
            q.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;
            };
            q.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 g = f._getDistance(e);
                if (g > a) {
                  return 2;
                }
                g = b + d.StringUtilities.multiple(" ", g);
                c.writeObject(g + f.debugName() + ", bounds: " + f.getBounds(null).toString(), {"...":{value:f}});
                return 0;
              }, 0);
            };
            q.prototype._addReference = function() {
              this._referenceCount++;
            };
            q.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(q.prototype, "accessibilityProperties", {get:function() {
              return this._accessibilityProperties;
            }, set:function(a) {
              this._accessibilityProperties = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "blendShader", {set:function(a) {
              u("public DisplayObject::set blendShader");
            }, enumerable:!0, configurable:!0});
            q._syncID = 0;
            q._instanceID = 1;
            q.classInitializer = function() {
              this.reset();
            };
            q.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 = v.BlendMode.NORMAL;
              this._accessibilityProperties = this._loaderInfo = this._scale9Grid = null;
              this._fillBounds = new s(0, 0, 0, 0);
              this._lineBounds = new s(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);
            };
            q.classSymbols = null;
            q.instanceSymbols = null;
            q._runScripts = !0;
            q._path = [];
            return q;
          }(a.events.EventDispatcher);
          v.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(v) {
          var u = d.AVM2.Runtime.asCoerceString, t = d.AVM2.Runtime.throwError, l = function(c) {
            function h(a, c, d) {
              void 0 === a && (a = null);
              void 0 === c && (c = "auto");
              void 0 === d && (d = !1);
              v.DisplayObject.instanceConstructorNoInitialize.call(this);
              this._symbol ? this._bitmapData.class.instanceConstructorNoInitialize.call(this._bitmapData) : this.bitmapData = a;
              this._pixelSnapping = u(c);
              this._smoothing = !!d;
            }
            __extends(h, c);
            Object.defineProperty(h.prototype, "pixelSnapping", {get:function() {
              return this._pixelSnapping;
            }, set:function(a) {
              0 > v.PixelSnapping.toNumber(a) && t("ArgumentError", k.Errors.InvalidEnumError, "pixelSnapping");
              this._pixelSnapping = u(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "smoothing", {get:function() {
              return this._smoothing;
            }, set:function(a) {
              this._smoothing = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.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});
            h.prototype._getContentBounds = function(a) {
              return this._bitmapData ? this._bitmapData._getContentBounds() : new d.Bounds(0, 0, 0, 0);
            };
            h.prototype._containsPointDirectly = function(a, c, d, g) {
              return!0;
            };
            h.classInitializer = null;
            h.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);
              }
            };
            h.classSymbols = null;
            h.instanceSymbols = null;
            return h;
          }(a.display.DisplayObject);
          v.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 u = d.Debug.warning, t = 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 = t;
          t = 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 g = c.getSymbolById(a[l]);
                  g ? d.push(g.getSharedInstance()) : (65535 !== a[l] && u("Bitmap symbol " + a[l] + " required by shape, but not defined."), d.push(null));
                }
              }
            };
            return c;
          }(d.Timeline.DisplaySymbol);
          k.ShapeSymbol = t;
        })(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 u = d.Debug.notImplemented, t = d.Debug.somewhatImplemented, l = a.display.DisplayObject, c = a.events, h = 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 d = this._tabEnabled;
              this._tabEnabled = a;
              d !== 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 d = this._tabIndex;
              this._tabIndex = a;
              d !== 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) {
              t("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) {
              u("public flash.display.InteractiveObject::set accessibilityImplementation");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "softKeyboardInputAreaOfInterest", {get:function() {
              return this._softKeyboardInputAreaOfInterest;
            }, set:function(a) {
              u("public flash.display.InteractiveObject::set softKeyboardInputAreaOfInterest");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "needsSoftKeyboard", {get:function() {
              return this._needsSoftKeyboard;
            }, set:function(a) {
              u("public flash.display.InteractiveObject::set needsSoftKeyboard");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "contextMenu", {get:function() {
              return this._contextMenu;
            }, set:function(a) {
              t("public flash.display.InteractiveObject::set contextMenu");
              this._contextMenu = a;
            }, enumerable:!0, configurable:!0});
            d.prototype.requestSoftKeyboard = function() {
              u("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 = h;
        })(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 u = d.Debug.notImplemented, t = function(a) {
            function d(a, c, h, g) {
              void 0 === a && (a = null);
              void 0 === c && (c = null);
              void 0 === h && (h = null);
              void 0 === g && (g = null);
              k.InteractiveObject.instanceConstructorNoInitialize.call(this);
              a && (this.upState = a);
              c && (this.overState = c);
              h && (this.downState = h);
              g && (this.hitTestState = g);
              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) {
              u("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() {
              u("public flash.display.SimpleButton::get soundTransform");
            }, set:function(a) {
              u("public flash.display.SimpleButton::set soundTransform");
            }, enumerable:!0, configurable:!0});
            d.prototype._containsPoint = function(a, c, d, g, 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 = t;
          var l = function() {
            return function(a, d) {
              this.symbol = a;
              this.placeObjectTag = d;
            };
          }();
          k.ButtonState = l;
          t = function(c) {
            function h(d, h) {
              c.call(this, d, a.display.SimpleButton, !0);
              this.hitTestState = this.downState = this.overState = this.upState = null;
              this.loaderInfo = h;
            }
            __extends(h, c);
            h.FromData = function(c, s) {
              var m = new h(c, s);
              s.actionScriptVersion === k.ActionScriptVersion.ACTIONSCRIPT2 && (m.isAVM1Object = !0);
              var g = c.states, f = null, b, e;
              for (e in g) {
                var q = g[e];
                if (1 === q.length) {
                  if (b = q[0], f = s.getSymbolById(b.symbolId), !f) {
                    continue;
                  }
                } else {
                  b = {flags:1, depth:1}, f = new a.display.SpriteSymbol({id:-1, className:null}, s), f.frames.push(new d.SWF.SWFFrame(q));
                }
                m[e + "State"] = new l(f, b);
              }
              return m;
            };
            return h;
          }(d.Timeline.DisplaySymbol);
          k.ButtonSymbol = t;
        })(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(v) {
          var u = d.Debug.notImplemented, t = d.AVM2.Runtime.asCoerceString, l = d.AVM2.Runtime.throwError, c = d.AVM2.Runtime.checkParameterType, h = d.NumberUtilities.clamp, p = d.AVM2.ABC.Multiname, s = a.events, m = function(d) {
            function f() {
              v.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[p.getPublicQualifiedName(c._name)] = c);
                  c._setFlags(256);
                  if (c._symbol && c._symbol.isAVM1Object) {
                    try {
                      c.dispatchEvent(s.Event.getInstance(s.Event.AVM1_INIT));
                    } catch (f) {
                      console.warn("caught error under DisplayObjectContainer AVM1_INIT event: ", f);
                    }
                    try {
                      c.dispatchEvent(s.Event.getInstance(s.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(s.Event.getInstance(s.Event.ADDED, !0));
                  } catch (g) {
                    console.warn("caught error under DisplayObject ADDED event: ", g);
                  }
                  if (c.stage) {
                    try {
                      c.dispatchEvent(s.Event.getInstance(s.Event.ADDED_TO_STAGE));
                    } catch (h) {
                      console.warn("caught error under DisplayObject ADDED_TO_STAGE event: ", h);
                    }
                  }
                }
              }
            };
            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) || v.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() {
              u("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(s.Event.getInstance(s.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, h(e, 0, d.length - 1)), b;
              }
              b._parent && (f.prototype.removeChildAt.call(b._parent, b._parent.getChildIndex(b)), e = h(e, 0, d.length));
              for (var g = d.length - 1;g >= e;g--) {
                d[g]._index++;
              }
              d.splice(e, 0, b);
              b._setParent(this, -1);
              b._index = e;
              b._invalidatePosition();
              this._invalidateChildren();
              b._addReference();
              b.dispatchEvent(s.Event.getInstance(s.Event.ADDED, !0));
              b.stage && b._propagateEvent(s.Event.getInstance(s.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, g = f;0 <= g;g--) {
                var h = c[g];
                if (-1 < h._depth) {
                  if (h._depth < e) {
                    d = g + 1;
                    break;
                  }
                  d = g;
                }
              }
              if (d > f) {
                c.push(a), a._index = d;
              } else {
                for (c.splice(d, 0, a), g = d;g < c.length;g++) {
                  c[g]._index = g;
                }
              }
              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(s.Event.getInstance(s.Event.REMOVED, !0)), this.stage && c._propagateEvent(s.Event.getInstance(s.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 g = e[d];
                if (!(0 > g._depth)) {
                  if (g._depth <= a) {
                    return f ? c : d;
                  }
                  f = !1;
                }
              }
              return 0;
            };
            f.prototype.getChildByName = function(a) {
              a = t(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, g) {
              return this._containsPointImpl(a, e, c, f, d, g, !1);
            };
            f.prototype._containsPointImpl = function(a, e, c, f, d, g, h) {
              var l;
              if (!h && (l = this._boundsAndMaskContainPoint(a, e, c, f, d), 0 === l || 2 > d)) {
                return l;
              }
              h = !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, g), 2 === l)) {
                  if (3 > d) {
                    return l;
                  }
                  h = !0;
                  if (!(4 <= d)) {
                    if (!this._mouseEnabled) {
                      return g.length = 0, l;
                    }
                    this._mouseChildren || (g[0] = this);
                    if (0 !== g.length) {
                      return 2;
                    }
                  }
                }
              }
              if (h && 4 > d) {
                return 3 === d && 0 === g.length && (g[0] = this), 2;
              }
              (a = this._containsPointDirectly(c, f, a, e)) && (5 === d ? g[0] = this : (4 === d || g && this._mouseEnabled) && g.push(this));
              return h || a ? 2 : 0;
            };
            f.prototype._getUnclippedChildren = function(a, e, c) {
              var f = this._children;
              if (!f) {
                return null;
              }
              for (var d, g = 0;f && g < f.length;g++) {
                var h = f[g];
                -1 !== h._clipDepth ? (d || (d = f.slice(0, g)), 2 !== a && (h._containsGlobalPoint(e, c, 2, null) || (g = this.getClipDepthIndex(h._clipDepth)))) : d && d.push(h);
              }
              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) {
              u("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);
          v.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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = t;
        })(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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = t;
        })(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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = t;
        })(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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = t;
        })(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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = t;
        })(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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = t;
        })(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, h, l, k) {
              void 0 === a && (a = null);
              void 0 === h && (h = null);
              void 0 === l && (l = !0);
              void 0 === k && (k = !1);
              this.bitmapData = a;
              this.matrix = h;
              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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = t;
        })(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 r = d.AVM2.Runtime.asCoerceString, t = function(a) {
            function c(a, c, d, l, g, 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 === g && (g = null);
              void 0 === f && (f = "pad");
              void 0 === b && (b = "rgb");
              void 0 === e && (e = 0);
              this.type = r(a);
              this.colors = c;
              this.alphas = d;
              this.ratios = l;
              this.matrix = g;
              this.spreadMethod = f;
              this.interpolationMethod = r(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 = t;
        })(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 r = d.AVM2.Runtime.asCoerceString, t = 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 = r(d);
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.ASNative);
          k.GraphicsPath = t;
        })(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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = t;
        })(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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = t;
        })(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, h) {
              void 0 === a && (a = 0);
              void 0 === h && (h = 1);
              this.color = a >>> 0;
              this.alpha = +h;
            }
            __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 r = d.AVM2.Runtime.asCoerceString, t = function(a) {
            function c(a, c, d, l, g, f, b) {
              void 0 === a && (a = NaN);
              void 0 === c && (c = !1);
              void 0 === d && (d = "normal");
              void 0 === l && (l = "none");
              void 0 === g && (g = "round");
              void 0 === f && (f = 3);
              void 0 === b && (b = null);
              this.thickness = +a;
              this.pixelHinting = !!c;
              this.scaleMode = r(d);
              this.caps = r(l);
              this.joints = r(g);
              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 = t;
        })(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 r = d.Debug.dummyConstructor, t = d.AVM2.Runtime.asCoerceString, l = function(a) {
            function d(a, c, h, g) {
              void 0 === g && (g = "none");
              t(g);
              r("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(r) {
        (function(v) {
          function u(a, b, e, c) {
            a = e - a;
            b = c - b;
            return a * a + b * b;
          }
          function t(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 : t(a, b, e, c);
          }
          function c(a, b, e, c, f) {
            var d = f * f, g = 1 - f, h = g * g;
            return a * g * h + 3 * b * f * h + 3 * e * g * d + c * f * d;
          }
          function h(a, b, e, f) {
            var d = b - a, g;
            g = 2 * (e - b);
            var h = f - e;
            d + h === g && (h *= 1.0001);
            var l = 2 * d - g, n = g - 2 * d, n = Math.sqrt(n * n - 4 * d * (d - g + h));
            g = 2 * (d - g + h);
            d = (l + n) / g;
            l = (l - n) / g;
            n = [];
            0 <= d && 1 >= d && n.push(Math.round(c(a, b, e, f, d)));
            0 <= l && 1 >= l && n.push(Math.round(c(a, b, e, f, l)));
            return n;
          }
          function p(a, b, e, c, f, d, g, h, l) {
            function n(a) {
              return a * (p + a * (u + a * x)) + b - l;
            }
            function q(b) {
              0 > b ? b = 0 : 1 < b && (b = 1);
              return a + b * (k + b * (r + b * t));
            }
            function m(a, b, e, c) {
              if (!(Math.abs(e - b) <= c)) {
                var f = .5 * (b + e);
                0 >= a(b) * a(e) ? (v = b, L = e) : (m(a, b, f, c), m(a, f, e, c));
              }
            }
            var k = 3 * (e - a), p = 3 * (c - b), r = 3 * (f - e) - k, u = 3 * (d - c) - p, t = g - a - k - r, x = h - b - p - u, v = 0, L = 1;
            m(n, 0, 1, .05);
            d = s(v, L, n);
            if (1E-5 < Math.abs(n(d))) {
              return[];
            }
            e = [];
            1 >= d && e.push(q(d));
            c = x;
            f = d * c + u;
            g = f * f - 4 * c * (d * f + p);
            if (0 > g) {
              return e;
            }
            g = Math.sqrt(g);
            c = 1 / (c + c);
            d = (g - f) * c;
            c *= -f - g;
            0 <= d && 1 >= d && e.push(q(d));
            0 <= c && 1 >= c && e.push(q(c));
            return e;
          }
          function s(a, b, e) {
            var c, f, d, g, h, l, n = a;
            f = e(a);
            if (0 === f) {
              return a;
            }
            g = e(b);
            if (0 === g) {
              return b;
            }
            if (0 < g * f) {
              return a;
            }
            for (var q = 0, m = 0;50 > m;++m) {
              q++;
              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 = g, g = b);
              b = d - f;
              l = g - d;
              h = g - f;
              if (g * h < 2 * d * b) {
                b = c, g = d;
              } else {
                g = (c - a) / b;
                b = (b - l) / (l * h);
                b = a - g * f * (1 - b * d);
                g = e(b);
                if (0 === g || 1E-6 > Math.abs(b - n)) {
                  return b;
                }
                n = b;
                0 > g * f || (a = b, f = g, b = c, g = 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 g = d.Debug.notImplemented, f = d.AVM2.Runtime.asCoerceString, b = d.AVM2.Runtime.throwError, e = d.NumberUtilities.clamp, q = d.Bounds, n = r.display.GradientType, x = r.display.SpreadMethod, L = r.display.InterpolationMethod, A = r.display.LineScaleMode, H = r.display.CapsStyle, K = r.display.JointStyle, F = d.ShapeData, J = function(a) {
            function s() {
              this._id = r.display.DisplayObject.getNextSyncID();
              this._graphicsData = new F;
              this._textures = [];
              this._fillBounds = new q(134217728, 134217728, 134217728, 134217728);
              this._lineBounds = new q(134217728, 134217728, 134217728, 134217728);
              this._lastX = this._lastY = 0;
              this._boundsIncludeLastCoordinates = !0;
              this._parent = null;
              this._topLeftStrokeWidth = this._bottomRightStrokeWidth = 0;
              this._isDirty = !0;
            }
            __extends(s, a);
            s.FromData = function(a) {
              var b = new r.display.Graphics;
              b._graphicsData = F.FromPlainObject(a.shape);
              a.lineBounds && (b._lineBounds.copyFrom(a.lineBounds), b._fillBounds.copyFrom(a.fillBounds || a.lineBounds));
              return b;
            };
            s.prototype.getGraphicsData = function() {
              return this._graphicsData;
            };
            s.prototype.getUsedTextures = function() {
              return this._textures;
            };
            s.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;
              }
            };
            s.prototype._setParent = function(a) {
              this._parent = a;
            };
            s.prototype._invalidate = function() {
              this._parent._invalidateFillAndLineBounds(!0, !0);
              this._parent._propagateFlagsUp(536870912);
              this._isDirty = !0;
            };
            s.prototype._getContentBounds = function(a) {
              void 0 === a && (a = !0);
              return a ? this._lineBounds : this._fillBounds;
            };
            s.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());
            };
            s.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);
            };
            s.prototype.beginGradientFill = function(a, b, e, c, f, d, g, h) {
              void 0 === f && (f = null);
              void 0 === d && (d = "pad");
              void 0 === g && (g = "rgb");
              void 0 === h && (h = 0);
              this._writeGradientStyle(2, a, b, e, c, f, d, g, h, !1);
            };
            s.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);
            };
            s.prototype.endFill = function() {
              this._graphicsData.endFill();
            };
            s.prototype.lineStyle = function(a, b, c, d, g, h, l, n) {
              void 0 === b && (b = 0);
              void 0 === c && (c = 1);
              void 0 === d && (d = !1);
              void 0 === g && (g = "normal");
              void 0 === h && (h = null);
              void 0 === l && (l = null);
              void 0 === n && (n = 3);
              a = +a;
              b = b >>> 0 & 16777215;
              c = Math.round(255 * e(+c, -1, 1));
              d = !!d;
              g = f(g);
              h = f(h);
              l = f(l);
              n = e(+n | 0, 0, 255);
              isNaN(a) ? (this._setStrokeWidth(0), this._graphicsData.endLine()) : (a = 20 * e(+a, 0, 255) | 0, this._setStrokeWidth(a), g = A.toNumber(f(g)), 0 > g && (g = A.toNumber(A.NORMAL)), h = H.toNumber(f(h)), 0 > h && (h = H.toNumber(H.ROUND)), l = K.toNumber(f(l)), 0 > l && (l = K.toNumber(K.ROUND)), this._graphicsData.lineStyle(a, b << 8 | c, d, g, h, l, n));
            };
            s.prototype.lineGradientStyle = function(a, b, e, c, f, d, g, h) {
              void 0 === f && (f = null);
              void 0 === d && (d = "pad");
              void 0 === g && (g = "rgb");
              void 0 === h && (h = 0);
              this._writeGradientStyle(6, a, b, e, c, f, d, g, h, !this._graphicsData.hasLines);
            };
            s.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);
            };
            s.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();
            };
            s.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 g = e / 2, h = c / 2;
                f > g && (f = g);
                d > h && (d = h);
                g === f && h === d ? f === d ? this.drawCircle(a + f, b + d, f) : this.drawEllipse(a, b, 2 * f, 2 * d) : (e = a + e, c = b + c, g = a + f, f = e - f, h = b + d, d = c - d, this.moveTo(e, d), this.curveTo(e, c, f, c), this.lineTo(g, c), this.curveTo(a, c, a, d), this.lineTo(a, h), this.curveTo(a, b, g, b), this.lineTo(f, b), this.curveTo(e, b, e, h), this.lineTo(e, d));
              } else {
                this.drawRect(a, b, e, c);
              }
            };
            s.prototype.drawRoundRectComplex = function(a, b, e, c, f, d, g, h) {
              a = +a;
              b = +b;
              e = +e;
              c = +c;
              f = +f;
              d = +d;
              g = +g;
              h = +h;
              if (f | d | g | h) {
                e = a + e;
                c = b + c;
                var l = a + f;
                this.moveTo(e, c - h);
                this.curveTo(e, c, e - h, c);
                this.lineTo(a + g, c);
                this.curveTo(a, c, a, c - g);
                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 - h);
              } else {
                this.drawRect(a, b, e, c);
              }
            };
            s.prototype.drawCircle = function(a, b, e) {
              e = +e;
              this.drawEllipse(+a - e, +b - e, 2 * e, 2 * e);
            };
            s.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 g = 0, h = 1, l = 0, n = 0;4 > n;n++) {
                var q = g + Math.PI / 2, g = 4 / 3 * Math.tan((q - g) / 4), m = f - l * g * e, k = d + h * g * c, h = Math.cos(q), l = Math.sin(q), f = a + h * e, d = b + l * c;
                this.cubicCurveTo(m, k, f + l * g * e, d - h * g * c, f, d);
                g = q;
              }
            };
            s.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;
            };
            s.prototype.lineTo = function(a, b) {
              a = 20 * a | 0;
              b = 20 * b | 0;
              this._graphicsData.lineTo(a, b);
              this._applyLastCoordinates(a, b);
              this._invalidate();
            };
            s.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();
            };
            s.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 g = this._lastX, l = this._lastY;
              if (a < g || e < g || a > f || e > f) {
                for (a = h(g, a, e, f), e = a.length;e--;) {
                  this._extendBoundsByX(a[e] | 0);
                }
              }
              if (b < l || c < l || b > d || c > d) {
                for (a = h(l, b, c, d), e = a.length;e--;) {
                  this._extendBoundsByY(a[e] | 0);
                }
              }
              this._applyLastCoordinates(f, d);
              this._invalidate();
            };
            s.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();
            };
            s.prototype.drawPath = function(a, b, e) {
              void 0 === e && (e = "evenOdd");
              f(e);
              g("public flash.display.Graphics::drawPath");
            };
            s.prototype.drawTriangles = function(a, b, e, c) {
              void 0 === c && (c = "none");
              f(c);
              g("public flash.display.Graphics::drawTriangles");
            };
            s.prototype.drawGraphicsData = function(a) {
              g("public flash.display.Graphics::drawGraphicsData");
            };
            s.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;
            };
            s.prototype._fillContainsPoint = function(a, b, e) {
              for (var c = this._graphicsData, f = c.commands, d = c.commandsPosition, g = c.coordinates, c = c.morphCoordinates, h = 0, l = 0, n = 0, q = 0, k = 0, s, r, u = !1, x = !1, v = 0, L = 0, A = !1, H = 0;H < d;H++) {
                s = f[H];
                switch(s) {
                  case 9:
                    u && x && m(a, b, l, n, v, L) && (A = !A);
                    u = !0;
                    l = v = g[h++];
                    n = L = g[h++];
                    e && (l = v += (c[h - 2] - v) * e, n = L += (c[h - 2] - L) * e);
                    continue;
                  case 10:
                    q = g[h++];
                    k = g[h++];
                    e && (q += (c[h - 2] - q) * e, k += (c[h - 1] - k) * e);
                    x && m(a, b, l, n, q, k) && (A = !A);
                    break;
                  case 11:
                    s = g[h++];
                    r = g[h++];
                    q = g[h++];
                    k = g[h++];
                    e && (s += (c[h - 4] - s) * e, r += (c[h - 3] - r) * e, q += (c[h - 2] - q) * e, k += (c[h - 1] - k) * e);
                    var K;
                    if (K = x) {
                      if (r > b === n > b && k > b === n > b) {
                        K = !1;
                      } else {
                        if (l >= a && s >= a && q >= a) {
                          K = !0;
                        } else {
                          K = n - 2 * r + k;
                          r = 2 * (r - n);
                          var F = r * r - 4 * K * (n - b);
                          0 > F ? K = !1 : (F = Math.sqrt(F), K = 1 / (K + K), n = (F - r) * K, r = (-r - F) * K, K = !1, 0 <= n && 1 >= n && t(l, s, q, n) > a && (K = !K), 0 <= r && 1 >= r && t(l, s, q, r) > a && (K = !K));
                        }
                      }
                    }
                    K && (A = !A);
                    break;
                  case 12:
                    s = g[h++];
                    r = g[h++];
                    var F = g[h++], J = g[h++], q = g[h++], k = g[h++];
                    e && (s += (c[h - 6] - s) * e, r += (c[h - 5] - r) * e, F += (c[h - 4] - F) * e, J += (c[h - 3] - J) * e, q += (c[h - 2] - q) * e, k += (c[h - 1] - k) * e);
                    if (K = x) {
                      K = a;
                      var M = n > b;
                      if (r > b === M && J > b === M && k > b === M) {
                        K = !1;
                      } else {
                        if (l < K && s < K && F < K && q < K) {
                          K = !1;
                        } else {
                          M = !1;
                          l = p(l, n, s, r, F, J, q, k, b);
                          for (s = l.length;s;s--) {
                            l[s] >= K && (M = !M);
                          }
                          K = M;
                        }
                      }
                    }
                    K && (A = !A);
                    break;
                  case 1:
                  ;
                  case 2:
                  ;
                  case 3:
                  ;
                  case 4:
                    u && x && m(a, b, l, n, v, L) && (A = !A);
                    if (A) {
                      return!0;
                    }
                    u = !1;
                    x = 4 !== s;
                    break;
                  case 5:
                    h++;
                }
                l = q;
                n = k;
              }
              u && x && m(a, b, l, n, v, L) && (A = !A);
              return A;
            };
            s.prototype._linesContainsPoint = function(a, b, e) {
              for (var f = this._graphicsData, d = f.commands, g = f.commandsPosition, n = f.coordinates, f = f.morphCoordinates, q = 0, m = 0, k = 0, p = 0, s = 0, r, x, v, L, A, H = 0, K = r = 0, F = 0, J = 0, M = 0, D = 0, ia = 0;ia < g;ia++) {
                switch(d[ia]) {
                  case 9:
                    m = n[q++];
                    k = n[q++];
                    e && (m += (f[q - 2] - m) * e, k += (f[q - 1] - k) * e);
                    continue;
                  case 10:
                    if (0 === H) {
                      m = n[q++];
                      k = n[q++];
                      e && (m += (f[q - 2] - m) * e, k += (f[q - 1] - k) * e);
                      continue;
                    }
                    p = n[q++];
                    s = n[q++];
                    e && (p += (f[q - 2] - p) * e, s += (f[q - 1] - s) * e);
                    if (m === p && k === s) {
                      break;
                    }
                    if (J < m && J < p || F > m && F > p || D < k && D < s || M > k && M > s) {
                      break;
                    }
                    if (p === m || s === k) {
                      return!0;
                    }
                    A = ((a - m) * (p - m) + (b - k) * (s - k)) / u(m, k, p, s);
                    if (0 > A) {
                      if (u(a, b, m, k) <= K) {
                        return!0;
                      }
                      break;
                    }
                    if (1 < A) {
                      if (u(a, b, p, s) <= K) {
                        return!0;
                      }
                      break;
                    }
                    if (u(a, b, m + A * (p - m), k + A * (s - k)) <= K) {
                      return!0;
                    }
                    break;
                  case 11:
                    if (0 === H) {
                      q += 2;
                      m = n[q++];
                      k = n[q++];
                      e && (m += (f[q - 2] - m) * e, k += (f[q - 1] - k) * e);
                      continue;
                    }
                    r = n[q++];
                    x = n[q++];
                    p = n[q++];
                    s = n[q++];
                    e && (r += (f[q - 4] - r) * e, x += (f[q - 3] - x) * e, p += (f[q - 2] - p) * e, s += (f[q - 1] - s) * e);
                    var ga = l(m, r, p);
                    if (J < m && J < ga && J < p || F > m && F > ga && F > p) {
                      break;
                    }
                    ga = l(k, x, s);
                    if (D < k && D < ga && D < s || M > k && M > ga && M > s) {
                      break;
                    }
                    for (A = 0;1 > A;A += .02) {
                      if (v = t(m, r, p, A), !(v < F || v > J) && (L = t(k, x, s, A), !(L < M || L > D) && (a - v) * (a - v) + (b - L) * (b - L) < K)) {
                        return!0;
                      }
                    }
                    break;
                  case 12:
                    if (0 === H) {
                      q += 4;
                      q++;
                      m = n[q++];
                      e && (m += (f[q - 2] - m) * e, k += (f[q - 1] - k) * e);
                      continue;
                    }
                    r = n[q++];
                    x = n[q++];
                    var ga = n[q++], ca = n[q++], p = n[q++], s = n[q++];
                    e && (r += (f[q - 6] - r) * e, x += (f[q - 5] - x) * e, ga += (f[q - 4] - ga) * e, ca += (f[q - 3] - ca) * e, p += (f[q - 2] - p) * e, s += (f[q - 1] - s) * e);
                    for (v = h(m, r, ga, p);2 > v.length;) {
                      v.push(p);
                    }
                    if (J < m && J < p && J < v[0] && J < v[1] || F > m && F > p && F > v[0] && F > v[1]) {
                      break;
                    }
                    for (v = h(k, x, ca, s);2 > v.length;) {
                      v.push(s);
                    }
                    if (D < k && D < s && D < v[0] && D < v[1] || M > k && M > s && M > v[0] && M > v[1]) {
                      break;
                    }
                    for (A = 0;1 > A;A += .02) {
                      if (v = c(m, r, ga, p, A), !(v < F || v > J) && (L = c(k, x, ca, s, A), !(L < M || L > D) && (a - v) * (a - v) + (b - L) * (b - L) < K)) {
                        return!0;
                      }
                    }
                    break;
                  case 5:
                    H = n[q++], e && (H += (f[q - 1] - H) * e), r = H >> 2, K = r * r, F = a - r, J = a + r, M = b - r, D = b + r;
                }
                m = p;
                k = s;
              }
              return!1;
            };
            s.prototype._writeBitmapStyle = function(a, e, c, f, g, h) {
              d.isNullOrUndefined(e) ? b("TypeError", k.Errors.NullPointerError, "bitmap") : r.display.BitmapData.isType(e) || b("TypeError", k.Errors.CheckTypeFailedError, "bitmap", "flash.display.BitmapData");
              d.isNullOrUndefined(c) ? c = r.geom.Matrix.FROZEN_IDENTITY_MATRIX : r.geom.Matrix.isType(c) || b("TypeError", k.Errors.CheckTypeFailedError, "matrix", "flash.geom.Matrix");
              f = !!f;
              g = !!g;
              h || (h = this._textures.length, this._textures.push(e), this._graphicsData.beginBitmap(a, h, c, f, g));
            };
            s.prototype._writeGradientStyle = function(a, c, g, h, l, q, m, p, s, u) {
              d.isNullOrUndefined(c) && b("TypeError", k.Errors.NullPointerError, "type");
              c = n.toNumber(f(c));
              0 > c && b("ArgumentError", k.Errors.InvalidEnumError, "type");
              d.isNullOrUndefined(g) && b("TypeError", k.Errors.NullPointerError, "colors");
              g instanceof Array || b("TypeError", k.Errors.CheckTypeFailedError, "colors", "Array");
              h instanceof Array || b("TypeError", k.Errors.CheckTypeFailedError, "alphas", "Array");
              d.isNullOrUndefined(h) && 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 t = [], v = [], A = g.length, H = A === h.length && A === l.length;
              if (H) {
                for (var K = 0;K < A;K++) {
                  var F = +l[K];
                  if (255 < F || 0 > F) {
                    H = !1;
                    break;
                  }
                  t[K] = g[K] << 8 & 4294967040 | 255 * e(+h[K], 0, 1);
                  v[K] = F;
                }
              }
              H && (d.isNullOrUndefined(q) ? q = r.geom.Matrix.FROZEN_IDENTITY_MATRIX : r.geom.Matrix.isType(q) || b("TypeError", k.Errors.CheckTypeFailedError, "matrix", "flash.geom.Matrix"), u || (g = x.toNumber(f(m)), 0 > g && (g = x.toNumber(x.PAD)), p = L.toNumber(f(p)), 0 > p && (p = L.toNumber(L.RGB)), s = e(+s, -1, 1) / 2 * 255 | 0, this._graphicsData.beginGradient(a, t, v, c, q, g, p, s)));
            };
            s.prototype._extendBoundsByPoint = function(a, b) {
              this._extendBoundsByX(a);
              this._extendBoundsByY(b);
            };
            s.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));
            };
            s.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));
            };
            s.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);
            };
            s.classInitializer = null;
            s.initializer = null;
            s.classSymbols = null;
            s.instanceSymbols = null;
            return s;
          }(a.ASNative);
          v.Graphics = J;
        })(r.display || (r.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 u = d.Debug.notImplemented, t = 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 p() {
              k.DisplayObjectContainer.instanceConstructorNoInitialize.call(this);
              this._constructChildren();
            }
            __extends(p, c);
            p.prototype._addFrame = function(a) {
              var c = this._symbol.frames;
              c.push(a);
              1 === c.length && this._initializeChildren(a);
            };
            p.prototype._initializeChildren = function(a) {
              a.controlTags && this._processControlTags(a.controlTags, !1);
            };
            p.prototype._processControlTags = function(a, c) {
              if (c) {
                for (var g = this._children.slice(), f = 0;f < g.length;f++) {
                  var b = g[f];
                  if (!(0 > b._depth)) {
                    for (var e = null, h = 0;h < a.length;h++) {
                      if (a[h].depth === b._depth) {
                        e = a[h];
                        break;
                      }
                    }
                    e && b._symbol.id === e.symbolId && b._ratio === (e.ratio | 0) || this._removeAnimatedChild(b);
                  }
                }
              }
              g = this._symbol.loaderInfo;
              for (f = 0;f < a.length;f++) {
                switch(b = a[f], e = void 0 === b.tagCode ? b : g._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 h = e, l = h.depth, b = this.getTimelineObjectAtDepth(l), k = -1 < h.symbolId;
                    if (h.flags & 1) {
                      if (!b) {
                        break;
                      }
                    } else {
                      if (!k || b && (!c || !k)) {
                        break;
                      }
                    }
                    var p = null;
                    if (k && (p = g.getSymbolById(h.symbolId), !p)) {
                      break;
                    }
                    b ? (p && !p.dynamic && b._setStaticContentFromSymbol(p), b._hasFlags(4096) && b._animate(e)) : (b = this.createAnimatedDisplayObject(p, h, !1), this.addTimelineObjectAtDepth(b, l), p.isAVM1Object && d.AVM1.Lib.initializeAVM1Object(b, p.avm1Context, h));
                }
              }
            };
            p.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);
              }
            };
            p.prototype._canHaveGraphics = function() {
              return!0;
            };
            p.prototype._getGraphics = function() {
              return this._graphics;
            };
            Object.defineProperty(p.prototype, "graphics", {get:function() {
              return this._ensureGraphics();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "buttonMode", {get:function() {
              return this._buttonMode;
            }, set:function(a) {
              this._buttonMode = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "dropTarget", {get:function() {
              return this._dropTarget;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.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(p.prototype, "useHandCursor", {get:function() {
              return this._useHandCursor;
            }, set:function(a) {
              this._useHandCursor = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "soundTransform", {get:function() {
              u("public flash.display.Sprite::get soundTransform");
            }, set:function(a) {
              u("public flash.display.Sprite::set soundTransform");
            }, enumerable:!0, configurable:!0});
            p.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 g = this._getLocalMousePosition();
                this._dragDeltaX = this.x - g.x;
                this._dragDeltaY = this.y - g.y;
              }
              this._dragBounds = d;
              a.ui.Mouse.draggableObject = this;
            };
            p.prototype.stopDrag = function() {
              a.ui.Mouse.draggableObject === this && (a.ui.Mouse.draggableObject = null, this._dragDeltaY = this._dragDeltaX = this._dragMode = 0, this._dragBounds = null);
            };
            p.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;
            };
            p.prototype.startTouchDrag = function(a, c, d) {
              u("public flash.display.Sprite::startTouchDrag");
            };
            p.prototype.stopTouchDrag = function(a) {
              u("public flash.display.Sprite::stopTouchDrag");
            };
            p.prototype._containsPoint = function(a, c, d, f, b, e) {
              if (!(5 === b && 0 < this._dragMode)) {
                var h = this._boundsAndMaskContainPoint(a, c, d, f, b);
                !h && 3 === b && this._hitArea && this._mouseEnabled && (h = this._hitArea._getInvertedConcatenatedMatrix(), h = this._hitArea._boundsAndMaskContainPoint(a, c, h.transformX(a, c), h.transformY(a, c), b));
                return 0 === h || 2 > b ? h : this._containsPointImpl(a, c, d, f, b, e, !0);
              }
            };
            p.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);
            };
            p.classInitializer = null;
            p.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]));
            };
            p.classSymbols = null;
            p.instanceSymbols = null;
            return p;
          }(a.display.DisplayObjectContainer);
          k.Sprite = c;
          t = 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, h) {
              var g = new d(c, h);
              g.numFrames = c.frameCount;
              h.actionScriptVersion === k.ActionScriptVersion.ACTIONSCRIPT2 && (g.isAVM1Object = !0, g.avm1Context = h._avm1Context);
              g.frameScripts = [];
              for (var f = c.frames, b = 0;b < f.length;b++) {
                var e = h.getFrame(c, b), l = e.actionBlocks;
                if (l) {
                  for (var n = 0;n < l.length;n++) {
                    g.frameScripts.push(b), g.frameScripts.push(l[n]);
                  }
                }
                e.labelName && g.labels.push(new a.display.FrameLabel(e.labelName, b + 1));
                g.frames.push(e);
              }
              return g;
            };
            return d;
          }(t.DisplaySymbol);
          k.SpriteSymbol = t;
        })(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(v) {
          var u = d.AVM2.Runtime.asCoerceString, t = d.AVM2.Runtime.throwError, l = d.Telemetry, c = a.events;
          (function(a) {
            a[a.SWF1 = 1] = "SWF1";
            a[a.SWF9 = 9] = "SWF9";
            a[a.SWF10 = 10] = "SWF10";
          })(v.FrameNavigationModel || (v.FrameNavigationModel = {}));
          var h = 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 v.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 = {}), f = this._mc.loaderInfo, b = 0;b < a.length;b++) {
                  var e = a[b], d = e.soundId, e = e.soundInfo, h = c[d];
                  if (!h) {
                    var l = f.getSymbolById(d);
                    if (!l) {
                      continue;
                    }
                    h = l.symbolClass;
                    l = h.initializeFrom(l);
                    h.instanceConstructorNoInitialize.call(l);
                    c[d] = h = {object:l};
                  }
                  h.channel && (h.channel.stop(), h.channel = null);
                  e.stop || (h.channel = h.object.play(0, e.hasLoops ? e.loopCount : 0));
                }
              }
            };
            a.prototype.syncSounds = function(a) {
              null !== this._startSoundRegistrations && this._startSounds(a);
              this._soundStream && this._soundStream.playFrame(a);
            };
            return a;
          }(), p = function(p) {
            function m() {
              v.Sprite.instanceConstructorNoInitialize.call(this);
            }
            __extends(m, p);
            m.reset = function() {
              m.frameNavigationModel = 10;
              m._callQueue = [];
            };
            m.runFrameScripts = function() {
              k.enterTimeline("MovieClip.executeFrame");
              var a = m._callQueue;
              m._callQueue = [];
              for (var f = 0;f < a.length;f++) {
                var b = a[f];
                b._hasFlags(1024) ? (b._removeFlags(1024), b.dispatchEvent(c.Event.getInstance(c.Event.AVM1_LOAD))) : (b._allowFrameNavigation = 1 === v.MovieClip.frameNavigationModel, b.callFrame(b._currentFrame), b._allowFrameNavigation = !0, b._nextFrame !== b._currentFrame && (9 === v.MovieClip.frameNavigationModel ? (b._advanceFrame(), b._constructFrame(), b._removeFlags(8192), b.callFrame(b._currentFrame)) : v.DisplayObject.performFrameNavigation(!1, !0)));
              }
              k.leaveTimeline();
            };
            m.prototype._addFrame = function(a) {
              var c = this._symbol, b = c.frames;
              b.push(a);
              a.labelName && this.addFrameLabel(a.labelName, b.length);
              a.soundStreamHead && this._initSoundStream(a.soundStreamHead);
              a.soundStreamBlock && this._addSoundStreamBlock(b.length, a.soundStreamBlock);
              if (c.isAVM1Object && (d.AVM1.Lib.getAVM1Object(this, c.avm1Context).addFrameActionBlocks(b.length - 1, a), a.exports)) {
                a = a.exports;
                for (var e = 0;e < a.length;e++) {
                  var h = a[e];
                  c.avm1Context.addAsset(h.className, h.symbolId, null);
                }
              }
              1 === b.length && this._initializeChildren(b[0]);
            };
            m.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();
            };
            m.prototype._constructFrame = function() {
              this._constructChildren();
            };
            m.prototype._enqueueFrameScripts = function() {
              this._hasFlags(1024) && m._callQueue.push(this);
              this._hasFlags(8192) && (this._removeFlags(8192), m._callQueue.push(this));
              p.prototype._enqueueFrameScripts.call(this);
            };
            Object.defineProperty(m.prototype, "currentFrame", {get:function() {
              return this._currentFrame - this._sceneForFrameIndex(this._currentFrame).offset;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(m.prototype, "framesLoaded", {get:function() {
              return this._frames.length;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(m.prototype, "totalFrames", {get:function() {
              return this._totalFrames;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(m.prototype, "trackAsMenu", {get:function() {
              return this._trackAsMenu;
            }, set:function(a) {
              this._trackAsMenu = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(m.prototype, "scenes", {get:function() {
              return this._scenes.map(function(a) {
                return a.clone();
              });
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(m.prototype, "currentScene", {get:function() {
              return this._sceneForFrameIndex(this._currentFrame).clone();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(m.prototype, "currentLabel", {get:function() {
              var a = this._labelForFrame(this._currentFrame);
              return a ? a.name : null;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(m.prototype, "currentLabels", {get:function() {
              return this._sceneForFrameIndex(this._currentFrame).labels;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(m.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(m.prototype, "enabled", {get:function() {
              return this._enabled;
            }, set:function(a) {
              this._enabled = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(m.prototype, "isPlaying", {get:function() {
              return this._isPlaying;
            }, enumerable:!0, configurable:!0});
            m.prototype.play = function() {
              1 < this._totalFrames && (this._isPlaying = !0);
              this._stopped = !1;
            };
            m.prototype.stop = function() {
              this._isPlaying = !1;
              this._stopped = !0;
            };
            m.prototype._getAbsFrameNumber = function(a, c) {
              var b = 10 !== v.MovieClip.frameNavigationModel, e;
              if (null !== c) {
                c = u(c);
                for (var d = this._scenes, h = 0;h < d.length && (e = d[h], e.name !== c);h++) {
                }
                if (h === d.length) {
                  if (b) {
                    return;
                  }
                  t("ArgumentError", k.Errors.SceneNotFoundError, c);
                }
              } else {
                e = this._sceneForFrameIndex(this._currentFrame);
              }
              d = parseInt(a, 10);
              if (d != a) {
                d = e.getLabelByName(a, b);
                if (!d) {
                  if (b) {
                    return;
                  }
                  t("ArgumentError", k.Errors.FrameLabelNotFoundError, a, c);
                }
                d = d.frame;
              }
              return e.offset + d;
            };
            m.prototype._gotoFrame = function(a, c) {
              var b = this._getAbsFrameNumber(a, c);
              void 0 !== b && this._gotoFrameAbs(b);
            };
            m.prototype._gotoFrameAbs = function(a) {
              1 > a ? a = 1 : a > this._totalFrames && (a = this._totalFrames);
              a !== this._nextFrame && (this._nextFrame = a, this._allowFrameNavigation && (9 === v.MovieClip.frameNavigationModel ? (this._advanceFrame(), this._constructFrame()) : v.DisplayObject.performFrameNavigation(!1, !0)));
            };
            m.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 b = this._frames[c - 1];
                  if (b !== this._frames[a - 1] && (this._seekToFrame(c), b.controlTags)) {
                    for (var a = b.controlTags, e, b = 0;b < a.length;b++) {
                      var h = a[b];
                      15 === h.tagCode && (h = this._symbol.loaderInfo._file.getParsedTag(h));
                      15 === h.code && (e || (e = []), e.push(new d.Timeline.SoundStart(h.soundId, h.soundInfo)));
                    }
                    e && this._registerStartSounds(c, e);
                  }
                  this._frameScripts[c] && (this._setFlags(8192), this._parent && this._propagateFlagsUp(16384));
                  this._currentFrame = this._nextFrame = c;
                  this._syncSounds(c);
                }
              }
            };
            m.prototype._seekToFrame = function(a) {
              var c = this._currentFrame, b = this._frames;
              if (a === c + 1) {
                b = b[a - 1], b.controlTags && this._processControlTags(b.controlTags, !1);
              } else {
                for (var e = b[c - 1], d = this._symbol.loaderInfo, h = a < c, l = [], m, c = h ? 0 : c;a-- > c;) {
                  var k = b[a];
                  if (k !== e && (e = k, k = k.controlTags)) {
                    for (var p = k.length;p--;) {
                      var s = k[p], s = void 0 === s.tagCode ? s : d._file.getParsedTag(s);
                      switch(s.code) {
                        case 5:
                        ;
                        case 28:
                          m || (m = Object.create(null));
                          m[s.depth] = !0;
                          h || l.push(s);
                          break;
                        case 4:
                        ;
                        case 26:
                        ;
                        case 70:
                          m && m[s.depth] || l.push(s);
                          break;
                        default:
                          l.push(s);
                      }
                    }
                  }
                }
                l.reverse();
                this._processControlTags(l, h);
              }
            };
            m.prototype._sceneForFrameIndex = function(a) {
              var c = this._scenes;
              if (0 === a) {
                return c[0];
              }
              for (var b = 0;b < c.length;b++) {
                var e = c[b];
                if (e.offset < a && e.offset + e.numFrames >= a) {
                  return e;
                }
              }
            };
            m.prototype._labelForFrame = function(a) {
              for (var c = this._scenes, b = null, e = 0;e < c.length;e++) {
                var d = c[e];
                if (d.offset > a) {
                  break;
                }
                for (var h = d.labels, l = 0;l < h.length;l++) {
                  var m = h[l];
                  if (m.frame > a - d.offset) {
                    return b;
                  }
                  b = m;
                }
              }
              return b;
            };
            m.prototype.callFrame = function(a) {
              if (a = this._frameScripts[a | 0]) {
                try {
                  a.call(this);
                } catch (c) {
                  throw l.instance.reportTelemetry({topic:"error", error:2}), this.stop(), c;
                }
              }
            };
            m.prototype.nextFrame = function() {
              this.gotoAndStop(this._currentFrame + 1);
            };
            m.prototype.prevFrame = function() {
              this.gotoAndStop(this._currentFrame - 1);
            };
            m.prototype.gotoAndPlay = function(a, c) {
              void 0 === c && (c = null);
              (0 === arguments.length || 2 < arguments.length) && t("ArgumentError", k.Errors.WrongArgumentCountError, "flash.display::MovieClip/gotoAndPlay()", 1, arguments.length);
              c = u(c);
              a = u(a) + "";
              this.play();
              this._gotoFrame(a, c);
            };
            m.prototype.gotoAndStop = function(a, c) {
              void 0 === c && (c = null);
              (0 === arguments.length || 2 < arguments.length) && t("ArgumentError", k.Errors.WrongArgumentCountError, "flash.display::MovieClip/gotoAndPlay()", 1, arguments.length);
              c = u(c);
              a = u(a) + "";
              this.stop();
              this._gotoFrame(a, c);
            };
            m.prototype.addFrameScript = function(a, c) {
              if (this._currentFrame) {
                var b = arguments.length;
                b & 1 && t("ArgumentError", k.Errors.TooFewArgumentsError, b, b + 1);
                for (var e = this._frameScripts, d = this._totalFrames, h = 0;h < b;h += 2) {
                  var l = (arguments[h] | 0) + 1;
                  1 > l || l > d || (e[l] = arguments[h + 1], l === this._currentFrame && (this._setFlags(8192), this._parent && this._propagateFlagsUp(16384)));
                }
              }
            };
            Object.defineProperty(m.prototype, "_avm1SymbolClass", {get:function() {
              return this._symbol && this._symbol.avm1SymbolClass || null;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(m.prototype, "_isFullyLoaded", {get:function() {
              return this.framesLoaded >= this.totalFrames;
            }, enumerable:!0, configurable:!0});
            m.prototype._registerStartSounds = function(a, c) {
              null === this._sounds && (this._sounds = new h(this));
              this._sounds.registerStartSounds(a, c);
            };
            m.prototype._initSoundStream = function(a) {
              null === this._sounds && (this._sounds = new h(this));
              this._sounds.initSoundStream(a);
            };
            m.prototype._addSoundStreamBlock = function(a, c) {
              this._sounds.addSoundStreamBlock(a, c);
            };
            m.prototype._syncSounds = function(a) {
              null !== this._sounds && this._sounds.syncSounds(a);
            };
            m.prototype.addScene = function(a, c, b, e) {
              this._scenes.push(new v.Scene(a, c, b, e));
            };
            m.prototype.addFrameLabel = function(c, f) {
              var b = this._sceneForFrameIndex(f);
              b.getLabelByName(c, !1) || b.labels.push(new a.display.FrameLabel(c, f - b.offset));
            };
            m.prototype.prevScene = function() {
              var a = this._sceneForFrameIndex(this._currentFrame);
              0 !== a.offset && this._gotoFrameAbs(this._sceneForFrameIndex(a.offset).offset + 1);
            };
            m.prototype.nextScene = function() {
              var a = this._sceneForFrameIndex(this._currentFrame);
              a.offset + a.numFrames !== this._totalFrames && this._gotoFrameAbs(a.offset + a.numFrames + 1);
            };
            m.prototype._containsPointImpl = function(a, c, b, e, d, h, l) {
              a = p.prototype._containsPointImpl.call(this, a, c, b, e, d, h, !0);
              2 === a && 3 === d && "_as2Object" in this && !this.buttonMode && h[0] === this && (h.length = 0);
              return a;
            };
            m.classInitializer = function() {
              m.reset();
            };
            m.initializer = function(a) {
              v.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 b = a.frameScripts, e = 0;e < b.length;e += 2) {
                      c.addFrameScript(b[e], b[e + 1]);
                    }
                  }
                  a.avm1Name && (this.name = a.avm1Name);
                }
              } else {
                this.addScene("", [], 0, this._totalFrames);
              }
            };
            m.classSymbols = null;
            m.instanceSymbols = null;
            return m;
          }(a.display.Sprite);
          v.MovieClip = p;
        })(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(v) {
          function u(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 t = 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), h = 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), p = 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;
          }(), s = function(a) {
            function c(f) {
              a.call(this, f);
              this._decoderPosition = 0;
              this._decoderSession = new t;
              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() {
                p.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;
          }(p), l = function() {
            function d(g, f) {
              this.movieClip = f;
              this.decode = g.decode;
              this.data = {sampleRate:g.sampleRate, channels:g.channels};
              this.seekIndex = [];
              this.position = 0;
              this.wasFullyLoaded = !1;
              this.waitFor = this.expectedFrame = 0;
              var b = "mp3" === g.format;
              if (b && !a.webAudioMP3Option.value) {
                var e = document.createElement("audio");
                e.preload = "metadata";
                e.loop = !1;
                u(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 h(e)) : this.soundStreamAdapter = new h(e);
                  return;
                }
              }
              this.data.pcm = new Float32Array((g.samplesCount + 1) * this.movieClip.totalFrames * g.channels);
              this.soundStreamAdapter = b ? new s(this.data) : new p(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;
          }();
          v.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(r) {
        (function(v) {
          var u = d.Debug.notImplemented, t = d.Debug.somewhatImplemented, l = d.AVM2.Runtime.asCoerceString, c = d.AVM2.Runtime.throwError, h = function(d) {
            function h() {
              v.DisplayObjectContainer.instanceConstructorNoInitialize.call(this);
              this._root = this;
              this._stage = this;
              this._frameRate = 24;
              this._scaleMode = v.StageScaleMode.SHOW_ALL;
              this._align = "";
              this._stageHeight = this._stageWidth = 0;
              this._showDefaultContextMenu = !0;
              this._focus = null;
              this._colorCorrection = v.ColorCorrection.DEFAULT;
              this._colorCorrectionSupport = v.ColorCorrectionSupport.DEFAULT_OFF;
              this._stageFocusRect = !0;
              this._quality = v.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 r.geom.Rectangle;
              this._allowsFullScreenInteractive = this._allowsFullScreen = !1;
              this._contentsScaleFactor = 1;
              this._displayContextInfo = null;
              this._stageContainerHeight = this._stageContainerWidth = this._timeout = -1;
              this._invalidated = !1;
            }
            __extends(h, d);
            h.prototype.setRoot = function(a) {
              this.addTimelineObjectAtDepth(a, 0);
            };
            Object.defineProperty(h.prototype, "frameRate", {get:function() {
              return this._frameRate;
            }, set:function(a) {
              this._frameRate = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "scaleMode", {get:function() {
              return this._scaleMode;
            }, set:function(a) {
              a = l(a);
              0 > r.display.StageScaleMode.toNumber(a) && c("ArgumentError", k.Errors.InvalidEnumError, "scaleMode");
              this._scaleMode = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "align", {get:function() {
              return this._align;
            }, set:function(a) {
              a = l(a);
              a = r.display.StageAlign.toNumber(a);
              this._align = r.display.StageAlign.fromNumber(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "stageWidth", {get:function() {
              return this.scaleMode !== v.StageScaleMode.NO_SCALE ? this._stageWidth / 20 | 0 : this._stageContainerWidth;
            }, set:function(a) {
            }, enumerable:!0, configurable:!0});
            h.prototype._setInitialName = function() {
              this._name = null;
            };
            h.prototype.setStageWidth = function(a) {
              this._stageWidth = 20 * a | 0;
            };
            Object.defineProperty(h.prototype, "stageHeight", {get:function() {
              return this.scaleMode !== v.StageScaleMode.NO_SCALE ? this._stageHeight / 20 | 0 : this._stageContainerHeight;
            }, set:function(a) {
            }, enumerable:!0, configurable:!0});
            h.prototype.setStageHeight = function(a) {
              this._stageHeight = 20 * a | 0;
            };
            h.prototype.setStageColor = function(a) {
              this._colorARGB = a;
            };
            h.prototype.setStageContainerSize = function(a, c, f) {
              this._contentsScaleFactor = f;
              if (this._stageContainerWidth !== a || this._stageContainerHeight !== c) {
                this._stageContainerWidth = a, this._stageContainerHeight = c, this.scaleMode === v.StageScaleMode.NO_SCALE && this.dispatchEvent(r.events.Event.getInstance(r.events.Event.RESIZE));
              }
            };
            Object.defineProperty(h.prototype, "showDefaultContextMenu", {get:function() {
              return this._showDefaultContextMenu;
            }, set:function(a) {
              this._showDefaultContextMenu = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "focus", {get:function() {
              return this._focus;
            }, set:function(a) {
              this._focus = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "colorCorrection", {get:function() {
              return this._colorCorrection;
            }, set:function(a) {
              u("public flash.display.Stage::set colorCorrection");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "colorCorrectionSupport", {get:function() {
              return this._colorCorrectionSupport;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "stageFocusRect", {get:function() {
              return this._stageFocusRect;
            }, set:function(a) {
              this._stageFocusRect = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "quality", {get:function() {
              return this._quality.toUpperCase();
            }, set:function(a) {
              a = (l(a) || "").toLowerCase();
              0 > r.display.StageQuality.toNumber(a) && (a = r.display.StageQuality.HIGH);
              this._quality = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "displayState", {get:function() {
              return this._displayState;
            }, set:function(a) {
              a = l(a);
              0 > r.display.StageDisplayState.toNumber(a) && (a = r.display.StageDisplayState.NORMAL);
              this._displayState = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "fullScreenSourceRect", {get:function() {
              return this._fullScreenSourceRect;
            }, set:function(a) {
              u("public flash.display.Stage::set fullScreenSourceRect");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "mouseLock", {get:function() {
              return this._mouseLock;
            }, set:function(a) {
              t("public flash.display.Stage::set mouseLock");
              this._mouseLock = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "stageVideos", {get:function() {
              t("public flash.display.Stage::get stageVideos");
              return this._stageVideos;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "stage3Ds", {get:function() {
              u("public flash.display.Stage::get stage3Ds");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "color", {get:function() {
              return this._colorARGB;
            }, set:function(a) {
              this._colorARGB = a | 4278190080;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "alpha", {get:function() {
              return this._colorTransform.alphaMultiplier;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "fullScreenWidth", {get:function() {
              return this._fullScreenWidth;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "fullScreenHeight", {get:function() {
              return this._fullScreenHeight;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "wmodeGPU", {get:function() {
              return this._wmodeGPU;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "softKeyboardRect", {get:function() {
              return this._softKeyboardRect;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "allowsFullScreen", {get:function() {
              return this._allowsFullScreen;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "allowsFullScreenInteractive", {get:function() {
              return this._allowsFullScreenInteractive;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "contentsScaleFactor", {get:function() {
              return this._contentsScaleFactor;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "displayContextInfo", {get:function() {
              return this._displayContextInfo;
            }, enumerable:!0, configurable:!0});
            h.prototype.removeChildAt = function(a) {
              return d.prototype.removeChildAt.call(this, a);
            };
            h.prototype.swapChildrenAt = function(a, c) {
              d.prototype.swapChildrenAt.call(this, a, c);
            };
            Object.defineProperty(h.prototype, "width", {get:function() {
              return this._getWidth();
            }, set:function(a) {
              this._setWidth(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "height", {get:function() {
              return this._getHeight();
            }, set:function(a) {
              this._setHeight(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "mouseChildren", {get:function() {
              return this._mouseChildren;
            }, set:function(a) {
              this._setMouseChildren(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "numChildren", {get:function() {
              return this._children.length;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "tabChildren", {get:function() {
              return this._tabChildren;
            }, set:function(a) {
              this._setTabChildren(a);
            }, enumerable:!0, configurable:!0});
            h.prototype.addChild = function(a) {
              return d.prototype.addChild.call(this, a);
            };
            h.prototype.addChildAt = function(a, c) {
              return d.prototype.addChildAt.call(this, a, c);
            };
            h.prototype.setChildIndex = function(a, c) {
              d.prototype.setChildIndex.call(this, a, c);
            };
            h.prototype.addEventListener = function(a, c, f, b, e) {
              d.prototype.addEventListener.call(this, a, c, f, b, e);
            };
            h.prototype.hasEventListener = function(a) {
              return d.prototype.hasEventListener.call(this, a);
            };
            h.prototype.willTrigger = function(a) {
              return d.prototype.willTrigger.call(this, a);
            };
            h.prototype.dispatchEvent = function(a) {
              return d.prototype.dispatchEvent.call(this, a);
            };
            h.prototype.invalidate = function() {
              this._invalidated = !0;
            };
            h.prototype.isFocusInaccessible = function() {
              u("public flash.display.Stage::isFocusInaccessible");
            };
            h.prototype.requireOwnerPermissions = function() {
            };
            h.prototype.render = function() {
              this._invalidated && (v.DisplayObject._broadcastFrameEvent(r.events.Event.RENDER), this._invalidated = !1);
            };
            Object.defineProperty(h.prototype, "name", {get:function() {
              return this._name;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "mask", {get:function() {
              return this._mask;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "visible", {get:function() {
              return this._hasFlags(1);
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "x", {get:function() {
              return this._getX();
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "y", {get:function() {
              return this._getY();
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "z", {get:function() {
              return this._z;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "scaleX", {get:function() {
              return Math.abs(this._scaleX);
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "scaleY", {get:function() {
              return this._scaleY;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "scaleZ", {get:function() {
              return this._scaleZ;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "rotation", {get:function() {
              return this._rotation;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "rotationX", {get:function() {
              return this._rotationX;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "rotationY", {get:function() {
              return this._rotationX;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "rotationZ", {get:function() {
              return this._rotationX;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "cacheAsBitmap", {get:function() {
              return this._getCacheAsBitmap();
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "opaqueBackground", {get:function() {
              return this._opaqueBackground;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "scrollRect", {get:function() {
              return this._getScrollRect();
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "filters", {get:function() {
              return this._getFilters();
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "blendMode", {get:function() {
              return this._blendMode;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "transform", {get:function() {
              return this._getTransform();
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "accessibilityProperties", {get:function() {
              return this._accessibilityProperties;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "scale9Grid", {get:function() {
              return this._getScale9Grid();
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "tabEnabled", {get:function() {
              return this._tabEnabled;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "tabIndex", {get:function() {
              return this._tabIndex;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "focusRect", {get:function() {
              return this._focusRect;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "mouseEnabled", {get:function() {
              return this._mouseEnabled;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "accessibilityImplementation", {get:function() {
              return this._accessibilityImplementation;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "textSnapshot", {get:function() {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
              return null;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "contextMenu", {get:function() {
              return this._contextMenu;
            }, set:function(a) {
              c("IllegalOperationError", k.Errors.InvalidStageMethodError);
            }, enumerable:!0, configurable:!0});
            h.classInitializer = null;
            h.classSymbols = null;
            h.instanceSymbols = null;
            h.initializer = null;
            return h;
          }(r.display.DisplayObjectContainer);
          v.Stage = h;
        })(r.display || (r.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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = t;
        })(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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = t;
        })(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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = t;
        })(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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = t;
        })(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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = t;
        })(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 u = d.AVM2.Runtime.asCoerceString, t = function(a) {
            function c(a, c) {
              this._name = u(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 = t;
        })(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(v) {
          var u = d.Debug.notImplemented, t = d.Debug.somewhatImplemented, l = d.ArrayUtilities.DataBuffer, c = d.AVM2.Runtime.asCoerceString, h = d.AVM2.Runtime.throwError, p = d.AVM2.Runtime.AVM2, s = d.IntegerUtilities.swap32, m = d.ColorUtilities.premultiplyARGB, g = d.ColorUtilities.unpremultiplyARGB, f = d.ColorUtilities.RGBAToARGB, b = d.ArrayUtilities.indexOf, e = k.geom.Rectangle, q = function(n) {
            function q(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 > q.MAXIMUM_WIDTH || 0 >= a || b > q.MAXIMUM_HEIGHT || 0 >= b || a * b > q.MAXIMUM_DIMENSION) && h("ArgumentError", p.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 = k.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(q, n);
            q.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;
            };
            q.prototype._addBitmapReferrer = function(a) {
              b(this._bitmapReferrers, a);
              this._bitmapReferrers.push(a);
            };
            q.prototype._removeBitmapReferrer = function(a) {
              a = b(this._bitmapReferrers, a);
              this._bitmapReferrers[a] = null;
            };
            q.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);
                }
              }
            };
            q.prototype._getTemporaryRectangleFrom = function(a, b) {
              void 0 === b && (b = 0);
              var e = q._temporaryRectangles[b];
              a && e.copyFrom(a);
              return e;
            };
            q.prototype.getDataBuffer = function() {
              return this._dataBuffer;
            };
            q.prototype._getContentBounds = function() {
              return d.Bounds.FromRectangle(this._rect);
            };
            q.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, n = a;n < e;n++) {
                    var q = d[l + n], k = q & 255, q = 255 * (q >>> 8) / k << 8 | k;
                    b[h++] = q;
                  }
                }
                return b;
              }
            };
            q.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), n = a.width - e.width, q = this._transparent ? 0 : 255, e = e.y;e < d;e++) {
                  for (var k = e * h, m = c;m < f;m++) {
                    var p = b[l++], s = p & q;
                    g[k + m] = (((p >>> 8) * s + 254) / 255 & 16777215) << 8 | s;
                  }
                  l += n;
                }
                this._invalidate();
              }
            };
            Object.defineProperty(q.prototype, "width", {get:function() {
              return this._rect.width;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "height", {get:function() {
              return this._rect.height;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "rect", {get:function() {
              return this._rect.clone();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(q.prototype, "transparent", {get:function() {
              return this._transparent;
            }, enumerable:!0, configurable:!0});
            q.prototype.clone = function() {
              t("public flash.display.BitmapData::clone");
              var a = new q(this._rect.width, this._rect.height, this._transparent, this._solidFillColorPBGRA);
              a._view.set(this._view);
              return a;
            };
            q.prototype.getPixel = function(a, b) {
              return this.getPixel32(a | 0, b | 0) & 16777215;
            };
            q.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 = s(e), g(e) >>> 0;
                case 3:
                  return f(s(e));
                default:
                  return d.Debug.notImplemented(d.ImageType[this._type]), 0;
              }
            };
            q.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] = s(e), this._invalidate(), this._solidFillColorPBGRA = null);
            };
            q.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] = s(c);
                this._invalidate();
                this._solidFillColorPBGRA = null;
              }
            };
            q.prototype.applyFilter = function(a, b, e, c) {
              t("public flash.display.BitmapData::applyFilter " + c);
            };
            q.prototype.colorTransform = function(a, b) {
              t("public flash.display.BitmapData::colorTransform");
            };
            q.prototype.compare = function(a) {
              u("public flash.display.BitmapData::compare");
            };
            q.prototype.copyChannel = function(a, b, e, c, f) {
              u("public flash.display.BitmapData::copyChannel");
            };
            q.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) {
                u("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), n = 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(n - c, b.height - g);
                if (!(0 >= e || 0 >= b)) {
                  var l = h, n = c, q = f, k = g;
                  c = a._rect.width;
                  f = this._rect.width;
                  this._ensureBitmapData();
                  a._ensureBitmapData();
                  h = a._view;
                  g = this._view;
                  a._type !== this._type && t("public flash.display.BitmapData::copyPixels - Color Format Conversion");
                  if (d && 1 !== this._type) {
                    u("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, n, c, g, q, k, f, e, b);
                      } else {
                        if (a = n * c + l | 0, d = k * f + q | 0, 0 === (e & 3)) {
                          for (l = 0;l < b;l = l + 1 | 0) {
                            for (n = 0;n < e;n = n + 4 | 0) {
                              g[d + n + 0 | 0] = h[a + n + 0 | 0], g[d + n + 1 | 0] = h[a + n + 1 | 0], g[d + n + 2 | 0] = h[a + n + 2 | 0], g[d + n + 3 | 0] = h[a + n + 3 | 0];
                            }
                            a = a + c | 0;
                            d = d + f | 0;
                          }
                        } else {
                          for (l = 0;l < b;l = l + 1 | 0) {
                            for (n = 0;n < e;n = n + 1 | 0) {
                              g[d + n | 0] = h[a + n | 0];
                            }
                            a = a + c | 0;
                            d = d + f | 0;
                          }
                        }
                      }
                      this._solidFillColorPBGRA = null;
                      this._invalidate();
                    }
                  }
                }
              }
            };
            q.prototype._copyPixelsAndMergeAlpha = function(a, b, e, c, f, d, g, h, l, n) {
              b = e * c + b | 0;
              d = g * h + d | 0;
              for (g = 0;g < n;g = g + 1 | 0) {
                for (e = 0;e < l;e = e + 1 | 0) {
                  var q = a[b + e | 0], k = q & 255;
                  if (255 === k) {
                    f[d + e | 0] = q;
                  } else {
                    if (0 !== k) {
                      var m = q & 16711935, q = q >> 8 & 16711935, p = f[d + e | 0], s = p & 16711935, p = p >> 8 & 16711935, k = 256 - k, s = Math.imul(s, k) >> 8, p = Math.imul(p, k) >> 8;
                      f[d + e | 0] = (q + p & 16711935) << 8 | m + s & 16711935;
                    }
                  }
                }
                b = b + c | 0;
                d = d + h | 0;
              }
            };
            q.prototype.dispose = function() {
              this._rect.setEmpty();
              this._view = null;
              this._invalidate();
            };
            q.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);
              t("public flash.display.BitmapData::draw");
              var g = p.instance.globals["Shumway.Player.Utils"];
              b && (b = b.clone().toTwipsInPlace());
              g.drawToBitmap(this, a, b, e, c, f, d);
              this._isRemoteDirty = !0;
            };
            q.prototype.drawWithQuality = function(a, b, e, f, d, g, h) {
              void 0 === f && (f = null);
              void 0 === h && (h = null);
              c(f);
              c(h);
              u("public flash.display.BitmapData::drawWithQuality");
            };
            q.prototype.fillRect = function(a, b) {
              this._ensureBitmapData();
              var e = this._transparent ? m(b) : b | 4278190080, e = s(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 n = c * l | 0, q = d;q < g;q++) {
                      f[n + q] = e;
                    }
                  }
                  this._solidFillColorPBGRA = null;
                }
                this._invalidate();
              }
            };
            q.prototype.floodFill = function(a, b, e) {
              u("public flash.display.BitmapData::floodFill");
            };
            q.prototype.generateFilterRect = function(a, b) {
              u("public flash.display.BitmapData::generateFilterRect");
            };
            q.prototype.getColorBoundsRect = function(a, b, e) {
              u("public flash.display.BitmapData::getColorBoundsRect");
            };
            q.prototype.getPixels = function(a) {
              var b = new k.utils.ByteArray;
              this.copyPixelsToByteArray(a, b);
              return b;
            };
            q.prototype.copyPixelsToByteArray = function(a, b) {
              var e = this._getPixelData(a);
              e && b.writeRawBytes(new Uint8Array(e));
            };
            q.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;
            };
            q.prototype.hitTest = function(a, b, e, c, f) {
              u("public flash.display.BitmapData::hitTest");
            };
            q.prototype.merge = function(a, b, e, c, f, d, g) {
              t("public flash.display.BitmapData::merge");
            };
            q.prototype.noise = function(a, b, e, c, f) {
              t("public flash.display.BitmapData::noise");
            };
            q.prototype.paletteMap = function(a, b, e, c, f, d, g) {
              t("public flash.display.BitmapData::paletteMap");
            };
            q.prototype.perlinNoise = function(a, b, e, c, f, d, g, h, l) {
              t("public flash.display.BitmapData::perlinNoise");
            };
            q.prototype.pixelDissolve = function(a, b, e, c, f, d) {
              u("public flash.display.BitmapData::pixelDissolve");
            };
            q.prototype.scroll = function(a, b) {
              u("public flash.display.BitmapData::scroll");
            };
            q.prototype.setPixels = function(a, b) {
              this._putPixelData(a, new Int32Array(b.readRawBytes()));
            };
            q.prototype.setVector = function(a, b) {
              this._putPixelData(a, b._view());
            };
            q.prototype.threshold = function(a, b, e, f, d, g, h, l) {
              c(f);
              u("public flash.display.BitmapData::threshold");
            };
            q.prototype.lock = function() {
              this._locked = !0;
            };
            q.prototype.unlock = function(a) {
              this._locked = !1;
            };
            q.prototype.histogram = function(a) {
              u("public flash.display.BitmapData::histogram");
            };
            q.prototype.encode = function(a, b, e) {
              u("public flash.display.BitmapData::encode");
            };
            q.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);
            };
            q.classInitializer = function() {
            };
            q.initializer = function(a) {
              this._symbol = a;
            };
            q.classSymbols = null;
            q.instanceSymbols = null;
            q.MAXIMUM_WIDTH = 8191;
            q.MAXIMUM_HEIGHT = 8191;
            q.MAXIMUM_DIMENSION = 16777215;
            q._temporaryRectangles = [new k.geom.Rectangle, new k.geom.Rectangle, new k.geom.Rectangle];
            return q;
          }(a.ASNative);
          v.BitmapData = q;
          q = function(a) {
            function b(e) {
              a.call(this, e, k.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 = k.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:
                  u(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);
          v.BitmapSymbol = q;
        })(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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = t;
        })(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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = t;
        })(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 r = d.Debug.dummyConstructor, t = function(a) {
            function c(a) {
              r("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 = t;
        })(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 u = d.AVM2.Runtime.throwError, t = a.display.ActionScriptVersion, l = d.AVM2.Runtime.AVM2, c = a.events, h = d.FileLoader, p = d.AVM2.ABC.AbcFile, s = d.SWF.SWFFile, m;
          (function(a) {
            a[a.Unloaded = 0] = "Unloaded";
            a[a.Opened = 1] = "Opened";
            a[a.Initialized = 2] = "Initialized";
            a[a.Complete = 3] = "Complete";
          })(m || (m = {}));
          var g;
          (function(a) {
            a[a.External = 0] = "External";
            a[a.Bytes = 1] = "Bytes";
          })(g || (g = {}));
          m = function(f) {
            function b() {
              k.DisplayObjectContainer.instanceConstructorNoInitialize.call(this);
              this._content = null;
              b._rootLoader && (this._contentID = k.DisplayObject._instanceID++);
              this._contentLoaderInfo = new k.LoaderInfo(k.LoaderInfo.CtorToken);
              this._contentLoaderInfo._loader = this;
              var a = l.currentAbc();
              a && (this._contentLoaderInfo._loaderUrl = a.env.loaderInfo.url);
              this._fileLoader = null;
              this._loadStatus = 0;
            }
            __extends(b, f);
            b.getRootLoader = function() {
              if (b._rootLoader) {
                return b._rootLoader;
              }
              var e = new a.display.Loader;
              a.display.DisplayObject._instanceID--;
              e._contentLoaderInfo._loader = null;
              return b._rootLoader = e;
            };
            b.reset = function() {
              b._loadQueue.forEach(function(a) {
                return a.unload();
              });
              b.classInitializer();
            };
            b.processEvents = function() {
              b.processEarlyEvents();
              b.processLateEvents();
            };
            b.processEarlyEvents = function() {
              for (var a = b._loadQueue, f = 0;f < a.length;f++) {
                var g = a[f], h = g._contentLoaderInfo, l = g._imageSymbol;
                if (h._file instanceof d.ImageFile) {
                  if (!l || !l.ready || g._queuedLoadUpdate) {
                    continue;
                  }
                  g._applyDecodedImage(l);
                }
                if (1 === g._loadStatus && g._content) {
                  try {
                    h.dispatchEvent(c.Event.getInstance(c.Event.INIT));
                  } catch (k) {
                    console.warn("caught error under loaderInfo INIT event:", k);
                  }
                  g._loadStatus = 2;
                  if (g === b._rootLoader) {
                    try {
                      h.dispatchEvent(new c.ProgressEvent(c.ProgressEvent.PROGRESS, !1, !1, h.bytesLoaded, h.bytesTotal));
                    } catch (m) {
                      console.warn("caught error under loaderInfo PROGRESS event:", m);
                    }
                  }
                }
                if (2 === g._loadStatus && h.bytesLoaded === h.bytesTotal) {
                  a.splice(f--, 1);
                  g._loadStatus = 3;
                  try {
                    h.dispatchEvent(c.Event.getInstance(c.Event.COMPLETE));
                  } catch (p) {
                    console.warn("caught error under loaderInfo COMPLETE event: ", p);
                  }
                }
              }
            };
            b.processLateEvents = function() {
              for (var a = b._loadQueue, f = 0;f < a.length;f++) {
                var d = a[f], g = d._contentLoaderInfo, h = d._queuedLoadUpdate, l = g._bytesTotal;
                if (h && l || 1 === d._loadStatus) {
                  d._queuedLoadUpdate = null;
                  if (0 === d._loadStatus) {
                    if (0 === d._loadingType) {
                      try {
                        g.dispatchEvent(c.Event.getInstance(c.Event.OPEN));
                      } catch (k) {
                        console.warn("caught error under loaderInfo OPEN event: ", k);
                      }
                    }
                    g.dispatchEvent(new c.ProgressEvent(c.ProgressEvent.PROGRESS, !1, !1, 0, l));
                    d._loadStatus = 1;
                  }
                  if (h) {
                    d._applyLoadUpdate(h);
                    try {
                      g.dispatchEvent(new c.ProgressEvent(c.ProgressEvent.PROGRESS, !1, !1, h.bytesLoaded, l));
                    } catch (m) {
                      console.warn("caught error under loaderInfo PROGRESS event: ", m);
                    }
                  }
                }
              }
            };
            b.prototype._setStage = function(a) {
              this._stage = a;
            };
            b.prototype._initFrame = function(a) {
            };
            b.prototype._constructFrame = function() {
              this === b.getRootLoader() && this._content ? (k.DisplayObject._advancableInstances.remove(this), this._children[0] = this._content, this._constructChildren(), this._children.length = 0) : this._constructChildren();
            };
            b.prototype.addChild = function(a) {
              u("IllegalOperationError", l.Errors.InvalidLoaderMethodError);
              return null;
            };
            b.prototype.addChildAt = function(a, b) {
              u("IllegalOperationError", l.Errors.InvalidLoaderMethodError);
              return null;
            };
            b.prototype.removeChild = function(a) {
              u("IllegalOperationError", l.Errors.InvalidLoaderMethodError);
              return null;
            };
            b.prototype.removeChildAt = function(a) {
              u("IllegalOperationError", l.Errors.InvalidLoaderMethodError);
              return null;
            };
            b.prototype.setChildIndex = function(a, b) {
              u("IllegalOperationError", l.Errors.InvalidLoaderMethodError);
            };
            b.prototype._describeData = function(a) {
              var b = [], c;
              for (c in a) {
                b.push(c + ":" + d.StringUtilities.toSafeString(a[c]));
              }
              return "{" + b.join(", ") + "}";
            };
            Object.defineProperty(b.prototype, "content", {get:function() {
              return 0 === this._loadStatus ? null : this._content;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "contentLoaderInfo", {get:function() {
              return this._contentLoaderInfo;
            }, enumerable:!0, configurable:!0});
            b.prototype._getJPEGLoaderContextdeblockingfilter = function(b) {
              return a.system.JPEGLoaderContext.isType(b) ? b.deblockingFilter : 0;
            };
            Object.defineProperty(b.prototype, "uncaughtErrorEvents", {get:function() {
              return this._uncaughtErrorEvents;
            }, enumerable:!0, configurable:!0});
            b.prototype.load = function(a, c) {
              this.close();
              this._contentLoaderInfo._url = a.url;
              this._applyLoaderContext(c);
              this._loadingType = 0;
              this._fileLoader = new h(this);
              this._fileLoader.loadFile(a._toFileRequest());
              this._queuedLoadUpdate = null;
              b._loadQueue.push(this);
            };
            b.prototype.loadBytes = function(a, c) {
              this.close();
              this._contentLoaderInfo._url = (this.loaderInfo ? this.loaderInfo._url : "") + "/[[DYNAMIC]]/" + ++b._embeddedContentLoadCount;
              this._applyLoaderContext(c);
              this._loadingType = 1;
              this._fileLoader = new h(this);
              this._queuedLoadUpdate = null;
              this._fileLoader.loadBytes(new Uint8Array(a.bytes, 0, a.length));
              b._loadQueue.push(this);
            };
            b.prototype.close = function() {
              var a = b._loadQueue.indexOf(this);
              -1 < a && b._loadQueue.splice(a, 1);
              this._contentLoaderInfo.reset();
              this._fileLoader && (this._fileLoader = null);
            };
            b.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(c.Event.getInstance(c.Event.UNLOAD)));
            };
            b.prototype.unload = function() {
              this._unload(!1, !1);
            };
            b.prototype.unloadAndStop = function(a) {
              this._unload(!0, !!a);
            };
            b.prototype._applyLoaderContext = function(b) {
              var c = {};
              if (b && b.parameters) {
                var f = b.parameters, g;
                for (g in f) {
                  var h = f[g];
                  d.isString(h) || u("IllegalOperationError", l.Errors.ObjectWithStringsParamError, "LoaderContext.parameters");
                  c[g] = h;
                }
              }
              b && b.applicationDomain && (b = new a.system.ApplicationDomain(a.system.ApplicationDomain.currentDomain), this._contentLoaderInfo._applicationDomain = b);
              this._contentLoaderInfo._parameters = c;
            };
            b.prototype.onLoadOpen = function(a) {
              this._contentLoaderInfo.setFile(a);
            };
            b.prototype.onLoadProgress = function(a) {
              this._queuedLoadUpdate = a;
            };
            b.prototype.onNewEagerlyParsedSymbols = function(a, b) {
              for (var c = [], f = a.length - b;f < a.length;f++) {
                var d = this._contentLoaderInfo.getSymbolById(a[f].id);
                d.ready || c.push(d.resolveAssetPromise.promise);
              }
              return Promise.all(c);
            };
            b.prototype.onImageBytesLoaded = function() {
              var a = this._contentLoaderInfo._file, a = {id:-1, data:a.data, mimeType:a.mimeType, dataType:a.type, type:"image"}, b = k.BitmapSymbol.FromData(a);
              this._imageSymbol = b;
              l.instance.globals["Shumway.Player.Utils"].registerFontOrImage(b, a);
            };
            b.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);
            };
            b.prototype._applyLoadUpdate = function(b) {
              var c = this._contentLoaderInfo;
              c._bytesLoaded = b.bytesLoaded;
              var f = c._file;
              if (f instanceof s && 0 !== f.framesLoaded) {
                if (c._allowCodeExecution) {
                  var d = l.instance.applicationDomain, g = f.abcBlocks.length;
                  if (0 < g - c._abcBlocksLoaded) {
                    for (b = c._abcBlocksLoaded;b < g;b++) {
                      var h = f.abcBlocks[b], k = new p(h.data, h.name);
                      k.env.loaderInfo = c;
                      h.flags ? d.loadAbc(k) : d.executeAbc(k);
                    }
                    c._abcBlocksLoaded = g;
                  }
                  g = f.symbolClassesList.length;
                  if (0 < g - c._mappedSymbolsLoaded) {
                    for (b = c._mappedSymbolsLoaded;b < g;b++) {
                      h = f.symbolClassesList[b], k = d.getClass(h.className), Object.defineProperty(k, "defaultInitializerArgument", {get:c.getSymbolResolver(k, h.id), configurable:!0});
                    }
                    c._mappedSymbolsLoaded = g;
                  }
                }
                if (inFirefox && (d = f.fonts.length, 0 < d - c._fontsLoaded)) {
                  for (b = c._fontsLoaded;b < d;b++) {
                    a.text.Font.registerEmbeddedFont(f.fonts[b], c);
                  }
                  c._fontsLoaded = d;
                }
                d = c.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 = c.getFrame(null, d.frames.length), f._addFrame(h);
                  }
                }
              }
            };
            b.prototype.onLoadComplete = function() {
            };
            b.prototype.onLoadError = function() {
            };
            b.prototype.createContentRoot = function(e, c) {
              e.isAVM1Object && this._initAvm1(e);
              var f = e.symbolClass.initializeFrom(e);
              a.display.DisplayObject._instanceID--;
              f._name = this === b._rootLoader ? "root1" : "instance" + this._contentID;
              if (k.MovieClip.isType(f)) {
                var d = f;
                if (c) {
                  for (var g = c.scenes, h = 0, l = g.length;h < l;h++) {
                    var m = g[h], p = m.offset;
                    d.addScene(m.name, [], p, (h < l - 1 ? g[h + 1].offset : e.numFrames) - p);
                  }
                  g = c.labels;
                  for (h = 0;h < g.length;h++) {
                    l = g[h], d.addFrameLabel(l.name, l.frame + 1);
                  }
                } else {
                  d.addScene("Scene 1", [], 0, e.numFrames);
                }
              }
              d = this._contentLoaderInfo;
              f._loaderInfo = d;
              h = f;
              d.actionScriptVersion === t.ACTIONSCRIPT2 ? f = this._initAvm1Root(f) : this === b.getRootLoader() && (k.MovieClip.frameNavigationModel = 10 > d.swfVersion ? 9 : 10);
              this._content = f;
              this === b.getRootLoader() ? (b.runtimeStartTime = Date.now(), this._stage.setRoot(f)) : this.addTimelineObjectAtDepth(f, 0);
              return h;
            };
            b.prototype._initAvm1 = function(a) {
              var c = this._contentLoaderInfo, f;
              this.loaderInfo && this.loaderInfo._avm1Context ? f = c._avm1Context = this.loaderInfo._avm1Context : (d.AVM1.Lib.installObjectMethods(), f = d.AVM1.AVM1Context.create(c), c._avm1Context = f, this === b.getRootLoader() && (f.globals.Key._bind(this._stage, f), f.globals.Mouse._bind(this._stage, f), k.MovieClip.frameNavigationModel = 1));
              a.avm1Context = f;
            };
            b.prototype._initAvm1Root = function(b) {
              var c = this._contentLoaderInfo._avm1Context, f = d.AVM1.Lib.getAVM1Object(b, c);
              if (this.loaderInfo && this.loaderInfo._avm1Context) {
                return f.context = this.loaderInfo._avm1Context, b;
              }
              c.root = f;
              b.addEventListener("frameConstructed", c.flushPendingScripts.bind(c), !1, Number.MAX_VALUE);
              b = new a.display.AVM1Movie(b);
              var c = this._contentLoaderInfo._parameters, g;
              for (g in c) {
                g in f || (f[g] = c[g]);
              }
              return b;
            };
            b.classInitializer = function() {
              b._rootLoader = null;
              b._loadQueue = [];
              b.runtimeStartTime = 0;
              b._embeddedContentLoadCount = 0;
            };
            b.initializer = function() {
              k.DisplayObject._advancableInstances.push(this);
            };
            b.classSymbols = null;
            b.instanceSymbols = null;
            return b;
          }(a.display.DisplayObjectContainer);
          k.Loader = 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(a) {
        (function(v) {
          var u = d.Debug.notImplemented, t = d.Debug.somewhatImplemented, l = d.SWF.SWFFile, c = function(c) {
            function p(c) {
              c !== p.CtorToken && throwError("ArgumentError", k.Errors.CantInstantiateError, "LoaderInfo$");
              a.events.EventDispatcher.instanceConstructorNoInitialize.call(this);
              this._loader = null;
              this._loaderUrl = "";
              this.reset();
            }
            __extends(p, c);
            p.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;
            };
            p.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);
            };
            p.getLoaderInfoByDefinition = function(a) {
              u("public flash.display.LoaderInfo::static getLoaderInfoByDefinition");
            };
            Object.defineProperty(p.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(p.prototype, "url", {get:function() {
              return this._file ? this._url : null;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "isURLInaccessible", {get:function() {
              t("public flash.display.LoaderInfo::get isURLInaccessible");
              return this._file ? !1 : !0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "bytesLoaded", {get:function() {
              return this._bytesLoaded;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "bytesTotal", {get:function() {
              return this._bytesTotal;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "applicationDomain", {get:function() {
              t("public flash.display.LoaderInfo::get applicationDomain");
              return this._file ? a.system.ApplicationDomain.currentDomain : null;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.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(p.prototype, "actionScriptVersion", {get:function() {
              this._file || throwError("Error", k.Errors.LoadingObjectNotInitializedError);
              this._file instanceof l || throwError("Error", k.Errors.LoadingObjectNotSWFError);
              return this._file.useAVM1 ? v.ActionScriptVersion.ACTIONSCRIPT2 : v.ActionScriptVersion.ACTIONSCRIPT3;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.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(p.prototype, "width", {get:function() {
              this._file || throwError("Error", k.Errors.LoadingObjectNotInitializedError);
              return this._width / 20 | 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "height", {get:function() {
              this._file || throwError("Error", k.Errors.LoadingObjectNotInitializedError);
              return this._height / 20 | 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.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(p.prototype, "sharedEvents", {get:function() {
              t("public flash.display.LoaderInfo::get sharedEvents");
              this._sharedEvents || (this._sharedEvents = new a.events.EventDispatcher);
              return this._sharedEvents;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "parentSandboxBridge", {get:function() {
              t("public flash.display.LoaderInfo::get parentSandboxBridge");
              return this._parentSandboxBridge;
            }, set:function(a) {
              t("public flash.display.LoaderInfo::set parentSandboxBridge");
              this._parentSandboxBridge = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "childSandboxBridge", {get:function() {
              t("public flash.display.LoaderInfo::get childSandboxBridge");
              return this._childSandboxBridge;
            }, set:function(a) {
              t("public flash.display.LoaderInfo::set childSandboxBridge");
              this._childSandboxBridge = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "sameDomain", {get:function() {
              this._file || throwError("Error", k.Errors.LoadingObjectNotInitializedError);
              t("public flash.display.LoaderInfo::get sameDomain");
              return!0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "childAllowsParent", {get:function() {
              this._file || throwError("Error", k.Errors.LoadingObjectNotInitializedError);
              t("public flash.display.LoaderInfo::get childAllowsParent");
              return!0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "parentAllowsChild", {get:function() {
              this._file || throwError("Error", k.Errors.LoadingObjectNotInitializedError);
              t("public flash.display.LoaderInfo::get parentAllowsChild");
              return!0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "loader", {get:function() {
              return this._loader;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "content", {get:function() {
              return this._loader && this._loader.content;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "bytes", {get:function() {
              if (!this._file) {
                return new a.utils.ByteArray;
              }
              u("public flash.display.LoaderInfo::get bytes");
              return null;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "parameters", {get:function() {
              t("public flash.display.LoaderInfo::get parameters");
              return this._parameters ? d.ObjectUtilities.cloneObject(this._parameters) : {};
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(p.prototype, "uncaughtErrorEvents", {get:function() {
              t("public flash.display.LoaderInfo::_getUncaughtErrorEvents");
              this._uncaughtErrorEvents || (this._uncaughtErrorEvents = new a.events.UncaughtErrorEvents);
              return this._uncaughtErrorEvents;
            }, enumerable:!0, configurable:!0});
            p.prototype.getSymbolResolver = function(a, c) {
              return this.resolveClassSymbol.bind(this, a, c);
            };
            p.prototype.getSymbolById = function(c) {
              var h = this._dictionary[c];
              if (h) {
                return!1 === h.ready ? null : h;
              }
              var g = this._file.getSymbol(c);
              if (!g) {
                return null;
              }
              switch(g.type) {
                case "shape":
                  h = a.display.ShapeSymbol.FromData(g, this);
                  break;
                case "morphshape":
                  h = a.display.MorphShapeSymbol.FromData(g, this);
                  break;
                case "image":
                  g.definition && (g = g.definition);
                  h = a.display.BitmapSymbol.FromData(g);
                  break;
                case "label":
                  h = a.text.TextSymbol.FromLabelData(g, this);
                  break;
                case "text":
                  h = a.text.TextSymbol.FromTextData(g, this);
                  this._syncAVM1Attributes(h);
                  break;
                case "button":
                  h = a.display.ButtonSymbol.FromData(g, this);
                  this._syncAVM1Attributes(h);
                  break;
                case "sprite":
                  h = a.display.SpriteSymbol.FromData(g, this);
                  break;
                case "font":
                  g.definition && (g = g.definition);
                  var h = a.text.FontSymbol.FromData(g), f = a.text.Font.initializeFrom(h);
                  a.text.Font.instanceConstructorNoInitialize.call(f);
                  break;
                case "sound":
                  h = a.media.SoundSymbol.FromData(g);
                  break;
                case "binary":
                  h = d.Timeline.BinarySymbol.FromData(g);
              }
              this._dictionary[c] = h;
              !1 === h.ready && k.Runtime.AVM2.instance.globals["Shumway.Player.Utils"].registerFontOrImage(h, g);
              return h;
            };
            p.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;
            };
            p.prototype._syncAVM1Attributes = function(a) {
              this.actionScriptVersion === v.ActionScriptVersion.ACTIONSCRIPT2 && (a.isAVM1Object = !0, a.avm1Context = this._avm1Context);
            };
            p.prototype.getFrame = function(a, c) {
              var d = this._file;
              a || (a = d);
              return a.frames[c];
            };
            p.prototype.resolveClassSymbol = function(a, c) {
              var d = this.getSymbolById(c);
              if (d) {
                return Object.defineProperty(a, "defaultInitializerArgument", {value:d}), d;
              }
            };
            p.classInitializer = null;
            p.initializer = null;
            p.classSymbols = null;
            p.instanceSymbols = null;
            p.CtorToken = {};
            return p;
          }(a.events.EventDispatcher);
          v.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 u = d.Debug.somewhatImplemented, t = function(d) {
            function c() {
              a.events.EventDispatcher.instanceConstructorNoInitialize.call(this);
              this._enabled = !0;
            }
            __extends(c, d);
            Object.defineProperty(c.prototype, "enabled", {get:function() {
              u("public flash.display.NativeMenuItem::get enabled");
              return this._enabled;
            }, set:function(a) {
              a = !!a;
              u("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 = t;
        })(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 r = d.Debug.dummyConstructor, t = function(a) {
            function c(a) {
              r("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 = t;
        })(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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = t;
        })(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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = t;
        })(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 r = d.AVM2.Runtime.asCoerceString, t = function(a) {
            function c(a, c, d, l) {
              this._name = r(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 g = d[l];
                if (c ? g.name.toLowerCase() === a : g.name === a) {
                  return g;
                }
              }
              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 = t;
        })(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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = t;
        })(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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = t;
        })(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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = t;
        })(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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = t;
        })(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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = t;
        })(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 u = d.Debug.notImplemented, t = 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) {
              u("AVM1Movie#call");
            };
            c.prototype.addCallback = function(a, c) {
              u("AVM1Movie#call");
            };
            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, g, f) {
              return 3 === g ? this._content._containsPoint(a, c, d, l, g, f) : 0 === g && 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 = t;
        })(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 r = d.Debug.dummyConstructor, t = d.AVM2.Runtime.asCoerceString, l = function(a) {
            function d(a, c) {
              void 0 === a && (a = "");
              t(a);
              r("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 r = d.Debug.dummyConstructor, t = d.AVM2.Runtime.asCoerceString, l = d.Telemetry, c = d.AVM2.Runtime.forEachPublicProperty, h = d.ExternalInterfaceService, p = function(d) {
            function k() {
              r("public flash.external.ExternalInterface");
            }
            __extends(k, d);
            k._getAvailable = function() {
              return h.instance.enabled;
            };
            k._initJS = function() {
              k.initialized || (l.instance.reportTelemetry({topic:"feature", feature:1}), k.initialized = !0, h.instance.initJS(k._callIn));
            };
            k._callIn = function(c, f) {
              var b = k.registeredCallbacks[c];
              if (b) {
                return b(c, a.ASJSON.transformJSValueToAS(f, !0));
              }
            };
            k._getPropNames = function(a) {
              var f = [];
              c(a, function(a) {
                f.push(a);
              }, null);
              return f;
            };
            k._addCallback = function(a, c, b) {
              b ? (h.instance.unregisterCallback(a), delete k.registeredCallbacks[a]) : (h.instance.registerCallback(a), k.registeredCallbacks[a] = c);
            };
            k._evalJS = function(a) {
              a = t(a);
              return h.instance.eval(a);
            };
            k._callOut = function(a) {
              a = t(a);
              return h.instance.call(a);
            };
            Object.defineProperty(k, "available", {get:function() {
              return k._getAvailable();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(k, "objectID", {get:function() {
              return h.instance.getId();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(k, "activeX", {get:function() {
              return!1;
            }, enumerable:!0, configurable:!0});
            k.classInitializer = null;
            k.initializer = null;
            k.classSymbols = null;
            k.instanceSymbols = null;
            k.initialized = !1;
            k.registeredCallbacks = Object.create(null);
            return k;
          }(a.ASNative);
          k.ExternalInterface = p;
        })(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 r = function(a) {
            function d() {
            }
            __extends(d, a);
            d._updateBlurBounds = function(a, h, k, s, m) {
              void 0 === m && (m = !1);
              s = d.blurFilterStepWidths[s - 1];
              m && (m = s / 4, h -= m, k -= m);
              a.inflate(Math.ceil((1 > h ? 1 : h) * s), Math.ceil((1 > k ? 1 : k) * s));
            };
            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 = r;
          r = function() {
            function a() {
            }
            a.sanitize = function(a, c, h) {
              if (d.isNullOrUndefined(a) || 0 === a.length) {
                this.colors = [], this.alphas = [], this.ratios = [];
              } else {
                var k;
                d.isNullOrUndefined(h) ? (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 === h.length ? (this.colors = [], this.alphas = [], this.ratios = []) : (k = Math.min(a.length, h.length, 16), this.colors = this.sanitizeColors(a, k), this.ratios = this.sanitizeRatios(h, 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, s = Math.min(a.length, c);k < s;k++) {
                d[k] = a[k] >>> 0 & 16777215;
              }
              return d;
            };
            a.sanitizeAlphas = function(a, c, h, k) {
              void 0 === c && (c = 16);
              void 0 === h && (h = 0);
              void 0 === k && (k = 0);
              var s = [], m = 0;
              for (c = Math.min(a.length, c);m < c;m++) {
                s[m] = d.NumberUtilities.clamp(+a[m], 0, 1);
              }
              for (;m < h;) {
                s[m++] = k;
              }
              return s;
            };
            a.sanitizeRatios = function(a, c, h) {
              var k;
              void 0 === c && (c = 16);
              void 0 === h && (h = 0);
              void 0 === k && (k = 0);
              var s = [], m = 0;
              for (c = Math.min(a.length, c);m < c;m++) {
                s[m] = d.NumberUtilities.clamp(+a[m], 0, 255);
              }
              for (;m < h;) {
                s[m++] = k;
              }
              return s;
            };
            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 = r;
        })(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(v) {
          var u = d.AVM2.Runtime.asCoerceString, t = function(l) {
            function c(a, c, d, l, g, f, b, e, q, n, k, r) {
              void 0 === a && (a = 4);
              void 0 === c && (c = 45);
              void 0 === d && (d = 16777215);
              void 0 === l && (l = 1);
              void 0 === g && (g = 0);
              void 0 === f && (f = 1);
              void 0 === b && (b = 4);
              void 0 === e && (e = 4);
              void 0 === q && (q = 1);
              void 0 === n && (n = 1);
              void 0 === k && (k = "inner");
              void 0 === r && (r = !1);
              this.distance = a;
              this.angle = c;
              this.highlightColor = d;
              this.highlightAlpha = l;
              this.shadowColor = g;
              this.shadowAlpha = f;
              this.blurX = b;
              this.blurY = e;
              this.strength = q;
              this.quality = n;
              this.type = k;
              this.knockout = r;
            }
            __extends(c, l);
            c.FromUntyped = function(d) {
              var l = d.highlightColor >>> 8, k = (d.highlightColor & 255) / 255, m = d.colors[0] >>> 8, g = (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, g, d.blurX, d.blurY, d.strength, d.quality, f, d.knockout);
            };
            c.prototype._updateFilterBounds = function(a) {
              if (this.type !== v.BitmapFilterType.INNER && (v.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 = u(a);
              null === a ? k.Runtime.throwError("TypeError", k.Errors.NullPointerError, "type") : this._type = a === v.BitmapFilterType.INNER || a === v.BitmapFilterType.OUTER ? a : v.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);
          v.BevelFilter = t;
        })(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 u = 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 = 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(v) {
          var u = 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 h = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], l = 0, s = Math.min(a.length, 20);l < s;l++) {
                  h[l] = d.toNumber(a[l]);
                }
                this._matrix = h;
              }
            }, 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);
          v.ColorMatrixFilter = 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(v) {
          var u = function(a) {
            function l(a, d, l, k, m, g, 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 === g && (g = !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 = g;
              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 h = this._matrixX * this._matrixY, l = Math.min(a.length, h), s = Array(l), m = 0;m < l;m++) {
                  s[m] = d.toNumber(a[m]);
                }
                this._expandArray(s, h);
                this._matrix = s;
              }
            }, 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);
          v.ConvolutionFilter = 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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = t;
        })(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 u = d.Debug.somewhatImplemented, t = d.AVM2.Runtime.asCoerceString, l = function(a) {
            function d(a, c, h, g, f, b, e, l, n) {
              void 0 === a && (a = null);
              void 0 === c && (c = null);
              void 0 === h && (h = 0);
              void 0 === g && (g = 0);
              void 0 === f && (f = 0);
              void 0 === b && (b = 0);
              void 0 === e && (e = "wrap");
              void 0 === l && (l = 0);
              void 0 === n && (n = 0);
              this.mapBitmap = a;
              this.mapPoint = c;
              this.componentX = h;
              this.componentY = g;
              this.scaleX = f;
              this.scaleY = b;
              this.mode = e;
              this.color = l;
              this.alpha = n;
            }
            __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() {
              u("public flash.filters.DisplacementMapFilter::get mapBitmap");
              return this._mapBitmap;
            }, set:function(a) {
              u("public flash.filters.DisplacementMapFilter::set mapBitmap");
              this._mapBitmap = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "mapPoint", {get:function() {
              u("public flash.filters.DisplacementMapFilter::get mapPoint");
              return this._mapPoint;
            }, set:function(a) {
              u("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) {
              u("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) {
              u("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) {
              u("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) {
              u("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) {
              u("public flash.filters.DisplacementMapFilter::set mode");
              this._mode = t(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "color", {get:function() {
              return this._color;
            }, set:function(a) {
              u("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) {
              u("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 u = function(a) {
            function l(a, d, l, k, m, g, f, b, e, q, n) {
              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 === g && (g = 4);
              void 0 === f && (f = 1);
              void 0 === b && (b = 1);
              void 0 === e && (e = !1);
              void 0 === q && (q = !1);
              void 0 === n && (n = !1);
              this.distance = a;
              this.angle = d;
              this.color = l;
              this.alpha = k;
              this.blurX = m;
              this.blurY = g;
              this.strength = f;
              this.quality = b;
              this.inner = e;
              this.knockout = q;
              this.hideObject = n;
            }
            __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 = 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 u = function(a) {
            function l(a, d, l, k, m, g, 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 === g && (g = 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 = g;
              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 = 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(v) {
          var u = d.AVM2.Runtime.asCoerceString, t = function(l) {
            function c(a, c, d, l, g, f, b, e, q, n, k) {
              void 0 === a && (a = 4);
              void 0 === c && (c = 45);
              void 0 === d && (d = null);
              void 0 === l && (l = null);
              void 0 === g && (g = null);
              void 0 === f && (f = 4);
              void 0 === b && (b = 4);
              void 0 === e && (e = 1);
              void 0 === q && (q = 1);
              void 0 === n && (n = "inner");
              void 0 === k && (k = !1);
              this.distance = a;
              this.angle = c;
              v.GradientArrays.sanitize(d, l, g);
              this._colors = v.GradientArrays.colors;
              this._alphas = v.GradientArrays.alphas;
              this._ratios = v.GradientArrays.ratios;
              this.blurX = f;
              this.blurY = b;
              this.strength = e;
              this.quality = q;
              this.type = n;
              this.knockout = k;
            }
            __extends(c, l);
            c.FromUntyped = function(d) {
              for (var l = [], k = [], m = 0;m < d.colors.length;m++) {
                var g = d.colors[m];
                l.push(g >>> 8);
                k.push(g & 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 !== v.BitmapFilterType.INNER && (v.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 = v.GradientArrays.sanitizeColors(a), a = this._colors.length, this._alphas = v.GradientArrays.sanitizeAlphas(this._alphas, a, a), this._ratios = v.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") : (v.GradientArrays.sanitize(this._colors, a, this._ratios), this._colors = v.GradientArrays.colors, this._alphas = v.GradientArrays.alphas, this._ratios = v.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") : (v.GradientArrays.sanitize(this._colors, this._alphas, a), this._colors = v.GradientArrays.colors, this._alphas = v.GradientArrays.alphas, this._ratios = v.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 = u(a);
              null === a ? k.Runtime.throwError("TypeError", k.Errors.NullPointerError, "type") : this._type = a === v.BitmapFilterType.INNER || a === v.BitmapFilterType.OUTER ? a : v.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);
          v.GradientBevelFilter = t;
        })(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(v) {
          var u = d.AVM2.Runtime.asCoerceString, t = function(l) {
            function c(a, c, d, l, g, f, b, e, q, n, k) {
              void 0 === a && (a = 4);
              void 0 === c && (c = 45);
              void 0 === d && (d = null);
              void 0 === l && (l = null);
              void 0 === g && (g = null);
              void 0 === f && (f = 4);
              void 0 === b && (b = 4);
              void 0 === e && (e = 1);
              void 0 === q && (q = 1);
              void 0 === n && (n = "inner");
              void 0 === k && (k = !1);
              this.distance = a;
              this.angle = c;
              v.GradientArrays.sanitize(d, l, g);
              this._colors = v.GradientArrays.colors;
              this._alphas = v.GradientArrays.alphas;
              this._ratios = v.GradientArrays.ratios;
              this.blurX = f;
              this.blurY = b;
              this.strength = e;
              this.quality = q;
              this.type = n;
              this.knockout = k;
            }
            __extends(c, l);
            c.FromUntyped = function(d) {
              for (var l = [], k = [], m = 0;m < d.colors.length;m++) {
                var g = d.colors[m];
                l.push(g >>> 8);
                k.push(g & 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 !== v.BitmapFilterType.INNER && (v.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 = v.GradientArrays.sanitizeColors(a), a = this._colors.length, this._alphas = v.GradientArrays.sanitizeAlphas(this._alphas, a, a), this._ratios = v.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") : (v.GradientArrays.sanitize(this._colors, a, this._ratios), this._colors = v.GradientArrays.colors, this._alphas = v.GradientArrays.alphas, this._ratios = v.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") : (v.GradientArrays.sanitize(this._colors, this._alphas, a), this._colors = v.GradientArrays.colors, this._alphas = v.GradientArrays.alphas, this._ratios = v.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 = u(a);
              null === a ? k.Runtime.throwError("TypeError", k.Errors.NullPointerError, "type") : this._type = a === v.BitmapFilterType.INNER || a === v.BitmapFilterType.OUTER ? a : v.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);
          v.GradientGlowFilter = t;
        })(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 r = d.IntegerUtilities.toS16, t = d.IntegerUtilities.clampS8U8, l = function(a) {
            function d(a, c, h, g, f, b, e, l) {
              void 0 === a && (a = 1);
              void 0 === c && (c = 1);
              void 0 === h && (h = 1);
              void 0 === g && (g = 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 = +h;
              this.alphaMultiplier = +g;
              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, g, f, b, e, h) {
              void 0 === a && (a = 1);
              void 0 === c && (c = 1);
              void 0 === d && (d = 1);
              void 0 === g && (g = 1);
              void 0 === f && (f = 0);
              void 0 === b && (b = 0);
              void 0 === e && (e = 0);
              void 0 === h && (h = 0);
              this.redMultiplier = a;
              this.greenMultiplier = c;
              this.blueMultiplier = d;
              this.alphaMultiplier = g;
              this.redOffset = f;
              this.greenOffset = b;
              this.blueOffset = e;
              this.alphaOffset = h;
            };
            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, g, f, b, e, h) {
              this.redMultiplier = a;
              this.greenMultiplier = c;
              this.blueMultiplier = d;
              this.alphaMultiplier = g;
              this.redOffset = f;
              this.greenOffset = b;
              this.blueOffset = e;
              this.alphaOffset = h;
            };
            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 = t(this.redMultiplier);
              this.greenMultiplier = t(this.greenMultiplier);
              this.blueMultiplier = t(this.blueMultiplier);
              this.alphaMultiplier = t(this.alphaMultiplier);
              this.redOffset = r(this.redOffset);
              this.greenOffset = r(this.greenOffset);
              this.blueOffset = r(this.blueOffset);
              this.alphaOffset = r(this.alphaOffset);
              return this;
            };
            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 u = d.Debug.notImplemented, t = d.Debug.dummyConstructor, l = d.AVM2.Runtime.asCoerceString, c = function(a) {
            function c() {
              t("public flash.media.Camera");
            }
            __extends(c, a);
            Object.defineProperty(c.prototype, "names", {get:function() {
              u("public flash.media.Camera::get names");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "isSupported", {get:function() {
              u("public flash.media.Camera::get isSupported");
            }, enumerable:!0, configurable:!0});
            c.getCamera = function(a) {
              void 0 === a && (a = null);
              l(a);
              u("public flash.media.Camera::static getCamera");
            };
            c._scanHardware = function() {
              u("public flash.media.Camera::static _scanHardware");
            };
            Object.defineProperty(c.prototype, "activityLevel", {get:function() {
              u("public flash.media.Camera::get activityLevel");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "bandwidth", {get:function() {
              u("public flash.media.Camera::get bandwidth");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "currentFPS", {get:function() {
              u("public flash.media.Camera::get currentFPS");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "fps", {get:function() {
              u("public flash.media.Camera::get fps");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "height", {get:function() {
              u("public flash.media.Camera::get height");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "index", {get:function() {
              u("public flash.media.Camera::get index");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "keyFrameInterval", {get:function() {
              u("public flash.media.Camera::get keyFrameInterval");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "loopback", {get:function() {
              u("public flash.media.Camera::get loopback");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "motionLevel", {get:function() {
              u("public flash.media.Camera::get motionLevel");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "motionTimeout", {get:function() {
              u("public flash.media.Camera::get motionTimeout");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "muted", {get:function() {
              u("public flash.media.Camera::get muted");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "name", {get:function() {
              u("public flash.media.Camera::get name");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "position", {get:function() {
              u("public flash.media.Camera::get position");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "quality", {get:function() {
              u("public flash.media.Camera::get quality");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "width", {get:function() {
              u("public flash.media.Camera::get width");
            }, enumerable:!0, configurable:!0});
            c.prototype.setCursor = function(a) {
              u("public flash.media.Camera::setCursor");
            };
            c.prototype.setKeyFrameInterval = function(a) {
              u("public flash.media.Camera::setKeyFrameInterval");
            };
            c.prototype.setLoopback = function(a) {
              u("public flash.media.Camera::setLoopback");
            };
            c.prototype.setMode = function(a, c, d, f) {
              u("public flash.media.Camera::setMode");
            };
            c.prototype.setMotionLevel = function(a, c) {
              u("public flash.media.Camera::setMotionLevel");
            };
            c.prototype.setQuality = function(a, c) {
              u("public flash.media.Camera::setQuality");
            };
            c.prototype.drawToBitmapData = function(a) {
              u("public flash.media.Camera::drawToBitmapData");
            };
            c.prototype.copyToByteArray = function(a, c) {
              u("public flash.media.Camera::copyToByteArray");
            };
            c.prototype.copyToVector = function(a, c) {
              u("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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = 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 u = d.Debug.notImplemented, t = d.Debug.somewhatImplemented, l = d.Debug.dummyConstructor, c = d.AVM2.Runtime.asCoerceString, h = function(a) {
            function d() {
              l("public flash.media.Microphone");
            }
            __extends(d, a);
            Object.defineProperty(d, "names", {get:function() {
              t("public flash.media.Microphone::get names");
              return[];
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "isSupported", {get:function() {
              t("public flash.media.Microphone::get isSupported");
              return!1;
            }, enumerable:!0, configurable:!0});
            d.getMicrophone = function(a) {
              u("public flash.media.Microphone::static getMicrophone");
            };
            d.getEnhancedMicrophone = function(a) {
              u("public flash.media.Microphone::static getEnhancedMicrophone");
            };
            Object.defineProperty(d.prototype, "rate", {get:function() {
              u("public flash.media.Microphone::get rate");
            }, set:function(a) {
              u("public flash.media.Microphone::set rate");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "codec", {get:function() {
              u("public flash.media.Microphone::get codec");
            }, set:function(a) {
              c(a);
              u("public flash.media.Microphone::set codec");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "framesPerPacket", {get:function() {
              u("public flash.media.Microphone::get framesPerPacket");
            }, set:function(a) {
              u("public flash.media.Microphone::set framesPerPacket");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "encodeQuality", {get:function() {
              u("public flash.media.Microphone::get encodeQuality");
            }, set:function(a) {
              u("public flash.media.Microphone::set encodeQuality");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "noiseSuppressionLevel", {get:function() {
              u("public flash.media.Microphone::get noiseSuppressionLevel");
            }, set:function(a) {
              u("public flash.media.Microphone::set noiseSuppressionLevel");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "enableVAD", {get:function() {
              u("public flash.media.Microphone::get enableVAD");
            }, set:function(a) {
              u("public flash.media.Microphone::set enableVAD");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "activityLevel", {get:function() {
              u("public flash.media.Microphone::get activityLevel");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "gain", {get:function() {
              u("public flash.media.Microphone::get gain");
            }, set:function(a) {
              u("public flash.media.Microphone::set gain");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "index", {get:function() {
              u("public flash.media.Microphone::get index");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "muted", {get:function() {
              u("public flash.media.Microphone::get muted");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "name", {get:function() {
              u("public flash.media.Microphone::get name");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "silenceLevel", {get:function() {
              u("public flash.media.Microphone::get silenceLevel");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "silenceTimeout", {get:function() {
              u("public flash.media.Microphone::get silenceTimeout");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "useEchoSuppression", {get:function() {
              u("public flash.media.Microphone::get useEchoSuppression");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "soundTransform", {get:function() {
              u("public flash.media.Microphone::get soundTransform");
            }, set:function(a) {
              u("public flash.media.Microphone::set soundTransform");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "enhancedOptions", {get:function() {
              u("public flash.media.Microphone::get enhancedOptions");
            }, set:function(a) {
              u("public flash.media.Microphone::set enhancedOptions");
            }, enumerable:!0, configurable:!0});
            d.prototype.setSilenceLevel = function(a, c) {
              u("public flash.media.Microphone::setSilenceLevel");
            };
            d.prototype.setUseEchoSuppression = function(a) {
              u("public flash.media.Microphone::setUseEchoSuppression");
            };
            d.prototype.setLoopBack = function(a) {
              u("public flash.media.Microphone::setLoopBack");
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(a.events.EventDispatcher);
          k.Microphone = h;
        })(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(v) {
          function u(a, c) {
            var b = document.createElement("audio");
            b.canPlayType(a.mimeType) ? (b.preload = "metadata", b.src = URL.createObjectURL(new Blob([a.data], {type:a.mimeType})), b.load(), b.addEventListener("loadedmetadata", function() {
              c({duration:1E3 * this.duration});
            })) : c({duration:0});
          }
          var t = d.Debug.notImplemented, l = d.AVM2.Runtime.asCoerceString, c = d.Debug.somewhatImplemented, h = d.Telemetry, p = d.AVM2.ABC.Multiname, s = function() {
            return function() {
            };
          }(), m = function(g) {
            function f(a, e) {
              k.events.EventDispatcher.instanceConstructorNoInitialize.call(this);
              this._isBuffering = this._isURLInaccessible = !1;
              this.load(a, e);
            }
            __extends(f, g);
            Object.defineProperty(f.prototype, "url", {get:function() {
              return this._url;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "isURLInaccessible", {get:function() {
              c("public flash.media.Sound::get isURLInaccessible");
              return this._isURLInaccessible;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "length", {get:function() {
              return this._length;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "isBuffering", {get:function() {
              c("public flash.media.Sound::get isBuffering");
              return this._isBuffering;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "bytesLoaded", {get:function() {
              return this._bytesLoaded;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "bytesTotal", {get:function() {
              return this._bytesTotal;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "id3", {get:function() {
              return this._id3;
            }, enumerable:!0, configurable:!0});
            f.prototype.loadCompressedDataFromByteArray = function(a, e) {
              t("public flash.media.Sound::loadCompressedDataFromByteArray");
            };
            f.prototype.loadPCMFromByteArray = function(a, e, c, f, d) {
              void 0 === c && (c = "float");
              l(c);
              t("public flash.media.Sound::loadPCMFromByteArray");
            };
            f.prototype.play = function(b, e, c) {
              void 0 === b && (b = 0);
              void 0 === e && (e = 0);
              void 0 === c && (c = null);
              b = +b;
              e |= 0;
              var f = new k.media.SoundChannel;
              f._sound = this;
              f._soundTransform = d.isNullOrUndefined(c) ? new k.media.SoundTransform : c;
              this._playQueue.push({channel:f, startTime:b});
              if (a.disableAudioOption.value) {
                return f;
              }
              this._soundData && (a.webAudioOption.value || a.webAudioMP3Option.value ? this._soundData.pcm ? f._playSoundDataViaChannel(this._soundData, b, e) : "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;
                f._playSoundDataViaChannel(this._soundData, b, e);
              }.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) : f._playSoundDataViaAudio(this._soundData, b, e));
              return f;
            };
            f.prototype.close = function() {
              c("public flash.media.Sound::close");
            };
            f.prototype.extract = function(a, e, c) {
              t("public flash.media.Sound::extract");
            };
            f.prototype.load = function(b, e) {
              if (b) {
                var c = this, f = this._stream = new k.net.URLStream, d = new k.utils.ByteArray, g = 0, h = a.webAudioOption.value, l = null, m = new s;
                m.completed = !1;
                f.addEventListener("progress", function(a) {
                  c._bytesLoaded = a[p.getPublicQualifiedName("bytesLoaded")];
                  c._bytesTotal = a[p.getPublicQualifiedName("bytesTotal")];
                  h && !l && (l = decodeMP3(m, function(a, b) {
                    0 === c._length && (c._soundData = m, c._playQueue.forEach(function(a) {
                      a.channel._playSoundDataViaChannel(m, a.startTime);
                    }));
                    c._length = b ? 1E3 * a : 1E3 * Math.max(a, l.estimateDuration(c._bytesTotal));
                  }));
                  var b = f.bytesAvailable;
                  f.readBytes(d, g, b);
                  l && l.pushData(new Uint8Array(d._buffer, g, b));
                  g += b;
                  c.dispatchEvent(a);
                });
                f.addEventListener("complete", function(a) {
                  c.dispatchEvent(a);
                  m.data = d._buffer;
                  m.mimeType = "audio/mpeg";
                  m.completed = !0;
                  h || (c._soundData = m, u(m, function(a) {
                    c._length = a.duration;
                  }), c._playQueue.forEach(function(a) {
                    a.channel._playSoundDataViaAudio(m, a.startTime);
                  }));
                  l && l.close();
                });
                f.load(b);
              }
            };
            f.classInitializer = null;
            f.initializer = function(a) {
              this._playQueue = [];
              this._url = null;
              this._bytesLoaded = this._bytesTotal = this._length = 0;
              this._id3 = new k.media.ID3Info;
              h.instance.reportTelemetry({topic:"feature", feature:5});
              if (a) {
                var e = new s;
                e.sampleRate = a.sampleRate;
                e.channels = a.channels;
                e.completed = !0;
                a.pcm && (e.pcm = a.pcm, e.end = a.pcm.length);
                a.packaged && (e.data = a.packaged.data.buffer, e.mimeType = a.packaged.mimeType);
                var c = this;
                u(e, function(a) {
                  c._length = a.duration;
                });
                this._soundData = e;
              }
            };
            f.classSymbols = null;
            f.instanceSymbols = null;
            return f;
          }(k.events.EventDispatcher);
          v.Sound = m;
          m = function(a) {
            function c(b) {
              a.call(this, b, k.media.Sound);
            }
            __extends(c, a);
            c.FromData = function(a) {
              var e = new c(a);
              e.channels = a.channels;
              e.sampleRate = a.sampleRate;
              e.pcm = a.pcm;
              e.packaged = a.packaged;
              return e;
            };
            return c;
          }(d.Timeline.Symbol);
          v.SoundSymbol = m;
        })(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 u = d.Debug.dummyConstructor, t = 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 = [], h = 0;h < a.length;h++) {
                d.push(new Float32Array(e));
              }
              this.ondatarequested({data:d, count:e});
              for (h = 0;h < a.length;h++) {
                for (var l = a[h], k = d[h], p = 0;p < c;p++) {
                  var s = p * f + b, r = s | 0, u = Math.ceil(s) | 0, t = 0 > r ? this._tail[h] : k[r];
                  r === u ? l[p] = t : (s -= r, l[p] = t * (1 - s) + k[u] * s);
                }
                this._tail[h] = k[e - 1];
              }
              this._sourceOffset = (c - 1) * f + b - (e - 1);
            };
            return a;
          }(), h = function() {
            function a(d, g) {
              var f = a._cachedContext;
              f || (f = new AudioContext, a._cachedContext = f);
              this._context = f;
              this._contextSampleRate = f.sampleRate || 44100;
              this._channels = g;
              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 h = 0;h < f;h++) {
                  a[h][e] = b[d++];
                }
              }
            };
            a.isSupported = function() {
              return "undefined" !== typeof AudioContext;
            };
            return a;
          }(), p = function(c) {
            function m() {
              u("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) {
              t("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});
            m.prototype.stop = function() {
              this._element && (k.SoundMixer._unregisterSoundSource(this), this._element.loop = !1, this._element.pause(), this._element.removeAttribute("src"));
              this._audioChannel && (k.SoundMixer._unregisterSoundSource(this), this._audioChannel.stop());
            };
            m.prototype._playSoundDataViaAudio = function(c, f, b) {
              if (c.mimeType) {
                k.SoundMixer._registerSoundSource(this);
                this._position = f;
                var e = this, d = 0, h = document.createElement("audio");
                h.canPlayType(c.mimeType) ? (h.preload = "metadata", h.loop = 0 < b, h.src = URL.createObjectURL(new Blob([c.data], {type:c.mimeType})), h.addEventListener("loadeddata", function() {
                  h.currentTime = f / 1E3;
                  h.play();
                }), h.addEventListener("timeupdate", function() {
                  var a = h.currentTime;
                  b && d > a && (--b, b || (h.loop = !1), a < f / 1E3 && (h.currentTime = f / 1E3));
                  e._position = 1E3 * (d = a);
                }), h.addEventListener("ended", function() {
                  k.SoundMixer._unregisterSoundSource(e);
                  e.dispatchEvent(new a.events.Event("soundComplete", !1, !1));
                  e._element = null;
                }), this._element = h, 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, n = d;
              this._position = f;
              h.isSupported ? f = new h(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 h = c.end;
                if (n >= h && c.completed) {
                  k.SoundMixer._unregisterSoundSource(this), e._audioChannel.stop(), e.dispatchEvent(new a.events.Event("soundComplete", !1, !1));
                } else {
                  var l = f.count;
                  f = f.data;
                  var m = c.pcm;
                  do {
                    for (var p = Math.min(h - n, l), s = 0;s < p;s++) {
                      f[s] = m[n++];
                    }
                    l -= p;
                    if (n >= h) {
                      if (!b) {
                        break;
                      }
                      b--;
                      n = d;
                    }
                  } while (0 < l);
                  e._position = n / c.sampleRate / c.channels * 1E3;
                }
              };
              this._audioChannel.start();
              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;
            };
            m.classSymbols = null;
            m.instanceSymbols = null;
            return m;
          }(a.events.EventDispatcher);
          k.SoundChannel = p;
        })(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 r = d.Debug.dummyConstructor, t = function(a) {
            function c(a, c) {
              r("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 = 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(k) {
        (function(v) {
          var u = d.Debug.notImplemented, t = d.Debug.dummyConstructor, l = d.AVM2.Runtime.asCoerceString, c = d.Debug.somewhatImplemented, h = function(a) {
            function h() {
              t("public flash.media.SoundMixer");
            }
            __extends(h, a);
            Object.defineProperty(h, "bufferTime", {get:function() {
              u("public flash.media.SoundMixer::get bufferTime");
              return h._bufferTime;
            }, set:function(a) {
              c("public flash.media.SoundMixer::set bufferTime");
              h._bufferTime = a | 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h, "soundTransform", {get:function() {
              c("public flash.media.SoundMixer::get soundTransform");
              return d.isNullOrUndefined(h._soundTransform) ? new k.media.SoundTransform : new k.media.SoundTransform(h._soundTransform.volume, h._soundTransform.pan);
            }, set:function(a) {
              c("public flash.media.SoundMixer::set soundTransform");
              h._soundTransform = d.isNullOrUndefined(a) ? new k.media.SoundTransform : a;
              h._updateAllSoundSources();
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h, "audioPlaybackMode", {get:function() {
              u("public flash.media.SoundMixer::get audioPlaybackMode");
            }, set:function(a) {
              l(a);
              u("public flash.media.SoundMixer::set audioPlaybackMode");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h, "useSpeakerphoneForVoice", {get:function() {
              u("public flash.media.SoundMixer::get useSpeakerphoneForVoice");
            }, set:function(a) {
              u("public flash.media.SoundMixer::set useSpeakerphoneForVoice");
            }, enumerable:!0, configurable:!0});
            h.stopAll = function() {
              h._registeredSoundSources.forEach(function(a) {
                a.stopSound();
              });
              h._registeredSoundSources = [];
            };
            h.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;
            };
            h.areSoundsInaccessible = function() {
              u("public flash.media.SoundMixer::static areSoundsInaccessible");
            };
            h._getMasterVolume = function() {
              return h._masterVolume;
            };
            h._setMasterVolume = function(a) {
              h._masterVolume = +a;
              h._updateAllSoundSources();
            };
            h._registerSoundSource = function(a) {
              h._registeredSoundSources.push(a);
            };
            h._unregisterSoundSource = function(a) {
              a = h._registeredSoundSources.indexOf(a);
              0 <= a && h._registeredSoundSources.splice(a, 1);
            };
            h._updateSoundSource = function(a) {
              var c = a.soundTransform.volume;
              h._soundTransform && (c *= h._soundTransform.volume);
              c *= h._getMasterVolume();
              a.updateSoundLevels(c);
            };
            h._updateAllSoundSources = function() {
              h._registeredSoundSources.forEach(h._updateSoundSource);
            };
            h.classInitializer = null;
            h.initializer = null;
            h.classSymbols = null;
            h.instanceSymbols = null;
            h._masterVolume = 1;
            h._registeredSoundSources = [];
            h._bufferTime = 0;
            return h;
          }(a.ASNative);
          v.SoundMixer = h;
        })(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 r = d.Debug.dummyConstructor, t = d.Debug.somewhatImplemented, l = function(a) {
            function d(a, c) {
              r("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() {
              t("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 u = d.Debug.notImplemented, t = d.Debug.dummyConstructor, l = function(a) {
            function d() {
              t("public flash.media.StageVideo");
            }
            __extends(d, a);
            Object.defineProperty(d.prototype, "viewPort", {get:function() {
              u("public flash.media.StageVideo::get viewPort");
            }, set:function(a) {
              u("public flash.media.StageVideo::set viewPort");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "pan", {get:function() {
              u("public flash.media.StageVideo::get pan");
            }, set:function(a) {
              u("public flash.media.StageVideo::set pan");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "zoom", {get:function() {
              u("public flash.media.StageVideo::get zoom");
            }, set:function(a) {
              u("public flash.media.StageVideo::set zoom");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "depth", {get:function() {
              u("public flash.media.StageVideo::get depth");
            }, set:function(a) {
              u("public flash.media.StageVideo::set depth");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "videoWidth", {get:function() {
              u("public flash.media.StageVideo::get videoWidth");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "videoHeight", {get:function() {
              u("public flash.media.StageVideo::get videoHeight");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "colorSpaces", {get:function() {
              u("public flash.media.StageVideo::get colorSpaces");
            }, enumerable:!0, configurable:!0});
            d.prototype.attachNetStream = function(a) {
              u("public flash.media.StageVideo::attachNetStream");
            };
            d.prototype.attachCamera = function(a) {
              u("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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = 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 u = d.Debug.notImplemented, t = d.Debug.somewhatImplemented, l = function(c) {
            function d(c, h) {
              void 0 === c && (c = 320);
              void 0 === h && (h = 240);
              a.display.DisplayObject.instanceConstructorNoInitialize.call(this);
              c = c | 0 || 320;
              h = h | 0 || 240;
              this._setFillAndLineBoundsFromWidthAndHeight(20 * c, 20 * h);
            }
            __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, g) {
              return!0;
            };
            d.prototype.clear = function() {
              t("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) {
              u("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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = 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(k) {
        (function(k) {
          var r = d.Debug.dummyConstructor, t = d.AVM2.Runtime.asCoerceString, l = function(a) {
            function d(a, c, h) {
              r("public flash.net.FileFilter");
            }
            __extends(d, a);
            Object.defineProperty(d.prototype, "description", {get:function() {
              return this._description;
            }, set:function(a) {
              this._description = t(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "extension", {get:function() {
              return this._extension;
            }, set:function(a) {
              this._extension = t(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "macType", {get:function() {
              return this._macType;
            }, set:function(a) {
              this._macType = t(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 u = d.Debug.notImplemented, t = d.Debug.dummyConstructor, l = d.AVM2.Runtime.asCoerceString, c = d.Debug.somewhatImplemented, h = d.FileLoadingService, p = function(a) {
            function d() {
              t("public flash.net.LocalConnection");
            }
            __extends(d, a);
            d.prototype.close = function() {
              u("public flash.net.LocalConnection::close");
            };
            d.prototype.connect = function(a) {
              l(a);
              u("public flash.net.LocalConnection::connect");
            };
            Object.defineProperty(d.prototype, "domain", {get:function() {
              c("public flash.net.LocalConnection::get domain");
              var a = h.instance.resolveUrl("/");
              return(a = /:\/\/(.+?)[:?#\/]/.exec(a)) && a[1];
            }, enumerable:!0, configurable:!0});
            d.prototype.send = function(a, c) {
              l(a);
              l(c);
              u("public flash.net.LocalConnection::send");
            };
            Object.defineProperty(d.prototype, "client", {get:function() {
              u("public flash.net.LocalConnection::get client");
            }, set:function(a) {
              u("public flash.net.LocalConnection::set client");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "isPerUser", {get:function() {
              u("public flash.net.LocalConnection::get isPerUser");
            }, set:function(a) {
              u("public flash.net.LocalConnection::set isPerUser");
            }, enumerable:!0, configurable:!0});
            d.prototype.allowDomain = function() {
              u("public flash.net.LocalConnection::allowDomain");
            };
            d.prototype.allowInsecureDomain = function() {
              u("public flash.net.LocalConnection::allowInsecureDomain");
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(a.events.EventDispatcher);
          k.LocalConnection = p;
        })(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 u = d.Debug.notImplemented, t = d.Debug.dummyConstructor, l = d.AVM2.Runtime.asCoerceString, c = d.Debug.somewhatImplemented, h = d.AVM2.Runtime.wrapJSObject, p = d.Telemetry, s = d.AVM2.AS.flash.events, m = function(g) {
            function f() {
              t("public flash.net.NetConnection");
            }
            __extends(f, g);
            Object.defineProperty(f, "defaultObjectEncoding", {get:function() {
              return f._defaultObjectEncoding;
            }, set:function(a) {
              f._defaultObjectEncoding = a >>> 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "connected", {get:function() {
              return this._connected;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "uri", {get:function() {
              return this._uri;
            }, enumerable:!0, configurable:!0});
            f.prototype.connect = function(b) {
              b = l(b);
              c("public flash.net.NetConnection::connect");
              if (this._uri = b) {
                var e = RtmpJs.parseConnectionString(b);
                if (!e || !e.host || "rtmp" !== e.protocol && "rtmpt" !== e.protocol && "rtmps" !== e.protocol) {
                  this.dispatchEvent(new s.NetStatusEvent(s.NetStatusEvent.NET_STATUS, !1, !1, h({level:"status", code:"NetConnection.Connect.Failed"})));
                } else {
                  var f = d.AVM2.Runtime.AVM2.instance.globals["Shumway.Player.Utils"];
                  b = h({app:e.app, flashver:a.system.Capabilities.version, swfUrl:f.swfUrl, tcUrl:b, fpad:!1, audioCodecs:4095, videoCodecs:255, videoFunction:1, pageUrl:f.pageUrl || f.swfUrl, objectEncoding:0});
                  this._protocol = e.protocol;
                  this._usingTLS = f = "rtmps" === e.protocol || "rtmpt" === e.protocol && (443 === e.port || 8443 === e.port);
                  this._rtmpConnection = e = "rtmp" === e.protocol || "rtmps" === e.protocol ? new RtmpJs.Browser.RtmpTransport({host:e.host, port:e.port || 1935, ssl:f}) : new RtmpJs.Browser.RtmptTransport({host:e.host, port:e.port || 80, ssl:f});
                  this._rtmpCreateStreamCallbacks = [null, null];
                  e.onresponse = function(a) {
                  };
                  e.onevent = function(a) {
                  };
                  e.onconnected = function(a) {
                    this._connected = !0;
                    this.dispatchEvent(new s.NetStatusEvent(s.NetStatusEvent.NET_STATUS, !1, !1, h({level:"status", code:"NetConnection.Connect.Success"})));
                  }.bind(this);
                  e.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);
                  e.connect(b);
                }
              } else {
                this._connected = !0, this.dispatchEvent(new s.NetStatusEvent(s.NetStatusEvent.NET_STATUS, !1, !1, h({level:"status", code:"NetConnection.Connect.Success"})));
              }
            };
            f.prototype._createRtmpStream = function(a) {
              var e = this._rtmpCreateStreamCallbacks.length;
              this._rtmpCreateStreamCallbacks[e] = a;
              this._rtmpConnection.createStream(e);
            };
            Object.defineProperty(f.prototype, "client", {get:function() {
              return this._client;
            }, set:function(a) {
              this._client = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.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(f.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(f.prototype, "connectedProxyType", {get:function() {
              u("public flash.net.NetConnection::get connectedProxyType");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "usingTLS", {get:function() {
              return this._usingTLS;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "protocol", {get:function() {
              return this._protocol;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "maxPeerConnections", {get:function() {
              u("public flash.net.NetConnection::get maxPeerConnections");
            }, set:function(a) {
              u("public flash.net.NetConnection::set maxPeerConnections");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "nearID", {get:function() {
              u("public flash.net.NetConnection::get nearID");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "farID", {get:function() {
              u("public flash.net.NetConnection::get farID");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "nearNonce", {get:function() {
              u("public flash.net.NetConnection::get nearNonce");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "farNonce", {get:function() {
              u("public flash.net.NetConnection::get farNonce");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "unconnectedPeerStreams", {get:function() {
              u("public flash.net.NetConnection::get unconnectedPeerStreams");
            }, enumerable:!0, configurable:!0});
            f.prototype.ctor = function() {
              this._uri = null;
              this._connected = !1;
              this._client = null;
              this._proxyType = "none";
              this._objectEncoding = f.defaultObjectEncoding;
              this._usingTLS = !1;
              this._protocol = null;
              p.instance.reportTelemetry({topic:"feature", feature:6});
            };
            f.prototype.invoke = function(a) {
              return this._invoke(a >>> 0, Array.prototype.slice.call(arguments, 1));
            };
            f.prototype.invokeWithArgsArray = function(a, e) {
              return this._invoke.call(this, a >>> 0, e);
            };
            f.prototype._invoke = function(a, e) {
              var f = !1;
              switch(a) {
                case 2:
                  f = !0;
              }
              (f ? c : u)("private flash.net.NetConnection::_invoke (" + a + ")");
            };
            f.classInitializer = null;
            f.initializer = null;
            f.classSymbols = null;
            f.instanceSymbols = ["close", "addHeader", "call"];
            f._defaultObjectEncoding = 3;
            return f;
          }(a.events.EventDispatcher);
          k.NetConnection = m;
        })(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(v) {
          function u(a) {
            var b = "video/mp4";
            a && (b += ';codecs="' + a.join(",") + '"');
            return b;
          }
          var t = d.Debug.notImplemented, l = d.AVM2.Runtime.asCoerceString, c = d.Debug.somewhatImplemented, h = d.AVM2.Runtime.wrapJSObject, p = d.AVM2.AS.flash.events;
          v = d.AVM2.AS.flash.net;
          var s = d.AVM2.AS.flash.utils, m = d.FileLoadingService, g = d.AVM2.Runtime.AVM2, f = function(a) {
            function b(a, c) {
              void 0 === c && (c = "connectToFMS");
              p.EventDispatcher.instanceConstructorNoInitialize.call(this);
              this._connection = a;
              this._peerID = l(c);
              this._id = k.display.DisplayObject.getNextSyncID();
              this._isDirty = !0;
              this._soundTransform = new k.media.SoundTransform;
              this._contentTypeHint = null;
              this._checkPolicyFile = !0;
              this._videoStream = new e;
              this._videoStream._onEnsurePlay = function() {
                this._notifyVideoControl(9, null);
              }.bind(this);
              this._metaData = this._resourceName = null;
            }
            __extends(b, a);
            b.prototype.dispose = function() {
              t("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);
              g.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) {
              t("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 v.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() {
              t("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() {
              t("public flash.net.NetStream::get objectEncoding");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "multicastPushNeighborLimit", {get:function() {
              t("public flash.net.NetStream::get multicastPushNeighborLimit");
            }, set:function(a) {
              t("public flash.net.NetStream::set multicastPushNeighborLimit");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "multicastWindowDuration", {get:function() {
              t("public flash.net.NetStream::get multicastWindowDuration");
            }, set:function(a) {
              t("public flash.net.NetStream::set multicastWindowDuration");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "multicastRelayMarginDuration", {get:function() {
              t("public flash.net.NetStream::get multicastRelayMarginDuration");
            }, set:function(a) {
              t("public flash.net.NetStream::set multicastRelayMarginDuration");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "multicastAvailabilityUpdatePeriod", {get:function() {
              t("public flash.net.NetStream::get multicastAvailabilityUpdatePeriod");
            }, set:function(a) {
              t("public flash.net.NetStream::set multicastAvailabilityUpdatePeriod");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "multicastFetchPeriod", {get:function() {
              t("public flash.net.NetStream::get multicastFetchPeriod");
            }, set:function(a) {
              t("public flash.net.NetStream::set multicastFetchPeriod");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "multicastAvailabilitySendToAll", {get:function() {
              t("public flash.net.NetStream::get multicastAvailabilitySendToAll");
            }, set:function(a) {
              t("public flash.net.NetStream::set multicastAvailabilitySendToAll");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "farID", {get:function() {
              t("public flash.net.NetStream::get farID");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "nearNonce", {get:function() {
              t("public flash.net.NetStream::get nearNonce");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "farNonce", {get:function() {
              t("public flash.net.NetStream::get farNonce");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "peerStreams", {get:function() {
              t("public flash.net.NetStream::get peerStreams");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "audioReliable", {get:function() {
              t("public flash.net.NetStream::get audioReliable");
            }, set:function(a) {
              t("public flash.net.NetStream::set audioReliable");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "videoReliable", {get:function() {
              t("public flash.net.NetStream::get videoReliable");
            }, set:function(a) {
              t("public flash.net.NetStream::set videoReliable");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "dataReliable", {get:function() {
              t("public flash.net.NetStream::get dataReliable");
            }, set:function(a) {
              t("public flash.net.NetStream::set dataReliable");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "audioSampleAccess", {get:function() {
              t("public flash.net.NetStream::get audioSampleAccess");
            }, set:function(a) {
              t("public flash.net.NetStream::set audioSampleAccess");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "videoSampleAccess", {get:function() {
              t("public flash.net.NetStream::get videoSampleAccess");
            }, set:function(a) {
              t("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() {
              t("public flash.net.NetStream::get useHardwareDecoder");
            }, set:function(a) {
              t("public flash.net.NetStream::set useHardwareDecoder");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "useJitterBuffer", {get:function() {
              t("public flash.net.NetStream::get useJitterBuffer");
            }, set:function(a) {
              t("public flash.net.NetStream::set useJitterBuffer");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(b.prototype, "videoStreamSettings", {get:function() {
              t("public flash.net.NetStream::get videoStreamSettings");
            }, set:function(a) {
              t("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 : t)("NetStream._invoke (" + a + ")");
              return f;
            };
            b.prototype._notifyVideoControl = function(a, b) {
              return g.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 p.NetStatusEvent(p.NetStatusEvent.NET_STATUS, !1, !1, h({code:"NetStream.Play.Start", level:"status"})));
                  break;
                case 3:
                  this.dispatchEvent(new p.NetStatusEvent(p.NetStatusEvent.NET_STATUS, !1, !1, h({code:"NetStream.Buffer.Flush", level:"status"})));
                  this.dispatchEvent(new p.NetStatusEvent(p.NetStatusEvent.NET_STATUS, !1, !1, h({code:"NetStream.Play.Stop", level:"status"})));
                  k.media.SoundMixer._unregisterSoundSource(this);
                  break;
                case 5:
                  this.dispatchEvent(new p.NetStatusEvent(p.NetStatusEvent.NET_STATUS, !1, !1, h({code:"NetStream.Buffer.Full", level:"status"})));
                  break;
                case 4:
                  this.dispatchEvent(new p.NetStatusEvent(p.NetStatusEvent.NET_STATUS, !1, !1, h({code:"NetStream.Buffer.Empty", level:"status"})));
                  break;
                case 11:
                  this.dispatchEvent(new p.NetStatusEvent(p.NetStatusEvent.NET_STATUS, !1, !1, h({code:4 === b.code ? "NetStream.Play.NoSupportedTrackFound" : 3 === b.code ? "NetStream.Play.FileStructureInvalid" : "NetStream.Play.StreamNotFound", level:"error"})));
                  break;
                case 6:
                  this.dispatchEvent(new p.NetStatusEvent(p.NetStatusEvent.NET_STATUS, !1, !1, h({code:"NetStream.Pause.Notify", level:"status"})));
                  break;
                case 7:
                  this.dispatchEvent(new p.NetStatusEvent(p.NetStatusEvent.NET_STATUS, !1, !1, h({code:"NetStream.Unpause.Notify", level:"status"})));
                  break;
                case 8:
                  this.dispatchEvent(new p.NetStatusEvent(p.NetStatusEvent.NET_STATUS, !1, !1, h({code:"NetStream.Seek.Notify", level:"status"})));
                  break;
                case 9:
                  this.dispatchEvent(new p.NetStatusEvent(p.NetStatusEvent.NET_STATUS, !1, !1, h({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);
          v.NetStream = f;
          var b;
          (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";
          })(b || (b = {}));
          var e = function() {
            function b() {
              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;
            }
            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 = a.mediaSourceOption.value;
              f && "undefined" === typeof MediaSource && (console.warn("MediaSource API is not enabled, falling back to regular playback"), f = !1);
              if (/\.flv($|\?)/i.test(b) || f) {
                this.openInDataGenerationMode();
                f = new v.URLRequest(b);
                f._checkPolicyFile = e;
                var d = new v.URLStream;
                d.addEventListener("httpStatus", function(a) {
                  (a = a.asGetPublicProperty("responseHeaders").filter(function(a) {
                    return "Content-Type" === a.asGetPublicProperty("name");
                  })[0]) && a.asGetPublicProperty("value");
                }.bind(this));
                d.addEventListener("progress", function(a) {
                  a = d.bytesAvailable;
                  var b = new s.ByteArray;
                  d.readBytes(b, 0, a);
                  a = new Uint8Array(b._buffer, 0, b.length);
                  this.appendBytes(a);
                }.bind(this));
                d.addEventListener("complete", function(a) {
                  this.appendBytesAction("endSequence");
                }.bind(this));
                d.load(f);
              } else {
                c("public flash.net.NetStream::play"), this._state = 1, this._url = m.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 = u(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 q, 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 K() {
                    b.removeEventListener("update", K);
                    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;
          }(), q = 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(u(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 r = d.Debug.dummyConstructor, t = d.AVM2.Runtime.asCoerceString, l = function(a) {
            function d(a, c, h, g, f, b, e, l, k, x, v, A, H, K, F, J, M, D, B, E, y, z, G, C, I) {
              void 0 === G && (G = null);
              void 0 === C && (C = null);
              t(G);
              t(C);
              r("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 r = d.Debug.dummyConstructor, t = function(a) {
            function c(a, c, d, l, g, f, b, e, k, n, t, v, A, H, K, F, J, M, D) {
              r("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 = t;
        })(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 u = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              u("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 = 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(k) {
          var r = d.Debug.dummyConstructor, t = function(a) {
            function c(a, c) {
              r("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 = t;
        })(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 u = d.Debug.notImplemented, t = d.AVM2.Runtime.asCoerceString, l = d.Debug.somewhatImplemented, c = function(c) {
            function k() {
              a.events.EventDispatcher.instanceConstructorNoInitialize.call(this);
              this._data = Object.create(null);
            }
            __extends(k, c);
            k.deleteAll = function(a) {
              t(a);
              u("public flash.net.SharedObject::static deleteAll");
            };
            k.getDiskUsage = function(a) {
              t(a);
              u("public flash.net.SharedObject::static getDiskUsage");
            };
            k._create = function(a, c) {
              var g = new k;
              g._path = a;
              g._data = c;
              g._objectEncoding = k._defaultObjectEncoding;
              d.Telemetry.instance.reportTelemetry({topic:"feature", feature:3});
              return g;
            };
            k.getLocal = function(a, c, d) {
              void 0 === c && (c = null);
              a = t(a);
              c = t(c);
              a = (c || "") + "/" + a;
              if (k._sharedObjects[a]) {
                return k._sharedObjects[a];
              }
              c = sessionStorage.getItem(a);
              c = k._create(a, c ? JSON.parse(c) : {});
              return k._sharedObjects[a] = c;
            };
            k.getRemote = function(a, c, d, f) {
              void 0 === c && (c = null);
              t(a);
              t(c);
              u("public flash.net.SharedObject::static getRemote");
            };
            Object.defineProperty(k, "defaultObjectEncoding", {get:function() {
              return k._defaultObjectEncoding;
            }, set:function(a) {
              k._defaultObjectEncoding = a >>> 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(k.prototype, "data", {get:function() {
              return this._data;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(k.prototype, "objectEncoding", {get:function() {
              return this._objectEncoding;
            }, set:function(a) {
              this._objectEncoding = a >>> 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(k.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});
            k.prototype.setDirty = function(a) {
              t(a);
              l("public flash.net.SharedObject::setDirty");
            };
            k.prototype.invoke = function(a) {
              return this._invoke(a >>> 0, Array.prototype.slice.call(arguments, 1));
            };
            k.prototype.invokeWithArgsArray = function(a, c) {
              return this._invoke(a >>> 0, c);
            };
            k.prototype._invoke = function(a, c) {
              var d = !1, f;
              switch(a) {
                case 4:
                  f = JSON.stringify(this._data).length - 2;
                  d = !0;
                  break;
                case 6:
                  this._data = {};
                  sessionStorage.removeItem(this._path);
                  d = !0;
                  break;
                case 2:
                  sessionStorage.setItem(this._path, JSON.stringify(this._data));
                  f = d = !0;
                  break;
                case 3:
                  d = !0;
              }
              (d ? l : u)("private flash.net.SharedObject::_invoke (" + a + ")");
              return f;
            };
            k.classInitializer = null;
            k.initializer = null;
            k.classSymbols = null;
            k.instanceSymbols = null;
            k._sharedObjects = Object.create(null);
            k._defaultObjectEncoding = 3;
            return k;
          }(a.events.EventDispatcher);
          k.SharedObject = c;
        })(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 u = d.Debug.notImplemented, t = d.Debug.dummyConstructor, l = d.AVM2.Runtime.asCoerceString, c = d.Debug.somewhatImplemented, h = d.AVM2.Errors, p = d.AVM2.Runtime.throwError, s = function(a) {
            function d(a, b) {
              void 0 === a && (a = null);
              l(a);
              t("public flash.net.Socket");
            }
            __extends(d, a);
            Object.defineProperty(d.prototype, "bytesAvailable", {get:function() {
              u("public flash.net.Socket::get bytesAvailable");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "connected", {get:function() {
              u("public flash.net.Socket::get connected");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "objectEncoding", {get:function() {
              u("public flash.net.Socket::get objectEncoding");
            }, set:function(a) {
              u("public flash.net.Socket::set objectEncoding");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "endian", {get:function() {
              u("public flash.net.Socket::get endian");
            }, set:function(a) {
              l(a);
              u("public flash.net.Socket::set endian");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "bytesPending", {get:function() {
              u("public flash.net.Socket::get bytesPending");
            }, enumerable:!0, configurable:!0});
            d.prototype.readBytes = function(a, b, e) {
              u("public flash.net.Socket::readBytes");
            };
            d.prototype.writeBytes = function(a, b, e) {
              u("public flash.net.Socket::writeBytes");
            };
            d.prototype.writeBoolean = function(a) {
              u("public flash.net.Socket::writeBoolean");
            };
            d.prototype.writeByte = function(a) {
              u("public flash.net.Socket::writeByte");
            };
            d.prototype.writeShort = function(a) {
              u("public flash.net.Socket::writeShort");
            };
            d.prototype.writeInt = function(a) {
              u("public flash.net.Socket::writeInt");
            };
            d.prototype.writeUnsignedInt = function(a) {
              u("public flash.net.Socket::writeUnsignedInt");
            };
            d.prototype.writeFloat = function(a) {
              u("public flash.net.Socket::writeFloat");
            };
            d.prototype.writeDouble = function(a) {
              u("public flash.net.Socket::writeDouble");
            };
            d.prototype.writeMultiByte = function(a, b) {
              l(a);
              l(b);
              u("public flash.net.Socket::writeMultiByte");
            };
            d.prototype.writeUTF = function(a) {
              l(a);
              u("public flash.net.Socket::writeUTF");
            };
            d.prototype.writeUTFBytes = function(a) {
              l(a);
              u("public flash.net.Socket::writeUTFBytes");
            };
            d.prototype.readBoolean = function() {
              u("public flash.net.Socket::readBoolean");
            };
            d.prototype.readByte = function() {
              u("public flash.net.Socket::readByte");
            };
            d.prototype.readUnsignedByte = function() {
              u("public flash.net.Socket::readUnsignedByte");
            };
            d.prototype.readShort = function() {
              u("public flash.net.Socket::readShort");
            };
            d.prototype.readUnsignedShort = function() {
              u("public flash.net.Socket::readUnsignedShort");
            };
            d.prototype.readInt = function() {
              u("public flash.net.Socket::readInt");
            };
            d.prototype.readUnsignedInt = function() {
              u("public flash.net.Socket::readUnsignedInt");
            };
            d.prototype.readFloat = function() {
              u("public flash.net.Socket::readFloat");
            };
            d.prototype.readDouble = function() {
              u("public flash.net.Socket::readDouble");
            };
            d.prototype.readMultiByte = function(a, b) {
              l(b);
              u("public flash.net.Socket::readMultiByte");
            };
            d.prototype.readUTF = function() {
              u("public flash.net.Socket::readUTF");
            };
            d.prototype.readUTFBytes = function(a) {
              u("public flash.net.Socket::readUTFBytes");
            };
            d.prototype.flush = function() {
              u("public flash.net.Socket::flush");
            };
            d.prototype.writeObject = function(a) {
              u("public flash.net.Socket::writeObject");
            };
            d.prototype.readObject = function() {
              u("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");
              p("SecurityError", h.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 = s;
        })(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, t = a.events.IOErrorEvent, l = a.events.ProgressEvent, c = a.events.HTTPStatusEvent, h = a.events.SecurityErrorEvent, p = function(p) {
            function m(g) {
              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(t.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(h.SECURITY_ERROR, this.onStreamSecurityError.bind(this));
              this.$BgdataFormat = "text";
              g && this.load(g);
            }
            __extends(m, p);
            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) {
              p.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 = p;
        })(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(r) {
        (function(v) {
          var u = d.AVM2.Runtime.asCoerceString, t = d.AVM2.Runtime.throwError, l = function(a) {
            function d(a) {
              void 0 === a && (a = null);
              this._url = u(a);
            }
            __extends(d, a);
            Object.defineProperty(d.prototype, "url", {get:function() {
              return this._url;
            }, set:function(a) {
              this._url = a = u(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 = u(a);
              "get" !== a && "GET" !== a && "post" !== a && "POST" !== a && t("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 = u(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "requestHeaders", {get:function() {
              return this._requestHeaders;
            }, set:function(a) {
              Array.isArray(a) || t("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 = u(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, r.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);
          v.URLRequest = l;
        })(r.net || (r.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 r = d.AVM2.Runtime.asCoerceString, t = function(a) {
            function c(a, c) {
              void 0 === a && (a = "");
              void 0 === c && (c = "");
              r(a);
              r(c);
            }
            __extends(c, a);
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = ["name!", "value!"];
            return c;
          }(a.ASNative);
          k.URLRequestHeader = t;
        })(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(v) {
          var u = d.Debug.notImplemented, t = d.Debug.dummyConstructor, l = d.AVM2.Runtime.asCoerceString, c = d.FileLoadingService, h = d.AVM2.Runtime.throwError, p = d.AVM2.AS.flash.utils, s = function(d) {
            function g() {
              t("public flash.net.URLStream");
            }
            __extends(g, d);
            Object.defineProperty(g.prototype, "connected", {get:function() {
              return this._connected;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "bytesAvailable", {get:function() {
              return this._buffer.length - this._buffer.position;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "objectEncoding", {get:function() {
              return this._buffer.objectEncoding;
            }, set:function(a) {
              this._buffer.objectEncoding = a >>> 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "endian", {get:function() {
              return this._buffer.endian;
            }, set:function(a) {
              a = l(a);
              this._buffer.endian = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "diskCacheEnabled", {get:function() {
              u("public flash.net.URLStream::get diskCacheEnabled");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "position", {get:function() {
              return this._buffer.position;
            }, set:function(a) {
              this._buffer.position = +a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(g.prototype, "length", {get:function() {
              return this._buffer.length;
            }, enumerable:!0, configurable:!0});
            g.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;
            };
            g.prototype.readBytes = function(a, b, e) {
              void 0 === b && (b = 0);
              void 0 === e && (e = 0);
              b >>>= 0;
              e >>>= 0;
              0 > e && h("ArgumentError", k.Errors.InvalidArgumentError, "length");
              this._buffer.readBytes(a, b, e);
            };
            g.prototype.readBoolean = function() {
              u("public flash.net.URLStream::readBoolean");
            };
            g.prototype.readByte = function() {
              return this._buffer.readByte();
            };
            g.prototype.readUnsignedByte = function() {
              u("public flash.net.URLStream::readUnsignedByte");
            };
            g.prototype.readShort = function() {
              u("public flash.net.URLStream::readShort");
            };
            g.prototype.readUnsignedShort = function() {
              return this._buffer.readUnsignedShort();
            };
            g.prototype.readUnsignedInt = function() {
              u("public flash.net.URLStream::readUnsignedInt");
            };
            g.prototype.readInt = function() {
              u("public flash.net.URLStream::readInt");
            };
            g.prototype.readFloat = function() {
              u("public flash.net.URLStream::readFloat");
            };
            g.prototype.readDouble = function() {
              u("public flash.net.URLStream::readDouble");
            };
            g.prototype.readMultiByte = function(a, b) {
              l(b);
              u("public flash.net.URLStream::readMultiByte");
            };
            g.prototype.readUTF = function() {
              return this._buffer.readUTF();
            };
            g.prototype.readUTFBytes = function(a) {
              return this._buffer.readUTFBytes(a);
            };
            g.prototype.close = function() {
              this._session.close();
            };
            g.prototype.readObject = function() {
              u("public flash.net.URLStream::readObject");
            };
            g.prototype.stop = function() {
              u("public flash.net.URLStream::stop");
            };
            g.classInitializer = null;
            g.initializer = function() {
              this._buffer = new p.ByteArray;
              this._writePosition = 0;
              this._connected = !1;
            };
            g.classSymbols = null;
            g.instanceSymbols = null;
            return g;
          }(a.events.EventDispatcher);
          v.URLStream = s;
        })(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(r) {
        (function(r) {
          var u = d.AVM2.Runtime.asCoerceString, t = 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 = u(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 g = unescape(d.substring(0, l).split("+").join(" ")), d = unescape(d.substring(l + 1).split("+").join(" ")), l = this.asGetPublicProperty(g);
                "undefined" === typeof l ? this.asSetPublicProperty(g, d) : Array.isArray(l) ? l.push(d) : this.asSetPublicProperty(g, [l, d]);
              }
            };
            c.prototype.toString = function() {
              for (var a = [], c = this.asGetEnumerableKeys(), d = 0;d < c.length;d++) {
                var l = c[d].split(" ").join("+"), g = this.asGetPublicProperty(l), l = escape(l).split(" ").join("+");
                if (Array.isArray(g)) {
                  for (var f = 0;f < g.length;f++) {
                    a.push(l + "=" + escape(g[f]));
                  }
                } else {
                  a.push(l + "=" + escape(g));
                }
              }
              return a.join("&");
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.ASNative);
          r.URLVariables = t;
        })(r.net || (r.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 u = d.Debug.notImplemented, t = d.Debug.dummyConstructor, l = function(a) {
            function d() {
              t("public flash.sensors.Accelerometer");
            }
            __extends(d, a);
            Object.defineProperty(d.prototype, "isSupported", {get:function() {
              u("public flash.sensors.Accelerometer::get isSupported");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "muted", {get:function() {
              u("public flash.sensors.Accelerometer::get muted");
            }, enumerable:!0, configurable:!0});
            d.prototype.setRequestedUpdateInterval = function(a) {
              u("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 u = d.Debug.notImplemented, t = d.Debug.dummyConstructor, l = function(a) {
            function d() {
              t("public flash.sensors.Geolocation");
            }
            __extends(d, a);
            Object.defineProperty(d.prototype, "isSupported", {get:function() {
              u("public flash.sensors.Geolocation::get isSupported");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "muted", {get:function() {
              u("public flash.sensors.Geolocation::get muted");
            }, enumerable:!0, configurable:!0});
            d.prototype.setRequestedUpdateInterval = function(a) {
              u("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 r = d.Debug.notImplemented, t = d.AVM2.Runtime.asCoerceString, l = d.AVM2.Runtime.AVM2, c = d.AVM2.Runtime.ApplicationDomain, h = d.AVM2.ABC.Multiname, p = 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() {
              r("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() {
              r("public flash.system.ApplicationDomain::get domainMemory");
            }, set:function(a) {
              r("public flash.system.ApplicationDomain::set domainMemory");
            }, enumerable:!0, configurable:!0});
            d.prototype.getDefinition = function(a) {
              return(a = t(a)) ? (a = a.replace("::", "."), this._runtimeDomain.getProperty(h.fromSimpleName(a), !0, !0)) : null;
            };
            d.prototype.hasDefinition = function(a) {
              return(a = t(a)) ? (a = a.replace("::", "."), !!this._runtimeDomain.findDomainProperty(h.fromSimpleName(a), !1, !1)) : !1;
            };
            d.prototype.getQualifiedDefinitionNames = function() {
              r("public flash.system.ApplicationDomain::getQualifiedDefinitionNames");
            };
            d.classInitializer = null;
            d.initializer = null;
            d.classSymbols = null;
            d.instanceSymbols = null;
            return d;
          }(a.ASNative);
          k.ApplicationDomain = p;
        })(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 r = d.Debug.notImplemented, t = d.Debug.dummyConstructor, l = d.AVM2.Runtime.asCoerceString, c = d.Debug.somewhatImplemented, h = d.ObjectUtilities.toKeyValueArray, p = function(a) {
            function d() {
              t("public flash.system.Capabilities");
            }
            __extends(d, a);
            Object.defineProperty(d, "isEmbeddedInAcrobat", {get:function() {
              r("public flash.system.Capabilities::get isEmbeddedInAcrobat");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "hasEmbeddedVideo", {get:function() {
              r("public flash.system.Capabilities::get hasEmbeddedVideo");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "hasAudio", {get:function() {
              r("public flash.system.Capabilities::get hasAudio");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "avHardwareDisable", {get:function() {
              r("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() {
              r("public flash.system.Capabilities::get hasAudioEncoder");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "hasMP3", {get:function() {
              r("public flash.system.Capabilities::get hasMP3");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "hasPrinting", {get:function() {
              r("public flash.system.Capabilities::get hasPrinting");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "hasScreenBroadcast", {get:function() {
              r("public flash.system.Capabilities::get hasScreenBroadcast");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "hasScreenPlayback", {get:function() {
              r("public flash.system.Capabilities::get hasScreenPlayback");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "hasStreamingAudio", {get:function() {
              r("public flash.system.Capabilities::get hasStreamingAudio");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "hasStreamingVideo", {get:function() {
              r("public flash.system.Capabilities::get hasStreamingVideo");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "hasVideoEncoder", {get:function() {
              r("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() {
              r("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" : r("public flash.system.Capabilities::get os");
                d._os = a;
              }
              return d._os;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "cpuArchitecture", {get:function() {
              r("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 = h({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() {
              r("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() {
              r("public flash.system.Capabilities::get touchscreenType");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "hasIME", {get:function() {
              r("public flash.system.Capabilities::get hasIME");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "hasTLS", {get:function() {
              r("public flash.system.Capabilities::get hasTLS");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "maxLevelIDC", {get:function() {
              r("public flash.system.Capabilities::get maxLevelIDC");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "supports32BitProcesses", {get:function() {
              r("public flash.system.Capabilities::get supports32BitProcesses");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "supports64BitProcesses", {get:function() {
              r("public flash.system.Capabilities::get supports64BitProcesses");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "_internal", {get:function() {
              r("public flash.system.Capabilities::get _internal");
            }, enumerable:!0, configurable:!0});
            d.hasMultiChannelAudio = function(a) {
              l(a);
              r("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 = p;
        })(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 r = d.Debug.dummyConstructor, t = d.AVM2.Runtime.asCoerceString, l = function(a) {
            function h() {
              r("packageInternal flash.system.FSCommand");
            }
            __extends(h, a);
            h._fscommand = function(a, c) {
              a = t(a);
              c = t(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);
              }
            };
            h.classInitializer = null;
            h.initializer = null;
            h.classSymbols = null;
            h.instanceSymbols = null;
            return h;
          }(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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = t;
        })(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 u = function(a) {
            function l(a, h, l) {
              void 0 === a && (a = !1);
              void 0 === h && (h = null);
              void 0 === l && (l = null);
              this.checkPolicyFile = a;
              this.applicationDomain = h;
              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 = u;
        })(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 u = d.Debug.dummyConstructor, t = function(a) {
            function c(a, c, d, l) {
              u("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 = t;
        })(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 u = d.Debug.notImplemented, t = d.Debug.dummyConstructor, l = function(a) {
            function d() {
              t("public flash.system.MessageChannel");
            }
            __extends(d, a);
            Object.defineProperty(d.prototype, "messageAvailable", {get:function() {
              u("public flash.system.MessageChannel::get messageAvailable");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "state", {get:function() {
              u("public flash.system.MessageChannel::get state");
            }, enumerable:!0, configurable:!0});
            d.prototype.send = function(a, c) {
              u("public flash.system.MessageChannel::send");
            };
            d.prototype.receive = function(a) {
              u("public flash.system.MessageChannel::receive");
            };
            d.prototype.close = function() {
              u("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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = t;
        })(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 r = d.Debug.notImplemented, t = d.Debug.dummyConstructor, l = d.AVM2.Runtime.asCoerceString, c = d.Debug.somewhatImplemented, h = function(a) {
            function h() {
              t("public flash.system.Security");
            }
            __extends(h, a);
            Object.defineProperty(h, "exactSettings", {get:function() {
              return h._exactSettings;
            }, set:function(a) {
              h._exactSettings = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h, "disableAVM1Loading", {get:function() {
              r("public flash.system.Security::get disableAVM1Loading");
            }, set:function(a) {
              r("public flash.system.Security::set disableAVM1Loading");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h, "sandboxType", {get:function() {
              c("public flash.system.Security::get sandboxType");
              return h._sandboxType;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h, "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});
            h.allowDomain = function() {
              c('public flash.system.Security::static allowDomain ["' + Array.prototype.join.call(arguments, '", "') + '"]');
            };
            h.allowInsecureDomain = function() {
              c("public flash.system.Security::static allowInsecureDomain");
            };
            h.loadPolicyFile = function(a) {
              l(a);
              c("public flash.system.Security::static loadPolicyFile");
            };
            h.showSettings = function(a) {
              void 0 === a && (a = "default");
              l(a);
              r("public flash.system.Security::static showSettings");
            };
            h.duplicateSandboxBridgeInputArguments = function(a, c) {
              r("public flash.system.Security::static duplicateSandboxBridgeInputArguments");
            };
            h.duplicateSandboxBridgeOutputArgument = function(a, c) {
              r("public flash.system.Security::static duplicateSandboxBridgeOutputArgument");
            };
            h.classInitializer = null;
            h.initializer = null;
            h.classSymbols = null;
            h.instanceSymbols = null;
            h.REMOTE = "remote";
            h.LOCAL_WITH_FILE = "localWithFile";
            h.LOCAL_WITH_NETWORK = "localWithNetwork";
            h.LOCAL_TRUSTED = "localTrusted";
            h.APPLICATION = "application";
            h._exactSettings = !1;
            h._sandboxType = "remote";
            return h;
          }(a.ASNative);
          k.Security = h;
        })(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 r = d.Debug.somewhatImplemented, t = function(a) {
            function c() {
            }
            __extends(c, a);
            Object.defineProperty(c, "currentDomain", {get:function() {
              this._currentDomain || (this._currentDomain = new k.SecurityDomain);
              r("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 = t;
        })(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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = t;
        })(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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = t;
        })(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(v) {
          var u = d.Debug.somewhatImplemented, t = d.AVM2.Runtime.asCoerceString, l = k.text.FontStyle, c = k.text.FontType, h = function(a) {
            function h() {
            }
            __extends(h, a);
            h._getFontMetrics = function(a, c) {
              return this._deviceFontMetrics[a + c] || this._deviceFontMetrics[a];
            };
            h.resolveFontName = function(a) {
              return "_sans" === a ? h.DEFAULT_FONT_SANS : "_serif" === a ? h.DEFAULT_FONT_SERIF : "_typewriter" === a ? h.DEFAULT_FONT_TYPEWRITER : a;
            };
            h.getBySymbolId = function(a) {
              return this._fontsBySymbolId[a];
            };
            h.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 h, e._fontName = d[0], e._fontFamily = h.resolveFontName(d[0].toLowerCase()), e._fontStyle = f, e._fontType = c.DEVICE, this._fontsByName[b] = e);
              e._fontType === c.DEVICE && (b = h._getFontMetrics(e._fontName, e._fontStyle), b || (b = h._getFontMetrics(h.DEFAULT_FONT_SANS, e._fontStyle), e._fontFamily = h.DEFAULT_FONT_SANS), e.ascent = b[0], e.descent = b[1], e.leading = b[2]);
              return e;
            };
            h.getDefaultFont = function() {
              return h.getByNameAndStyle(h.DEFAULT_FONT_SANS, l.REGULAR);
            };
            h.enumerateFonts = function(a) {
              u("public flash.text.Font::static enumerateFonts");
              return h._fonts.slice();
            };
            h.registerFont = function(a) {
              u("Font.registerFont");
            };
            h.registerEmbeddedFont = function(a, c) {
              var b = k.display.DisplayObject.getNextSyncID(), e = {get:h.resolveEmbeddedFont.bind(h, c, a.id, b), configurable:!0};
              Object.defineProperty(h._fontsByName, a.name.toLowerCase() + a.style, e);
              Object.defineProperty(h._fontsByName, "swffont" + b + a.style, e);
              Object.defineProperty(h._fontsBySymbolId, b + "", e);
            };
            h.resolveEmbeddedFont = function(a, c, b) {
              a.getSymbolById(c).syncId = b;
              return h._fontsBySymbolId[c];
            };
            Object.defineProperty(h.prototype, "fontName", {get:function() {
              return this._fontName;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "fontStyle", {get:function() {
              return this._fontStyle;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(h.prototype, "fontType", {get:function() {
              return this._fontType;
            }, enumerable:!0, configurable:!0});
            h.prototype.hasGlyphs = function(a) {
              t(a);
              u("Font#hasGlyphs");
              return!0;
            };
            h.DEFAULT_FONT_SANS = "Arial";
            h.DEFAULT_FONT_SERIF = "Times New Roman";
            h.DEFAULT_FONT_TYPEWRITER = "Courier New";
            h.classInitializer = function() {
              h._fonts = [];
              h._fontsBySymbolId = d.ObjectUtilities.createMap();
              h._fontsByName = d.ObjectUtilities.createMap();
              h.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]};
              h.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]};
              h.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]};
              h.DEVICE_FONT_METRICS_BUILTIN = {_sans:[.9, .22, .08], _serif:[.88, .26, .08], _typewriter:[.86, .24, .08]};
              h.DEVICE_FONT_METRICS_WIN.__proto__ = h.DEVICE_FONT_METRICS_BUILTIN;
              h.DEVICE_FONT_METRICS_MAC.__proto__ = h.DEVICE_FONT_METRICS_BUILTIN;
              h.DEVICE_FONT_METRICS_LINUX.__proto__ = h.DEVICE_FONT_METRICS_BUILTIN;
              var a = self.navigator.userAgent;
              -1 < a.indexOf("Windows") ? h._deviceFontMetrics = h.DEVICE_FONT_METRICS_WIN : /(Macintosh|iPad|iPhone|iPod|Android)/.test(a) ? (h._deviceFontMetrics = this.DEVICE_FONT_METRICS_MAC, h.DEFAULT_FONT_SANS = "Helvetica", h.DEFAULT_FONT_SERIF = "Times Roman", h.DEFAULT_FONT_TYPEWRITER = "Courier") : (h._deviceFontMetrics = this.DEVICE_FONT_METRICS_LINUX, h.DEFAULT_FONT_SANS = "Sans", h.DEFAULT_FONT_SERIF = "Times", h.DEFAULT_FONT_TYPEWRITER = "Monospace");
              var a = h._deviceFontMetrics, c;
              for (c in a) {
                a[c.toLowerCase()] = a[c];
              }
            };
            h.classSymbols = null;
            h.instanceSymbols = null;
            h.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 = h.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(h._fontsBySymbolId, a.syncId + "");
                f && f.value || (f = {value:this, configurable:!0}, Object.defineProperty(h._fontsBySymbolId, a.syncId + "", f), Object.defineProperty(h._fontsByName, a.name.toLowerCase() + this._fontStyle, f), this._fontType === c.EMBEDDED && Object.defineProperty(h._fontsByName, "swffont" + a.syncId + this._fontStyle, f));
              } else {
                this._id = k.display.DisplayObject.getNextSyncID();
              }
            };
            return h;
          }(a.ASNative);
          v.Font = h;
          var p = function(a) {
            function c(d) {
              a.call(this, d, h);
            }
            __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);
          v.FontSymbol = p;
        })(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(v) {
          function u(a, d, l) {
            for (;d < l;) {
              switch(a[d]) {
                case " ":
                ;
                case "\n":
                ;
                case "\r":
                ;
                case "\t":
                  d++;
                  break;
                default:
                  return d;
              }
            }
            return l;
          }
          var t = 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 = t(c);
              return(c = this._rules[c.toLowerCase()]) ? a.ASJSON.transformJSValueToAS(c, !1) : {};
            };
            d.prototype.applyStyle = function(a, c) {
              c = t(c);
              var d = this._rules[c.toLowerCase()];
              return d ? a.transform(d) : a;
            };
            d.prototype.setStyle = function(c, d) {
              "object" === typeof d && (c = t(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 v.TextFormat;
              d.transform(c);
              return d;
            };
            d.prototype.parseCSS = function(a) {
              a = t(a) + "";
              for (var c = a.length, d = u(a, 0, c), g = {}, f = [], b = !1, e = "";d < c;) {
                var h = a[d++];
                switch(h) {
                  case "{":
                    b = !1;
                    f.push(e);
                    a: {
                      var e = a, h = c, l = g, k = {}, r = "", v = !1, H = !1, d = u(e, d, h);
                      b: for (;d < h;) {
                        var K = e[d++];
                        switch(K) {
                          case "}":
                            if (0 < r.length) {
                              d = -1;
                              break a;
                            }
                            break b;
                          case ":":
                            var F = "", J = r, r = "", H = v = !1;
                            for (;d < h;) {
                              switch(K = e[d], K) {
                                case ";":
                                ;
                                case "\r":
                                ;
                                case "\n":
                                  d++, d = u(e, d, h);
                                case "}":
                                  k[J] = F;
                                  continue b;
                                default:
                                  d++, F += K;
                              }
                            }
                            d = -1;
                            break a;
                          case "-":
                            ":" === e[d] ? r += K : H = !0;
                            break;
                          case " ":
                          ;
                          case "\n":
                          ;
                          case "\r":
                          ;
                          case "\t":
                            v = !0;
                            r += K;
                            H = !1;
                            break;
                          default:
                            if (v) {
                              d = -1;
                              break a;
                            }
                            H && (K = K.toUpperCase(), H = !1);
                            r += K;
                        }
                      }
                      if ("}" !== e[d - 1]) {
                        d = -1;
                      } else {
                        for (e = 0;e < f.length;e++) {
                          l[f[e]] = k;
                        }
                      }
                    }
                    if (-1 === d) {
                      return;
                    }
                    f = [];
                    e = "";
                    d = u(a, d, c);
                    break;
                  case ",":
                    b = !1;
                    f.push(e);
                    e = "";
                    d = u(a, d, c);
                    break;
                  case " ":
                  ;
                  case "\n":
                  ;
                  case "\r":
                  ;
                  case "\t":
                    b = !0;
                    d = u(a, d, c);
                    break;
                  default:
                    if (b) {
                      return;
                    }
                    e += h;
                }
              }
              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);
          v.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(v) {
          var u = d.Debug.notImplemented, t = d.Debug.warning, l = d.Debug.somewhatImplemented, c = d.AVM2.Runtime.throwError, h = d.AVM2.Runtime.asCoerceString, p = d.NumberUtilities.clamp, s = function(g) {
            function f() {
              a.display.InteractiveObject.instanceConstructorNoInitialize.call(this);
            }
            __extends(f, g);
            f.prototype._setFillAndLineBoundsFromSymbol = function(a) {
              g.prototype._setFillAndLineBoundsFromSymbol.call(this, a);
              this._textContent.bounds = this._lineBounds;
              this._invalidateContent();
            };
            f.prototype._setFillAndLineBoundsFromWidthAndHeight = function(a, e) {
              g.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 g.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 = h(a);
              e = h(e);
              var c = v.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 = h(a);
              0 > v.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 = h(a);
              a !== this._autoSize && (0 > v.TextFieldAutoSize.toNumber(a) && c("ArgumentError", k.Errors.InvalidParamError, "autoSize"), this._autoSize = a, this._textContent.autoSize = v.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() {
              u("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) {
              this._textContent.defaultTextFormat.merge(a);
            }, 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 = h(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "htmlText", {get:function() {
              return this._htmlText;
            }, set:function(a) {
              a = h(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() {
              u("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 = h(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 = p(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 = p(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 = p(+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 = h(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 0 > this._textColor ? +this._textContent.defaultTextFormat.color : this._textColor;
            }, set:function(a) {
              this._textColor = 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 = p(+a, -200, 200);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(f.prototype, "type", {get:function() {
              return this._type;
            }, set:function(a) {
              this._type = h(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() {
              u("public flash.text.TextField::get useRichTextClipboard");
            }, set:function(a) {
              u("public flash.text.TextField::set useRichTextClipboard");
            }, enumerable:!0, configurable:!0});
            f.prototype.copyRichText = function() {
              u("public flash.text.TextField::copyRichText");
            };
            f.prototype.pasteRichText = function(a) {
              h(a);
              u("public flash.text.TextField::pasteRichText");
            };
            f.prototype.getXMLText = function(a, e) {
              u("public flash.text.TextField::getXMLText");
              return "";
            };
            f.prototype.insertXMLText = function(a, e, c, f) {
              h(c);
              u("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 !== v.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(h(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) {
              u("public flash.text.TextField::getCharIndexAtPoint");
            };
            f.prototype.getFirstCharInParagraph = function(a) {
              u("public flash.text.TextField::getFirstCharInParagraph");
            };
            f.prototype.getLineIndexAtPoint = function(a, e) {
              u("public flash.text.TextField::getLineIndexAtPoint");
            };
            f.prototype.getLineIndexOfChar = function(a) {
              u("public flash.text.TextField::getLineIndexOfChar");
            };
            f.prototype.getLineLength = function(a) {
              u("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 v.TextLineMetrics(a, f, d + g + e, d, g, e);
            };
            f.prototype.getLineOffset = function(a) {
              u("public flash.text.TextField::getLineOffset");
            };
            f.prototype.getLineText = function(a) {
              u("public flash.text.TextField::getLineText");
            };
            f.prototype.getParagraphLength = function(a) {
              u("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() {
              u("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) {
              u("public flash.text.TextField::getImageReference");
            };
            f.classSymbols = null;
            f.instanceSymbols = null;
            f.classInitializer = null;
            f.initializer = function(b) {
              this._alwaysShowSelection = !1;
              this._antiAliasType = v.AntiAliasType.NORMAL;
              this._autoSize = v.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 = v.GridFitType.PIXEL;
              this._htmlText = "";
              this._length = 0;
              this._textInteractionMode = v.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._styleSheet = null;
              this._textColor = -1;
              this._thickness = this._textWidth = this._textHeight = 0;
              this._type = v.TextFieldType.DYNAMIC;
              this._useRichTextClipboard = !1;
              var e = new a.text.TextFormat(v.Font.DEFAULT_FONT_SERIF, 12, 0, !1, !1, !1, "", "", v.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);
          v.TextField = s;
          s = 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) : t("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", p = !1, s = !1, r = 0, u = 0, t = 0, v, E = 0;E < d.length;E++) {
                var y = d[E];
                if (y.eot) {
                  break;
                }
                if (y.hasFont) {
                  var z = e.getSymbolById(y.fontId);
                  z && (v = z.codes, l = y.fontHeight, z.originalSize || (l /= 20), k = z.metrics ? "swffont" + z.syncId : z.name, p = z.bold, s = z.italic);
                }
                y.hasColor && (r = y.color >>> 8);
                y.hasMoveX && (u = y.moveX, u < c.xMin && (c.xMin = u));
                y.hasMoveY && (t = y.moveY, t < c.yMin && (c.yMin = t));
                for (var z = "", y = y.entries, G = 0, C;C = y[G++];) {
                  var I = String.fromCharCode(v[C.glyphIndex]), z = z + (m[I] || I);
                  g.push(u, t);
                  u += C.advance;
                }
                s && (z = "<i>" + z + "</i>");
                p && (z = "<b>" + z + "</b>");
                h += '<font size="' + l + '" face="' + k + '" color="#' + ("000000" + r.toString(16)).slice(-6) + '">' + z + "</font>";
              }
              a.tag.initialText = h;
              return f.FromTextData(a, e);
            };
            return f;
          }(d.Timeline.DisplaySymbol);
          v.TextSymbol = s;
          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(r) {
        (function(v) {
          var u = d.AVM2.Runtime.asCoerceString, t = d.NumberUtilities.roundHalfEven, l = d.AVM2.Runtime.throwError, c = function(a) {
            function c(a, d, g, f, b, e, h, l, k, p, r, u, t) {
              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 === h && (h = null);
              void 0 === l && (l = null);
              void 0 === k && (k = null);
              void 0 === p && (p = null);
              void 0 === r && (r = null);
              void 0 === u && (u = null);
              void 0 === t && (t = null);
              this.font = a;
              this.size = d;
              this.color = g;
              this.bold = f;
              this.italic = b;
              this.underline = e;
              this.url = h;
              this.target = l;
              this.align = k;
              this.leftMargin = p;
              this.rightMargin = r;
              this.indent = u;
              this.leading = t;
            }
            __extends(c, a);
            Object.defineProperty(c.prototype, "align", {get:function() {
              return this._align;
            }, set:function(a) {
              this._align = a = u(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 = +a | 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "display", {get:function() {
              return this._display;
            }, set:function(a) {
              this._display = u(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "font", {get:function() {
              return this._font;
            }, set:function(a) {
              this._font = u(a);
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "style", {get:function() {
              return this._bold && this._italic ? v.FontStyle.BOLD_ITALIC : this._bold ? v.FontStyle.BOLD : this._italic ? v.FontStyle.ITALIC : v.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 = u(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 = u(a);
            }, enumerable:!0, configurable:!0});
            c.coerceNumber = function(a) {
              return void 0 == a ? null : isNaN(a) || 268435455 < a ? -2147483648 : t(a);
            };
            c.coerceBoolean = function(a) {
              return void 0 == a ? null : !!a;
            };
            c.prototype.clone = function() {
              return new r.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 = u(c).trim().toLowerCase(), "#" === c[0]) {
                  for (c = c.substr(1);"0" === c[0];) {
                    c = c.substr(1);
                  }
                  var d = parseInt(c, 16);
                  d.original_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);
          v.TextFormat = c;
        })(r.text || (r.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 r = d.Debug.dummyConstructor, t = function(a) {
            function c(a, c, d, l, g, f) {
              r("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 = t;
        })(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 u = 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 = u;
        })(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 r = d.Debug.notImplemented, t = d.Debug.dummyConstructor, l = d.AVM2.Runtime.asCoerceString, c = function(a) {
            function c() {
              t("public flash.text.TextSnapshot");
            }
            __extends(c, a);
            Object.defineProperty(c.prototype, "charCount", {get:function() {
              r("public flash.text.TextSnapshot::get charCount");
            }, enumerable:!0, configurable:!0});
            c.prototype.findText = function(a, c, d) {
              l(c);
              r("public flash.text.TextSnapshot::findText");
            };
            c.prototype.getSelected = function(a, c) {
              r("public flash.text.TextSnapshot::getSelected");
            };
            c.prototype.getSelectedText = function(a) {
              r("public flash.text.TextSnapshot::getSelectedText");
            };
            c.prototype.getText = function(a, c, d) {
              r("public flash.text.TextSnapshot::getText");
            };
            c.prototype.getTextRunInfo = function(a, c) {
              r("public flash.text.TextSnapshot::getTextRunInfo");
            };
            c.prototype.hitTestTextNearPos = function(a, c, d) {
              r("public flash.text.TextSnapshot::hitTestTextNearPos");
            };
            c.prototype.setSelectColor = function(a) {
              r("public flash.text.TextSnapshot::setSelectColor");
            };
            c.prototype.setSelected = function(a, c, d) {
              r("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 r = d.Debug.notImplemented, t = d.Debug.dummyConstructor, l = function(a) {
            function d() {
              t("public flash.trace.Trace");
            }
            __extends(d, a);
            d.setLevel = function(a, c) {
              r("public flash.trace.Trace::static setLevel");
            };
            d.getLevel = function(a) {
              r("public flash.trace.Trace::static getLevel");
            };
            d.setListener = function(a) {
              r("public flash.trace.Trace::static setListener");
            };
            d.getListener = function() {
              r("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 u = d.Debug.somewhatImplemented, t = 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() {
              u("ContextMenu::isSupported");
              return!1;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "builtInItems", {get:function() {
              u("public flash.ui.ContextMenu::get builtInItems");
              return this._builtInItems;
            }, set:function(a) {
              u("public flash.ui.ContextMenu::set builtInItems");
              this._builtInItems = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "customItems", {get:function() {
              u("public flash.ui.ContextMenu::get customItems");
              return this._customItems;
            }, set:function(a) {
              u("public flash.ui.ContextMenu::set customItems");
              this._customItems = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "link", {get:function() {
              u("public flash.ui.ContextMenu::get link");
              return this._link;
            }, set:function(a) {
              u("public flash.ui.ContextMenu::set link");
              this._link = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "clipboardMenu", {get:function() {
              u("public flash.ui.ContextMenu::get clipboardMenu");
              return this._clipboardMenu;
            }, set:function(a) {
              a = !!a;
              u("public flash.ui.ContextMenu::set clipboardMenu");
              this._clipboardMenu = a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "clipboardItems", {get:function() {
              u("public flash.ui.ContextMenu::get clipboardItems");
              return this._clipboardItems;
            }, set:function(a) {
              u("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) {
              u("public flash.ui.ContextMenu::cloneLinkAndClipboardProperties");
            };
            c.classInitializer = null;
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.display.NativeMenu);
          k.ContextMenu = t;
        })(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 r = d.Debug.somewhatImplemented, t = 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() {
              r("cut");
              return this._cut;
            }, set:function(a) {
              r("cut");
              this._cut = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "copy", {get:function() {
              r("copy");
              return this._copy;
            }, set:function(a) {
              r("copy");
              this._copy = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "paste", {get:function() {
              r("paste");
              return this._paste;
            }, set:function(a) {
              r("paste");
              this._paste = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "clear", {get:function() {
              r("clear");
              return this._clear;
            }, set:function(a) {
              r("clear");
              this._clear = !!a;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "selectAll", {get:function() {
              r("selectAll");
              return this._selectAll;
            }, set:function(a) {
              r("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 = t;
        })(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 u = d.AVM2.Runtime.asCoerceString, t = 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 = u(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 = u(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 = t;
        })(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(v) {
          var u = d.Debug.somewhatImplemented, t = d.Debug.dummyConstructor, l = d.AVM2.Runtime.throwError, c = function(a) {
            function c() {
              t("public flash.ui.GameInput");
            }
            __extends(c, a);
            Object.defineProperty(c.prototype, "numDevices", {get:function() {
              u("public flash.ui.GameInput::get numDevices");
              return 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "isSupported", {get:function() {
              u("public flash.ui.GameInput::get isSupported");
              return!1;
            }, enumerable:!0, configurable:!0});
            c.getDeviceAt = function(a) {
              u("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);
          v.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 u = d.Debug.notImplemented, t = d.Debug.dummyConstructor, l = function(a) {
            function d() {
              t("public flash.ui.GameInputControl");
            }
            __extends(d, a);
            Object.defineProperty(d.prototype, "numValues", {get:function() {
              u("public flash.ui.GameInputControl::get numValues");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "index", {get:function() {
              u("public flash.ui.GameInputControl::get index");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "relative", {get:function() {
              u("public flash.ui.GameInputControl::get relative");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "type", {get:function() {
              u("public flash.ui.GameInputControl::get type");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "hand", {get:function() {
              u("public flash.ui.GameInputControl::get hand");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "finger", {get:function() {
              u("public flash.ui.GameInputControl::get finger");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "device", {get:function() {
              u("public flash.ui.GameInputControl::get device");
            }, enumerable:!0, configurable:!0});
            d.prototype.getValueAt = function(a) {
              u("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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = t;
        })(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 u = d.Debug.notImplemented, t = d.Debug.dummyConstructor, l = function(a) {
            function d() {
              t("public flash.ui.GameInputDevice");
            }
            __extends(d, a);
            Object.defineProperty(d.prototype, "numControls", {get:function() {
              u("public flash.ui.GameInputDevice::get numControls");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "sampleInterval", {get:function() {
              u("public flash.ui.GameInputDevice::get sampleInterval");
            }, set:function(a) {
              u("public flash.ui.GameInputDevice::set sampleInterval");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "enabled", {get:function() {
              u("public flash.ui.GameInputDevice::get enabled");
            }, set:function(a) {
              u("public flash.ui.GameInputDevice::set enabled");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "id", {get:function() {
              u("public flash.ui.GameInputDevice::get id");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "name", {get:function() {
              u("public flash.ui.GameInputDevice::get name");
            }, enumerable:!0, configurable:!0});
            d.prototype.getControlAt = function(a) {
              u("public flash.ui.GameInputDevice::getControlAt");
            };
            d.prototype.startCachingSamples = function(a, c) {
              u("public flash.ui.GameInputDevice::startCachingSamples");
            };
            d.prototype.stopCachingSamples = function() {
              u("public flash.ui.GameInputDevice::stopCachingSamples");
            };
            d.prototype.getCachedSamples = function(a, c) {
              u("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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = t;
        })(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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = t;
        })(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(v) {
          var u = d.Debug.notImplemented, t = 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;
          }();
          v.KeyboardEventDispatcher = l;
          l = function(a) {
            function d() {
              t("public flash.ui.Keyboard");
            }
            __extends(d, a);
            Object.defineProperty(d, "capsLock", {get:function() {
              u("public flash.ui.Keyboard::get capsLock");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "numLock", {get:function() {
              u("public flash.ui.Keyboard::get numLock");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "hasVirtualKeyboard", {get:function() {
              u("public flash.ui.Keyboard::get hasVirtualKeyboard");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "physicalKeyboardType", {get:function() {
              u("public flash.ui.Keyboard::get physicalKeyboardType");
            }, enumerable:!0, configurable:!0});
            d.isAccessible = function() {
              u("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);
          v.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(r) {
        (function(v) {
          var u = d.Debug.notImplemented, t = d.Debug.somewhatImplemented, l = d.AVM2.Runtime.asCoerceString, c = r.events, h = 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, g, f) {
              void 0 === f && (f = null);
              var b = a.globalToLocal(g.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, g.ctrlKey, g.altKey, g.shiftKey, !!g.buttons);
              a.dispatchEvent(d);
            };
            a.prototype.handleMouseEvent = function(a) {
              var d = this.stage;
              if (!d) {
                return d;
              }
              var g = a.point;
              r.ui.Mouse.updateCurrentPosition(g);
              var f = this.currentTarget, b = null, e = r.events.MouseEvent.typeFromDOMType(a.type);
              if (0 <= g.x && g.x < d.stageWidth && 0 <= g.y && g.y < d.stageHeight) {
                b = this._findTarget(g, 3) || this.stage;
              } else {
                if (!f) {
                  return d;
                }
                this._dispatchMouseEvent(d, c.MouseEvent.MOUSE_LEAVE, a);
                if (e !== c.MouseEvent.MOUSE_MOVE) {
                  return d;
                }
              }
              r.ui.Mouse.draggableObject && (g = this._findTarget(g, 5), r.ui.Mouse.draggableObject._updateDragState(g));
              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;
                  }
                  g = 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 h = f;h !== g;) {
                      this._dispatchMouseEvent(h, c.MouseEvent.ROLL_OUT, a, b), h = h.parent;
                    }
                  }
                  if (!b) {
                    return d;
                  }
                  if (b === d) {
                    break;
                  }
                  for (d = b;d !== g;) {
                    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;
          }();
          v.MouseEventDispatcher = h;
          (function(a) {
            a[a.Left = 1] = "Left";
            a[a.Middle = 2] = "Middle";
            a[a.Right = 4] = "Right";
          })(v.MouseButtonFlags || (v.MouseButtonFlags = {}));
          h = 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 > v.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() {
              t("public flash.ui.Mouse::static hide");
            };
            c.show = function() {
              t("public flash.ui.Mouse::static show");
            };
            c.registerCursor = function(a, c) {
              l(a);
              u("public flash.ui.Mouse::static registerCursor");
            };
            c.unregisterCursor = function(a) {
              l(a);
              u("public flash.ui.Mouse::static unregisterCursor");
            };
            c.updateCurrentPosition = function(a) {
              this._currentPosition.copyFrom(a);
            };
            c.classInitializer = function() {
              this._currentPosition = new r.geom.Point;
              this._cursor = v.MouseCursor.AUTO;
              this.draggableObject = null;
            };
            c.initializer = null;
            c.classSymbols = null;
            c.instanceSymbols = null;
            return c;
          }(a.ASNative);
          v.Mouse = h;
        })(r.ui || (r.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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = t;
        })(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 r = d.Debug.notImplemented, t = d.Debug.dummyConstructor, l = function(a) {
            function d() {
              t("public flash.ui.MouseCursorData");
            }
            __extends(d, a);
            Object.defineProperty(d.prototype, "data", {get:function() {
              r("public flash.ui.MouseCursorData::get data");
            }, set:function(a) {
              r("public flash.ui.MouseCursorData::set data");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "hotSpot", {get:function() {
              r("public flash.ui.MouseCursorData::get hotSpot");
            }, set:function(a) {
              r("public flash.ui.MouseCursorData::set hotSpot");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d.prototype, "frameRate", {get:function() {
              r("public flash.ui.MouseCursorData::get frameRate");
            }, set:function(a) {
              r("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 r = d.Debug.somewhatImplemented, t = d.Debug.notImplemented, l = d.Debug.dummyConstructor, c = d.AVM2.Runtime.asCoerceString, h = function(a) {
            function d() {
              l("public flash.ui.Multitouch");
            }
            __extends(d, a);
            Object.defineProperty(d, "inputMode", {get:function() {
              t("public flash.ui.Multitouch::get inputMode");
            }, set:function(a) {
              c(a);
              t("public flash.ui.Multitouch::set inputMode");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "supportsTouchEvents", {get:function() {
              r("public flash.ui.Multitouch::get supportsTouchEvents");
              return!1;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "supportsGestureEvents", {get:function() {
              r("public flash.ui.Multitouch::get supportsGestureEvents");
              return!1;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "supportedGestures", {get:function() {
              r("public flash.ui.Multitouch::get supportedGestures");
              return null;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "maxTouchPoints", {get:function() {
              r("public flash.ui.Multitouch::get maxTouchPoints");
              return 0;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(d, "mapTouchToMouse", {get:function() {
              r("public flash.ui.Multitouch::get mapTouchToMouse");
              return!0;
            }, set:function(a) {
              t("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 = h;
        })(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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = t;
        })(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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("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 = t;
        })(k.utils || (k.utils = {}));
      })(a.flash || (a.flash = {}));
    })(k.AS || (k.AS = {}));
  })(d.AVM2 || (d.AVM2 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    (function(a) {
      (function(a) {
        (function(v) {
          var u = function(t) {
            function l(c, d) {
              a.events.EventDispatcher.instanceConstructorNoInitialize.call(this);
              this._delay = +c;
              this._repeatCount = d | 0;
              this._iteration = 0;
            }
            __extends(l, t);
            Object.defineProperty(l.prototype, "running", {get:function() {
              return this._running;
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.prototype, "delay", {get:function() {
              return this._delay;
            }, set:function(a) {
              a = +a;
              (0 > a || !isFinite(a)) && throwError("RangeError", d.Errors.DelayRangeError);
              this._delay = a;
              this._running && (this.stop(), this.start());
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(l.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(l.prototype, "currentCount", {get:function() {
              return this._iteration;
            }, enumerable:!0, configurable:!0});
            l.prototype.reset = function() {
              this._running && this.stop();
              this._iteration = 0;
            };
            l.prototype.stop = function() {
              this._running = !1;
              clearInterval(this._interval);
            };
            l.prototype.start = function() {
              this._running || (this._running = !0, this._interval = setInterval(this._tick.bind(this), this._delay));
            };
            l.prototype._tick = function() {
              this._iteration++;
              if (this._running) {
                if (a.utils.Timer.dispatchingEnabled) {
                  try {
                    this.dispatchEvent(new a.events.TimerEvent("timer", !0, !1));
                  } catch (c) {
                    console.warn("caught error under Timer TIMER event: ", c);
                  }
                }
                if (0 !== this._repeatCount && this._iteration >= this._repeatCount) {
                  this.stop();
                  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);
                  }
                }
              }
            };
            l.classInitializer = null;
            l.initializer = null;
            l.classSymbols = null;
            l.instanceSymbols = null;
            l.dispatchingEnabled = !0;
            return l;
          }(a.events.EventDispatcher);
          v.Timer = u;
        })(a.utils || (a.utils = {}));
      })(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 u = d.Debug.dummyConstructor, t = function(a) {
            function c(a, c, d, l) {
              u("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 = t;
        })(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 r = d.Debug.notImplemented, t = d.Debug.dummyConstructor, l = d.AVM2.Runtime.asCoerceString, c = function(a) {
            function c(a, d) {
              l(d);
              t("public flash.xml.XMLNode");
            }
            __extends(c, a);
            c.escapeXML = function(a) {
              l(a);
              r("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 u = d.Debug.dummyConstructor, t = d.AVM2.Runtime.asCoerceString, l = function(a) {
            function d(a) {
              void 0 === a && (a = null);
              t(a);
              u("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 r = d.Debug.dummyConstructor, t = function(a) {
            function c() {
              r("public flash.xml.XMLNodeType");
            }
            __extends(c, a);
            c.initializer = null;
            return c;
          }(a.ASNative);
          k.XMLNodeType = t;
        })(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 r = d.Debug.notImplemented, t = d.Debug.dummyConstructor, l = d.AVM2.Runtime.asCoerceString, c = function(a) {
            function c() {
              t("packageInternal flash.xml.XMLParser");
            }
            __extends(c, a);
            c.prototype.startParse = function(a, c) {
              l(a);
              r("packageInternal flash.xml.XMLParser::startParse");
            };
            c.prototype.getNext = function(a) {
              r("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 r = d.Debug.notImplemented, t = d.Debug.dummyConstructor, l = d.AVM2.Runtime.asCoerceString, c = function(a) {
            function c() {
              t("packageInternal flash.xml.XMLTag");
            }
            __extends(c, a);
            Object.defineProperty(c.prototype, "type", {get:function() {
              r("packageInternal flash.xml.XMLTag::get type");
            }, set:function(a) {
              r("packageInternal flash.xml.XMLTag::set type");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "empty", {get:function() {
              r("packageInternal flash.xml.XMLTag::get empty");
            }, set:function(a) {
              r("packageInternal flash.xml.XMLTag::set empty");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "value", {get:function() {
              r("packageInternal flash.xml.XMLTag::get value");
            }, set:function(a) {
              l(a);
              r("packageInternal flash.xml.XMLTag::set value");
            }, enumerable:!0, configurable:!0});
            Object.defineProperty(c.prototype, "attrs", {get:function() {
              r("packageInternal flash.xml.XMLTag::get attrs");
            }, set:function(a) {
              r("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 r(a, c, b) {
        return{classSimpleName:a, nativeName:c, cls:b};
      }
      function v(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 u() {
        return Date.now() - s.display.Loader.runtimeStartTime;
      }
      function t(a, c) {
        null !== a && void 0 !== a || p("TypeError", k.Errors.NullPointerError, "request");
        d.AVM2.Runtime.AVM2.instance.systemDomain.getClass("flash.net.URLRequest").isInstanceOf(a) || p("TypeError", k.Errors.CheckTypeFailedError, a, "flash.net.URLRequest");
        var b = a.url;
        d.isNullOrUndefined(b) && p("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 || p("TypeError", k.Errors.NullPointerError, "request");
        d.AVM2.Runtime.AVM2.instance.systemDomain.getClass("flash.net.URLRequest").isInstanceOf(a) || p("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 || p("TypeError", k.Errors.NullPointerError, "aliasName");
        c || p("TypeError", k.Errors.NullPointerError, "classObject");
        k.aliasesCache.classes.set(c, a);
        k.aliasesCache.names[a] = c;
      }
      function h(a) {
        a || p("TypeError", k.Errors.NullPointerError, "aliasName");
        var c = k.aliasesCache.names[a];
        c || p("ReferenceError", k.Errors.ClassNotFoundError, a);
        return c;
      }
      var p = d.AVM2.Runtime.throwError, s = d.AVM2.AS.flash, m = d.AVM2.ABC.Multiname;
      jsGlobal.flash = d.AVM2.AS.flash;
      a.linkNatives = function(g) {
        [r("flash.display.DisplayObject", "DisplayObjectClass", s.display.DisplayObject), r("flash.display.InteractiveObject", "InteractiveObjectClass", s.display.InteractiveObject), r("flash.display.DisplayObjectContainer", "ContainerClass", s.display.DisplayObjectContainer), r("flash.display.Sprite", "SpriteClass", s.display.Sprite), r("flash.display.MovieClip", "MovieClipClass", s.display.MovieClip), r("flash.display.Shape", "ShapeClass", s.display.Shape), r("flash.display.Bitmap", "BitmapClass", 
        s.display.Bitmap), r("flash.display.BitmapData", "BitmapDataClass", s.display.BitmapData), r("flash.display.Stage", "StageClass", s.display.Stage), r("flash.display.Loader", "LoaderClass", s.display.Loader), r("flash.display.LoaderInfo", "LoaderInfoClass", s.display.LoaderInfo), r("flash.display.Graphics", "GraphicsClass", s.display.Graphics), r("flash.display.SimpleButton", "SimpleButtonClass", s.display.SimpleButton), r("flash.display.MorphShape", "MorphShapeClass", s.display.MorphShape), 
        r("flash.display.NativeMenu", "NativeMenuClass", s.display.NativeMenu), r("flash.display.NativeMenuItem", "NativeMenuItemClass", s.display.NativeMenuItem), r("flash.display.FrameLabel", "FrameLabelClass", s.display.FrameLabel), r("flash.display.Scene", "SceneClass", s.display.Scene), r("flash.display.AVM1Movie", "AVM1MovieClass", s.display.AVM1Movie), r("flash.filters.BevelFilter", "BevelFilterClass", s.filters.BevelFilter), r("flash.filters.BitmapFilter", "BitmapFilterClass", s.filters.BitmapFilter), 
        r("flash.filters.BlurFilter", "BlurFilterClass", s.filters.BlurFilter), r("flash.filters.ColorMatrixFilter", "ColorMatrixFilterClass", s.filters.ColorMatrixFilter), r("flash.filters.ConvolutionFilter", "ConvolutionFilterClass", s.filters.ConvolutionFilter), r("flash.filters.DisplacementMapFilter", "DisplacementMapFilterClass", s.filters.DisplacementMapFilter), r("flash.filters.DropShadowFilter", "DropShadowFilterClass", s.filters.DropShadowFilter), r("flash.filters.GlowFilter", "GlowFilterClass", 
        s.filters.GlowFilter), r("flash.filters.GradientBevelFilter", "GradientBevelFilterClass", s.filters.GradientBevelFilter), r("flash.filters.GradientGlowFilter", "GradientGlowFilterClass", s.filters.GradientGlowFilter), r("flash.geom.Point", "PointClass", s.geom.Point), r("flash.geom.Rectangle", "RectangleClass", s.geom.Rectangle), r("flash.geom.Matrix", "MatrixClass", s.geom.Matrix), r("flash.geom.Matrix3D", "Matrix3DClass", s.geom.Matrix3D), r("flash.geom.Vector3D", "Vector3DClass", s.geom.Vector3D), 
        r("flash.geom.Transform", "TransformClass", s.geom.Transform), r("flash.geom.ColorTransform", "ColorTransformClass", s.geom.ColorTransform), r("flash.events.EventDispatcher", "EventDispatcherClass", s.events.EventDispatcher), r("flash.events.Event", "EventClass", s.events.Event), r("flash.events.ErrorEvent", "ErrorEventClass", s.events.ErrorEvent), r("flash.events.IOErrorEvent", "IOErrorEventClass", s.events.IOErrorEvent), r("flash.events.KeyboardEvent", "KeyboardEventClass", s.events.KeyboardEvent), 
        r("flash.events.MouseEvent", "MouseEventClass", s.events.MouseEvent), r("flash.events.GestureEvent", "GestureEventClass", s.events.GestureEvent), r("flash.events.TextEvent", "TextEventClass", s.events.TextEvent), r("flash.events.TimerEvent", "TimerEventClass", s.events.TimerEvent), r("flash.events.ProgressEvent", "ProgressEventClass", s.events.ProgressEvent), r("flash.events.NetStatusEvent", "NetStatusEventClass", s.events.NetStatusEvent), r("flash.events.HTTPStatusEvent", "HTTPStatusEventClass", 
        s.events.HTTPStatusEvent), r("flash.events.UncaughtErrorEvents", "UncaughtErrorEventsClass", s.events.UncaughtErrorEvents), r("flash.external.ExternalInterface", "ExternalInterfaceClass", s.external.ExternalInterface), r("flash.ui.ContextMenu", "ContextMenuClass", s.ui.ContextMenu), r("flash.ui.ContextMenuItem", "ContextMenuItemClass", s.ui.ContextMenuItem), r("flash.ui.ContextMenuBuiltInItems", "ContextMenuBuiltInItemsClass", s.ui.ContextMenuBuiltInItems), r("flash.ui.ContextMenuClipboardItems", 
        "ContextMenuClipboardItemsClass", s.ui.ContextMenuClipboardItems), r("flash.ui.Keyboard", "KeyboardClass", s.ui.Keyboard), r("flash.ui.Mouse", "MouseClass", s.ui.Mouse), r("flash.ui.MouseCursorData", "MouseCursorDataClass", s.ui.MouseCursorData), r("flash.ui.GameInput", "GameInputClass", s.ui.GameInput), r("flash.events.GameInputEvent", "GameInputEventClass", s.events.GameInputEvent), r("flash.ui.GameInputControl", "GameInputControlClass", s.ui.GameInputControl), r("flash.ui.GameInputControlType", 
        "GameInputControlTypeClass", s.ui.GameInputControlType), r("flash.ui.GameInputDevice", "GameInputDeviceClass", s.ui.GameInputDevice), r("flash.ui.GameInputFinger", "GameInputFingerClass", s.ui.GameInputFinger), r("flash.ui.GameInputHand", "GameInputHandClass", s.ui.GameInputHand), r("flash.ui.Multitouch", "MultitouchClass", s.ui.Multitouch), r("flash.ui.MultitouchInputMode", "MultitouchInputModeClass", s.ui.MultitouchInputMode), r("flash.events.TouchEvent", "TouchEventClass", s.events.TouchEvent), 
        r("flash.text.Font", "FontClass", s.text.Font), r("flash.text.TextField", "TextFieldClass", s.text.TextField), r("flash.text.StaticText", "StaticTextClass", s.text.StaticText), r("flash.text.StyleSheet", "StyleSheetClass", s.text.StyleSheet), r("flash.text.TextFormat", "TextFormatClass", s.text.TextFormat), r("flash.text.TextRun", "TextRunClass", s.text.TextRun), r("flash.text.TextLineMetrics"), r("flash.media.Sound", "SoundClass", s.media.Sound), r("flash.media.SoundChannel", "SoundChannelClass", 
        s.media.SoundChannel), r("flash.media.SoundMixer", "SoundMixerClass", s.media.SoundMixer), r("flash.media.SoundTransform", "SoundTransformClass", s.media.SoundTransform), r("flash.media.Video", "VideoClass", s.media.Video), r("flash.media.StageVideo", "StageVideoClass", s.media.StageVideo), r("flash.media.ID3Info", "ID3InfoClass", s.media.ID3Info), r("flash.media.Microphone", "MicrophoneClass", s.media.Microphone), r("flash.net.FileFilter", "FileFilterClass", s.net.FileFilter), r("flash.net.NetConnection", 
        "NetConnectionClass", s.net.NetConnection), r("flash.net.NetStream", "NetStreamClass", s.net.NetStream), r("flash.net.Responder", "ResponderClass", s.net.Responder), r("flash.net.URLRequest", "URLRequestClass", s.net.URLRequest), r("flash.net.URLRequestHeader"), r("flash.net.URLStream", "URLStreamClass", s.net.URLStream), r("flash.net.URLLoader", "URLLoaderClass", s.net.URLLoader), r("flash.net.SharedObject", "SharedObjectClass", s.net.SharedObject), r("flash.net.ObjectEncoding", "ObjectEncodingClass", 
        s.net.ObjectEncoding), r("flash.net.LocalConnection", "LocalConnectionClass", s.net.LocalConnection), r("flash.net.Socket", "SocketClass", s.net.Socket), r("flash.net.URLVariables", "URLVariablesClass", s.net.URLVariables), r("packageInternal flash.system.FSCommand", "FSCommandClass", s.system.FSCommand), r("flash.system.Capabilities", "CapabilitiesClass", s.system.Capabilities), r("flash.system.Security", "SecurityClass", s.system.Security), r("flash.system.SecurityDomain", "SecurityDomainClass", 
        s.system.SecurityDomain), r("flash.system.ApplicationDomain", "ApplicationDomainClass", s.system.ApplicationDomain), r("flash.system.JPEGLoaderContext", "JPEGLoaderContextClass", s.system.JPEGLoaderContext), r("flash.system.LoaderContext", "LoaderContextClass", s.system.LoaderContext), r("flash.accessibility.Accessibility", "AccessibilityClass", s.accessibility.Accessibility), r("flash.utils.Timer", "TimerClass", s.utils.Timer), r("flash.utils.ByteArray", "ByteArrayClass", s.utils.ByteArray)].forEach(function(c) {
          for (var b = m.fromSimpleName(c.classSimpleName).getOriginalName().split("."), e = d.AVM2.AS, g = 0, l = b.length - 1;g < l;g++) {
            e[b[g]] || (e[b[g]] = {}), e = e[b[g]];
          }
          v(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", u);
        a.registerNativeFunction("FlashUtilScript::escapeMultiByte", escape);
        a.registerNativeFunction("FlashUtilScript::unescapeMultiByte", unescape);
        a.registerNativeFunction("FlashNetScript::navigateToURL", t);
        a.registerNativeFunction("FlashNetScript::sendToURL", l);
        a.registerNativeFunction("Toplevel::registerClassAlias", c);
        a.registerNativeFunction("Toplevel::getClassByAlias", h);
      };
      a.FlashUtilScript_getTimer = u;
      a.FlashNetScript_navigateToURL = t;
    })(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 r = new ArrayBuffer(4);
        (new Int32Array(r))[0] = 1;
        if (!(new Uint8Array(r))[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 h = l >> 1 | 128;
                if ((d & h) === l) {
                  break;
                }
                l = h;
                --c;
              } while (0 <= c);
              l = d & (1 << c) - 1;
              for (h = 5;h >= c;--h) {
                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 r = function() {
      return function(a) {
        this.registerNumber = a;
      };
    }();
    k.ParsedPushRegisterAction = r;
    var v = function() {
      return function(a) {
        this.constantIndex = a;
      };
    }();
    k.ParsedPushConstantAction = v;
    (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 u = function() {
      function d(c, h) {
        this._actionsData = c;
        this.dataId = c.id;
        this._stream = new a(c.bytes, h);
      }
      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(), s = 128 <= l ? a.readUI16() : 0, s = a.position + s, m = null;
        switch(l | 0) {
          case 129:
            var g = a.readUI16(), m = a.readUI8(), f = !1;
            6 !== m && 7 !== m ? a.position-- : (s++, f = 6 === m);
            m = [g, f];
            break;
          case 131:
            g = a.readString();
            m = a.readString();
            m = [g, m];
            break;
          case 138:
            var g = a.readUI16(), b = a.readUI8(), m = [g, b];
            break;
          case 139:
            m = [a.readString()];
            break;
          case 140:
            g = a.readString();
            m = a.readUI8();
            f = !1;
            6 !== m && 7 !== m ? a.position-- : (s++, f = 6 === m);
            m = [g, f];
            break;
          case 150:
            for (m = [];a.position < s;) {
              g = a.readUI8();
              switch(g | 0) {
                case 0:
                  g = a.readString();
                  break;
                case 1:
                  g = a.readFloat();
                  break;
                case 2:
                  g = null;
                  break;
                case 3:
                  g = void 0;
                  break;
                case 4:
                  g = new r(a.readUI8());
                  break;
                case 5:
                  g = a.readBoolean();
                  break;
                case 6:
                  g = a.readDouble();
                  break;
                case 7:
                  g = a.readInteger();
                  break;
                case 8:
                  g = new v(a.readUI8());
                  break;
                case 9:
                  g = new v(a.readUI16());
                  break;
                default:
                  console.error("Unknown value type: " + g);
                  a.position = s;
                  continue;
              }
              m.push(g);
            }
            break;
          case 153:
            g = a.readSI16();
            m = [g];
            break;
          case 157:
            g = a.readSI16();
            m = [g];
            break;
          case 154:
            g = a.readUI8();
            m = [g];
            break;
          case 159:
            g = a.readUI8();
            m = [g];
            g & 2 && m.push(a.readUI16());
            break;
          case 141:
            b = a.readUI8();
            m = [b];
            break;
          case 136:
            for (var b = a.readUI16(), g = [], e = 0;e < b;e++) {
              g.push(a.readString());
            }
            m = [g];
            break;
          case 155:
            m = a.readString();
            b = a.readUI16();
            f = [];
            for (e = 0;e < b;e++) {
              f.push(a.readString());
            }
            g = a.readUI16();
            s += g;
            g = new k.AVM1ActionsData(a.readBytes(g), this.dataId + "_f" + a.position, this._actionsData);
            m = [g, m, f];
            break;
          case 148:
            g = a.readUI16();
            s += g;
            m = [new k.AVM1ActionsData(a.readBytes(g), this.dataId + "_w" + a.position, this._actionsData)];
            break;
          case 135:
            var q = a.readUI8(), m = [q];
            break;
          case 142:
            for (var m = a.readString(), b = a.readUI16(), n = a.readUI8(), g = a.readUI16(), u = [], f = [], e = 0;e < b;e++) {
              var q = a.readUI8(), L = a.readString();
              f.push(L);
              q && (u[q] = {type:1, name:L, index:e});
            }
            b = 1;
            g & 1 && (u[b++] = {type:2});
            g & 4 && (u[b++] = {type:4});
            g & 16 && (u[b++] = {type:8});
            g & 64 && (u[b++] = {type:64});
            g & 128 && (u[b++] = {type:32});
            g & 256 && (u[b++] = {type:16});
            b = 0;
            g & 2 && (b |= 2);
            g & 8 && (b |= 4);
            g & 32 && (b |= 8);
            g = a.readUI16();
            s += g;
            g = new k.AVM1ActionsData(a.readBytes(g), this.dataId + "_f" + a.position, this._actionsData);
            m = [g, m, f, n, u, b];
            break;
          case 143:
            g = a.readUI8();
            m = !!(g & 4);
            f = !!(g & 2);
            g = !!(g & 1);
            b = a.readUI16();
            e = a.readUI16();
            u = a.readUI16();
            n = m ? a.readUI8() : a.readString();
            s += b + e + u;
            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);
            u = new k.AVM1ActionsData(a.readBytes(u), this.dataId + "_z" + a.position, this._actionsData);
            m = [m, n, b, g, e, f, u];
            break;
          case 137:
            m = [a.readUI8()];
        }
        a.position = s;
        return{position:d, actionCode:l, actionName:t[l], args:m};
      };
      d.prototype.skip = function(a) {
        for (var d = this._stream;0 < a && d.position < d.end;) {
          var k = 128 <= d.readUI8() ? d.readUI16() : 0;
          d.position += k;
          a--;
        }
      };
      return d;
    }();
    k.ActionsDataParser = u;
    var t = {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, h = null, p = [0];0 < p.length;) {
          var r = p.shift();
          if (!d[r]) {
            for (a.position = r;!a.eof && !d[r];) {
              var m = a.readNext();
              if (0 === m.actionCode) {
                break;
              }
              var g = a.position, f = {action:m, next:g, conditionalJumpTo:-1}, b = 0, e = !1, q = !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 = g;
                  break;
                case 153:
                  e = q = !0;
                  b = g + m.args[0];
                  break;
                case 157:
                  e = !0;
                  b = g + m.args[0];
                  break;
                case 42:
                ;
                case 62:
                ;
                case 0:
                  e = q = !0;
                  b = a.length;
                  break;
                case 136:
                  if (c) {
                    h = null;
                    break;
                  }
                  c = !0;
                  0 === r && (h = m.args[0]);
              }
              if (e) {
                if (0 > b || b > a.length) {
                  console.error("jump outside the action block;"), b = a.length;
                }
                q ? f.next = b : f.conditionalJumpTo = b;
                l[b] || (k.push(b), p.push(b), l[b] = !0);
              }
              d[r] = f;
              if (q) {
                break;
              }
              r = g;
            }
          }
        }
        var n = [];
        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]);
            n.push({label:a, items:b, jump:e});
          }
        });
        k = null;
        c ? k = h : this.parentResults && (k = this.parentResults.singleConstantPool);
        return{actions:d, blocks:n, dataId:a.dataId, singleConstantPool:k, registersLimit:this.registersLimit};
      };
      return a;
    }();
    d.ActionsDataAnalyzer = a;
  })(d.AVM1 || (d.AVM1 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(d) {
    d.AVM1ActionsData = function() {
      return function(a, d, k) {
        void 0 === k && (k = null);
        this.bytes = a;
        this.id = d;
        this.parent = k;
      };
    }();
    var a = function() {
      function a() {
        this.globals = this.root = null;
      }
      a.prototype.flushPendingScripts = function() {
      };
      a.prototype.addAsset = function(a, d, k) {
      };
      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 = a;
  })(d.AVM1 || (d.AVM1 = {}));
})(Shumway || (Shumway = {}));
__extends = this.__extends || function(d, k) {
  function a() {
    this.constructor = d;
  }
  for (var r in k) {
    k.hasOwnProperty(r) && (d[r] = k[r]);
  }
  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 r(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 v(a) {
      return "object" !== r(a) ? a : a.valueOf();
    }
    function u() {
      return k.AVM1Context.instance.loaderInfo.swfVersion;
    }
    function t(a) {
      return "object" !== r(a) ? a : a instanceof Date && 6 <= u() ? a.toString() : a.valueOf();
    }
    function l(a) {
      switch(r(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 = v(a);
      switch(r(a)) {
        case "undefined":
        ;
        case "null":
          return 7 <= u() ? NaN : 0;
        case "boolean":
          return a ? 1 : 0;
        case "number":
          return a;
        case "string":
          return "" === a && 5 > u() ? 0 : +a;
        default:
          return 5 <= u() ? NaN : 0;
      }
    }
    function h(a) {
      a = c(a);
      return isNaN(a) || !isFinite(a) || 0 === a ? 0 : a | 0;
    }
    function p(a) {
      switch(r(a)) {
        case "undefined":
          return 7 <= u() ? "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 s(a, b) {
      var e = v(a), d = v(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 g(a, b, e) {
      var c = Object.create(null);
      do {
        Xb(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 oa.link = a, oa.name = b, oa;
        }
        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 k;
      b = Object(b);
      if (null !== (k = f(b, e))) {
        return k;
      }
      if (Yb(e) || 6 < u()) {
        return c ? (oa.link = b, oa.name = e, oa) : null;
      }
      var h = e.toLowerCase();
      if (null !== (k = f(b, h))) {
        return k;
      }
      null === Ga && (Ga = Object.create(null), Zb.forEach(function(a) {
        Ga[a.toLowerCase()] = a;
      }));
      var l = Ga[h] || null;
      if (l && null !== (k = f(b, l))) {
        return k;
      }
      var n = null, q = null;
      g(b, function(a, b) {
        null === n && b.toLowerCase() === h && (q = a, n = b);
      }, null);
      return n ? (oa.link = q, oa.name = n, oa) : c ? (oa.link = b, oa.name = l || e, oa) : null;
    }
    function e(a, e) {
      var c = b(a, e, !1);
      return c ? c.link.asGetPublicProperty(c.name) : void 0;
    }
    function q(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);
        n(e.name);
      }
    }
    function n(a) {
      "o" === a[0] && "n" === a[1] && k.AVM1Context.instance.broadcastEventPropertyChange(a);
    }
    function x(a) {
      return "undefined" !== typeof InternalError && a instanceof InternalError && "too much recursion" === a.message ? new ra("long running script -- AVM1 recursion limit is reached") : a;
    }
    function L(a, b, e) {
      a.asSetPublicProperty("__proto__", b);
      a.asDefinePublicProperty("__constructor__", {value:e, writable:!0, enumerable:!1, configurable:!1});
    }
    function A(a, b) {
      var e;
      if (a instanceof d.AVM2.AS.ASClass) {
        e = $b(a, b), L(e, a.asGetPublicProperty("prototype"), a);
      } else {
        if (Ja(a)) {
          for (var c = a.asGetPublicProperty("prototype");c && !c.initAVM1ObjectInstance;) {
            c = c.asGetPublicProperty("__proto__");
          }
          e = c ? Object.create(c) : {};
          L(e, a.asGetPublicProperty("prototype"), a);
          c && c.initAVM1ObjectInstance.call(e, k.AVM1Context.instance);
          a.apply(e, b);
        } else {
          return;
        }
      }
      return e;
    }
    function H(a, b) {
      g(a, function(a, e) {
        return b.call(null, e);
      });
    }
    function K(a, e) {
      if (6 > u()) {
        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 F(a, b, e) {
      if (!b.executionProhibited) {
        var c = Va.get(), d = [];
        d.length = 4;
        var f = b.initialScope.create(e), g;
        b.pushCallFrame(e, null, null);
        c.message("ActionScript Execution Starts");
        c.indent();
        b.enterContext(function() {
          try {
            va(a, f, [], d);
          } catch (b) {
            g = x(b);
          }
        }, e);
        g instanceof ra && (b.executionProhibited = !0, console.error("Disabling AVM1 execution"));
        b.popCallFrame();
        c.unindent();
        c.message("ActionScript Execution Stops");
        if (g) {
          throw g;
        }
      }
    }
    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 M(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 Wa;
      }
    }
    function D(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 B(a) {
      for (var b = +a.pop(), b = D(b, a.length), e = [], c = 0;c < b;c++) {
        e.push(a.pop());
      }
      return e;
    }
    function E(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 y(a) {
      return a === this;
    }
    function z(a, b, e, c, d, f, g) {
      function k() {
        if (!l.executionProhibited) {
          var a, e = new ac, d = y(this) ? m : this, x, v, Ua = l.pushCallFrame(d, k, arguments);
          g & 4 || (x = Xa(arguments, 0), e.asSetPublicProperty("arguments", x));
          g & 2 || e.asSetPublicProperty("this", d);
          g & 8 || (v = new wa(Ua), e.asSetPublicProperty("super", v));
          a = q.create(e);
          var A, w = h();
          for (A = 0;A < u;A++) {
            var K = f[A];
            if (K) {
              switch(K.type) {
                case 1:
                  w[A] = arguments[K.index];
                  break;
                case 2:
                  w[A] = d;
                  break;
                case 4:
                  x = x || Xa(arguments, 0);
                  w[A] = x;
                  break;
                case 8:
                  v = v || new wa(Ua);
                  w[A] = v;
                  break;
                case 16:
                  w[A] = n;
                  break;
                case 32:
                  w[A] = m.asGetPublicProperty("_parent");
                  break;
                case 64:
                  w[A] = l.resolveLevel(0);
              }
            }
          }
          for (A = 0;A < arguments.length || A < c.length;A++) {
            t && t[A] || e.asSetPublicProperty(c[A], arguments[A]);
          }
          var H, F;
          p.indent();
          if (256 <= ++l.stackDepth) {
            throw new ra("long running script -- AVM1 recursion limit is reached");
          }
          l.enterContext(function() {
            try {
              H = va(b, a, s, w);
            } catch (e) {
              F = e;
            }
          }, r);
          l.stackDepth--;
          l.popCallFrame();
          p.unindent();
          10 < L.length || L.push(w);
          if (F) {
            throw F;
          }
          return H;
        }
      }
      function h() {
        if (0 < L.length) {
          return L.pop();
        }
        var a = [];
        a.length = v;
        return a;
      }
      var l = a.context, n = a.global, q = a.scopeContainer, m = a.scope, p = a.actionTracer, r = l.defaultTarget, s = a.constantPool, t = null, u = f ? f.length : 0;
      for (a = 0;a < u;a++) {
        var x = f[a];
        x && 1 === x.type && (t || (t = []), t[f[a].index] = !0);
      }
      var v = Math.min(d, 255), v = Math.max(v, u + 1), L = [];
      d = k;
      d.instanceConstructor = k;
      d.debugName = "avm1 " + (e || "<function>");
      e && (d.name = e);
      return k;
    }
    function G(a) {
      return a && (0 <= a.indexOf(".") || 0 <= a.indexOf(":"));
    }
    function C(e, c, d) {
      var f = e.global;
      e = e.context;
      var g, k;
      if (0 <= c.indexOf(":")) {
        g = e.currentTarget || e.defaultTarget;
        k = c.split(":");
        g = J(k[0], g, e.resolveLevel(0));
        if (!g) {
          return a(k[0] + " is undefined"), null;
        }
        k = k[1];
      } else {
        if (0 <= c.indexOf(".")) {
          for (c = c.split("."), k = c.pop(), g = f, f = 0;f < c.length;f++) {
            if (g = (e = b(g, c[f], !1)) && e.link.asGetPublicProperty(e.name), !g) {
              return a(c.slice(0, f + 1) + " is undefined"), null;
            }
          }
        }
      }
      return(e = b(g, k, d)) ? (ja.obj = g, ja.link = e.link, ja.name = e.name, ja) : null;
    }
    function I(a, e) {
      if (G(e)) {
        return C(a, e, !1);
      }
      var c = a.scopeContainer, d = a.context, d = d.currentTarget || d.defaultTarget, f = a.scope, g;
      if (g = b(f, e, !1)) {
        return ja.obj = f, ja.link = g.link, ja.name = g.name, ja;
      }
      for (;c;c = c.next) {
        if (g = b(c.scope, e, !1)) {
          return ja.obj = c.scope, ja.link = g.link, ja.name = g.name, ja;
        }
      }
      return(g = b(d, e, !1)) ? (ja.obj = d, ja.link = g.link, ja.name = g.name, ja) : "this" === e ? (f.asDefinePublicProperty("this", {value:d, configurable:!0}), ja.obj = f, ja.link = f, ja.name = "this", ja) : null;
    }
    function P(a, e) {
      if (G(e)) {
        return C(a, e, !0);
      }
      var c = a.scopeContainer, d = a.context, f = d.currentTarget || d.defaultTarget, g = a.scope;
      if (d.currentTarget) {
        return ja.obj = f, ja.link = f, ja.name = e, ja;
      }
      if (d = b(g, e, !1)) {
        return ja.obj = g, ja.link = d.link, ja.name = d.name, ja;
      }
      for (;c.next;c = c.next) {
        if (d = b(c.scope, e, !1)) {
          return ja.obj = c.scope, ja.link = d.link, ja.name = d.name, ja;
        }
      }
      ja.obj = f;
      ja.link = f;
      ja.name = e;
      return ja;
    }
    function T(a, b) {
      var e = a.global, c = b[0];
      b[1] ? e.gotoAndPlay(c + 1) : e.gotoAndStop(c + 1);
    }
    function O(a, b) {
      a.global.getURL(b[0], b[1]);
    }
    function Q(a) {
      a.global.nextFrame();
    }
    function S(a) {
      a.global.prevFrame();
    }
    function V(a) {
      a.global.play();
    }
    function aa(a) {
      a.global.stop();
    }
    function $(a) {
      a.global.toggleHighQuality();
    }
    function w(a) {
      a.global.stopAllSounds();
    }
    function U(a, b) {
      return!a.global.ifFrameLoaded(b[0]);
    }
    function ba(a, b) {
      E(a, b[0]);
    }
    function R(a, b) {
      var e = a.global, c = b[0];
      b[1] ? e.gotoAndPlay(c) : e.gotoAndStop(c);
    }
    function N(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 Z(a) {
      a.stack.pop();
    }
    function fa(a) {
      a = a.stack;
      var b = c(a.pop()), e = c(a.pop());
      a.push(b + e);
    }
    function X(a) {
      a = a.stack;
      var b = c(a.pop()), e = c(a.pop());
      a.push(e - b);
    }
    function ia(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 da(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 ea(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()), c = l(b.pop()), e = e || c;
      b.push(a ? e : e ? 1 : 0);
    }
    function ka(a) {
      var b = a.stack;
      a = a.isSwfVersion5;
      var e = !l(b.pop());
      b.push(a ? e : e ? 1 : 0);
    }
    function Y(a) {
      var b = a.stack;
      a = a.isSwfVersion5;
      var e = p(b.pop()), c = p(b.pop()), e = e == c;
      b.push(a ? e : e ? 1 : 0);
    }
    function la(a) {
      var b = a.stack;
      a = a.global;
      var e = p(b.pop());
      b.push(a.length_(e));
    }
    function ma(a) {
      var b = a.stack;
      a = a.global;
      var e = p(b.pop());
      b.push(a.length_(e));
    }
    function na(a) {
      a = a.stack;
      var b = p(a.pop()), e = p(a.pop());
      a.push(e + b);
    }
    function sa(a) {
      var b = a.stack;
      a = a.global;
      var e = b.pop(), c = b.pop(), d = p(b.pop());
      b.push(a.substring(d, c, e));
    }
    function pa(a) {
      var b = a.stack;
      a = a.global;
      var e = b.pop(), c = b.pop(), d = p(b.pop());
      b.push(a.mbsubstring(d, c, e));
    }
    function Da(a) {
      var b = a.stack;
      a = a.isSwfVersion5;
      var e = p(b.pop()), e = p(b.pop()) < e;
      b.push(a ? e : e ? 1 : 0);
    }
    function ta(a) {
      var b = a.stack;
      b.push(a.global.int(b.pop()));
    }
    function Ea(a) {
      var b = a.stack;
      a = a.global;
      var e = b.pop();
      b.push(a.ord(e));
    }
    function ua(a) {
      var b = a.stack;
      a = a.global;
      var e = b.pop();
      b.push(a.mbord(e));
    }
    function ha(a) {
      var b = a.stack;
      a = a.global;
      var e = +b.pop();
      b.push(a.chr(e));
    }
    function Fa(a) {
      var b = a.stack;
      a = a.global;
      var e = +b.pop();
      b.push(a.mbchr(e));
    }
    function Ia(a, b) {
    }
    function Ca(a, b) {
      return!!a.stack.pop();
    }
    function Ba(a) {
      var b = a.global;
      a = a.stack.pop();
      b.call(a);
    }
    function xa(a) {
      var b = a.stack, e = "" + b.pop(), c = b.length;
      b.push(void 0);
      a = I(a, e);
      b[c] = a ? a.link.asGetPublicProperty(a.name) : void 0;
    }
    function qa(a) {
      var b = a.stack, e = b.pop(), b = "" + b.pop();
      if (a = P(a, b)) {
        a.link.asSetPublicProperty(a.name, e), n(a.name);
      }
    }
    function ya(a, b) {
      var e = a.global, c = a.stack, d = b[0], f = c.pop(), c = c.pop(), g;
      d & 1 ? g = "GET" : d & 2 && (g = "POST");
      var k = d & 64;
      d & 128 ? e.loadVariables(c, f, g) : k ? e.loadMovie(c, f, g) : e.getURL(c, f, g);
    }
    function Ka(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 La(a) {
      var b = a.stack.pop();
      E(a, b);
    }
    function Ma(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 Na(a) {
      var b = a.global, e = a.stack;
      a = e.pop();
      var c = e.pop(), e = e.pop();
      b.setAVM1Property(e, c, a);
    }
    function Oa(a) {
      var b = a.global, e = a.stack;
      a = e.pop();
      var c = e.pop(), e = e.pop();
      b.duplicateMovieClip(e, c, a);
    }
    function Pa(a) {
      var b = a.global;
      a = a.stack.pop();
      b.removeMovieClip(a);
    }
    function Qa(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 Ra(a) {
      a.global.stopDrag();
    }
    function Sa(a, b) {
      var e = a.global, c = a.stack.pop();
      return!e.ifFrameLoaded(c);
    }
    function Ta(a) {
      var b = a.global;
      a = a.stack.pop();
      b.trace(void 0 === a ? "undefined" : p(a));
    }
    function Ya(a) {
      a.stack.push(a.global.getTimer());
    }
    function Za(a) {
      var b = a.stack;
      b.push(a.global.random(b.pop()));
    }
    function $a(b) {
      var e = b.stack, c = e.pop(), d = B(e), f = e.length;
      e.push(void 0);
      var g = (b = I(b, c)) ? b.link.asGetPublicProperty(b.name) : void 0;
      g instanceof Function ? e[f] = g.apply(b.obj || null, d) : a("AVM1 warning: function '" + c + (g ? "' is not callable" : "' is undefined"));
    }
    function ab(b) {
      var c = b.stack, f = c.pop(), g = c.pop(), k = B(c), h, l = c.length;
      c.push(void 0);
      if (d.isNullOrUndefined(g)) {
        a("AVM1 warning: method '" + f + "' can't be called on undefined object");
      } else {
        b = b.context.frame;
        var n, q;
        if (d.isNullOrUndefined(f) || "" === f) {
          if (g instanceof wa) {
            var m = g.callFrame, p = K(m, "__constructor__");
            p && (n = p.target, q = p.obj, h = m.currentThis);
          } else {
            h = q = g;
          }
          Ja(q) ? (b.setCallee(h, n, q, k), c[l] = q.apply(h, k), b.resetCallee()) : a("AVM1 warning: obj '" + g + (g ? "' is not callable" : "' is undefined"));
        } else {
          if (g instanceof wa) {
            if (m = g.callFrame, p = K(m, f)) {
              n = p.target, q = p.obj, h = m.currentThis;
            }
          } else {
            q = e(g, f), h = g;
          }
          Ja(q) ? (b.setCallee(h, n, q, k), c[l] = q.apply(h, k), b.resetCallee()) : a("AVM1 warning: method '" + f + "' on object", g, d.isNullOrUndefined(q) ? "is undefined" : "is not callable");
        }
      }
    }
    function bb(a, b) {
      a.constantPool = b[0];
    }
    function cb(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 db(a) {
      var b = a.stack;
      a = a.scope;
      var e = b.pop(), b = b.pop();
      a.asSetPublicProperty(b, e);
    }
    function eb(a) {
      var b = a.scope;
      a = a.stack.pop();
      b.asSetPublicProperty(a, void 0);
    }
    function fb(a) {
      a = a.stack;
      var b = a.pop(), e = a.pop();
      a.push(e.asDeleteProperty(void 0, b, 0));
      n(b);
    }
    function gb(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);
      n(c);
    }
    function hb(a) {
      var b = a.stack, e = b.pop();
      b.push(null);
      a = (a = I(a, e)) ? a.link.asGetPublicProperty(a.name) : void 0;
      d.isNullOrUndefined(a) || H(a, function(a) {
        b.push(a);
      });
    }
    function ib(a) {
      a = a.stack;
      var b = a.pop(), e = a.pop();
      a.push(b == e);
    }
    function jb(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 wa) {
          if (c = K(f.callFrame, c)) {
            b[b.length - 1] = c.obj;
          }
        } else {
          b[b.length - 1] = e(f, c);
        }
      }
    }
    function kb(a) {
      a = a.stack;
      var b = B(a);
      a.push(b);
    }
    function lb(a) {
      a = a.stack;
      var b = +a.pop(), b = D(b, a.length >> 1), e = {};
      L(e, null, Wa);
      for (var c = 0;c < b;c++) {
        var d = a.pop(), f = a.pop();
        e.asSetPublicProperty(f, d);
      }
      a.push(e);
    }
    function mb(e) {
      e = e.stack;
      var c = e.pop(), f = e.pop(), g = B(e), k = e.length;
      e.push(void 0);
      if (d.isNullOrUndefined(f)) {
        a("AVM1 warning: method '" + c + "' can't be constructed on undefined object");
      } else {
        var h;
        d.isNullOrUndefined(c) || "" === c ? h = f : (h = b(f, c, !1), h = f.asGetPublicProperty(h ? h.name : null));
        g = A(h, g);
        void 0 === g && a("AVM1 warning: method '" + c + "' on object", f, "is not constructible");
        e[k] = g;
      }
    }
    function nb(b) {
      var e = b.stack, c = e.pop(), d = B(e), f = e.length;
      e.push(void 0);
      b = (b = I(b, c)) ? b.link.asGetPublicProperty(b.name) : void 0;
      var g = M(b, d);
      void 0 === g && (g = A(b, d), void 0 === g && a("AVM1 warning: object '" + c + (b ? "' is not constructible" : "' is undefined")));
      e[f] = g;
    }
    function ob(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 wa ? a("AVM1 warning: cannot set member '" + c + "' on super") : q(e, c, b);
    }
    function pb(a) {
      a = a.stack;
      var b = a.pop();
      a.push("movieclip" === r(b) ? b._target : void 0);
    }
    function qb(a, b) {
      var e = b[0], c = a.stack.pop(), d = a.constantPool, f = a.registers, c = a.scopeContainer.create(Object(c));
      va(e, c, d, f);
    }
    function rb(a) {
      a = a.stack;
      a.push(c(a.pop()));
    }
    function sb(a) {
      a = a.stack;
      a.push(p(a.pop()));
    }
    function tb(a) {
      a = a.stack;
      var b = a.pop();
      a.push(r(b));
    }
    function ub(a) {
      a = a.stack;
      var b = t(a.pop()), e = t(a.pop());
      "string" === typeof b || "string" === typeof e ? a.push(p(e) + p(b)) : a.push(c(e) + c(b));
    }
    function vb(a) {
      a = a.stack;
      var b = a.pop(), e = a.pop();
      a.push(s(e, b));
    }
    function wb(a) {
      a = a.stack;
      var b = c(a.pop()), e = c(a.pop());
      a.push(e % b);
    }
    function xb(a) {
      a = a.stack;
      var b = h(a.pop()), e = h(a.pop());
      a.push(e & b);
    }
    function yb(a) {
      a = a.stack;
      var b = h(a.pop()), e = h(a.pop());
      a.push(e << b);
    }
    function zb(a) {
      a = a.stack;
      var b = h(a.pop()), e = h(a.pop());
      a.push(e | b);
    }
    function Ab(a) {
      a = a.stack;
      var b = h(a.pop()), e = h(a.pop());
      a.push(e >> b);
    }
    function Bb(a) {
      a = a.stack;
      var b = h(a.pop()), e = h(a.pop());
      a.push(e >>> b);
    }
    function Cb(a) {
      a = a.stack;
      var b = h(a.pop()), e = h(a.pop());
      a.push(e ^ b);
    }
    function Db(a) {
      a = a.stack;
      var b = c(a.pop());
      b--;
      a.push(b);
    }
    function Eb(a) {
      a = a.stack;
      var b = c(a.pop());
      b++;
      a.push(b);
    }
    function Fb(a) {
      a = a.stack;
      a.push(a[a.length - 1]);
    }
    function Gb(a) {
      a.isEndOfActions = !0;
    }
    function Hb(a) {
      a = a.stack;
      a.push(a.pop(), a.pop());
    }
    function Ib(a, b) {
      var e = a.stack, c = a.registers, d = b[0];
      0 > d || d >= c.length || (c[d] = e[e.length - 1]);
    }
    function Jb(a) {
      a = a.stack;
      var b = a.pop(), e = a.pop();
      a.push(m(e, b));
    }
    function Kb(b) {
      var e = b.stack;
      b = e.pop();
      e.push(null);
      d.isNullOrUndefined(b) ? a("AVM1 warning: cannot iterate over undefined object") : H(b, function(a) {
        e.push(a);
      });
    }
    function Lb(a) {
      a = a.stack;
      var b = a.pop(), e = a.pop();
      a.push(e === b);
    }
    function Mb(a) {
      a = a.stack;
      var b = a.pop(), e = a.pop();
      a.push(s(b, e));
    }
    function Nb(a) {
      var b = a.stack;
      a = a.isSwfVersion5;
      var e = p(b.pop()), e = p(b.pop()) > e;
      b.push(a ? e : e ? 1 : 0);
    }
    function Ob(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 Pb(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 Qb(a) {
      a = a.stack;
      var b = a.pop(), e = a.pop();
      a.push(m(b, e) ? b : null);
    }
    function Rb(a) {
      a = a.stack;
      var b = a.pop(), e = +a.pop();
      D(e, a.length);
      for (var c = [], d = 0;d < e;d++) {
        c.push(a.pop());
      }
      b._as2Interfaces = c;
    }
    function Sb(a, b) {
      var e = b[5], c = b[3], d = b[1], f = b[2], g = b[4], k = b[6], h = a.context, l = a.scopeContainer, n = a.scope, q = a.constantPool, m = a.registers, p = h.isTryCatchListening, r;
      try {
        h.isTryCatchListening = !0, va(f, l, q, m);
      } catch (s) {
        h.isTryCatchListening = p, c && s instanceof Ha ? ("string" === typeof d ? n.asSetPublicProperty(d, s.error) : m[d] = s.error, va(g, l, q, m)) : r = s;
      }
      h.isTryCatchListening = p;
      e && va(k, l, q, m);
      if (r) {
        throw r;
      }
    }
    function Tb(a) {
      a = a.stack.pop();
      throw new Ha(a);
    }
    function Ub(a) {
      var b = a.stack, e = a.global, c = B(b);
      a = b.length;
      b.push(void 0);
      e = e.fscommand.apply(null, c);
      b[a] = e;
    }
    function bc(a, b) {
    }
    function cc(a) {
      return function(b, e) {
        var c;
        try {
          a(b, e), b.recoveringFromError = !1;
        } catch (f) {
          c = b.context;
          f = x(f);
          if (f instanceof ra) {
            throw f;
          }
          if (f instanceof Ha) {
            throw f;
          }
          Vb.instance.reportTelemetry({topic:"error", error:1});
          if (!b.recoveringFromError) {
            if (1E3 <= c.errorsIgnored++) {
              throw new ra("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 dc() {
      var a;
      a = k.avm1ErrorsEnabled.value ? function(a) {
        return a;
      } : cc;
      return{ActionGotoFrame:a(T), ActionGetURL:a(O), ActionNextFrame:a(Q), ActionPreviousFrame:a(S), ActionPlay:a(V), ActionStop:a(aa), ActionToggleQuality:a($), ActionStopSounds:a(w), ActionWaitForFrame:a(U), ActionSetTarget:a(ba), ActionGoToLabel:a(R), ActionPush:a(N), ActionPop:a(Z), ActionAdd:a(fa), ActionSubtract:a(X), ActionMultiply:a(ia), ActionDivide:a(ga), ActionEquals:a(ca), ActionLess:a(da), ActionAnd:a(ea), ActionOr:a(W), ActionNot:a(ka), ActionStringEquals:a(Y), ActionStringLength:a(la), 
      ActionMBStringLength:a(ma), ActionStringAdd:a(na), ActionStringExtract:a(sa), ActionMBStringExtract:a(pa), ActionStringLess:a(Da), ActionToInteger:a(ta), ActionCharToAscii:a(Ea), ActionMBCharToAscii:a(ua), ActionAsciiToChar:a(ha), ActionMBAsciiToChar:a(Fa), ActionJump:a(Ia), ActionIf:a(Ca), ActionCall:a(Ba), ActionGetVariable:a(xa), ActionSetVariable:a(qa), ActionGetURL2:a(ya), ActionGotoFrame2:a(Ka), ActionSetTarget2:a(La), ActionGetProperty:a(Ma), ActionSetProperty:a(Na), ActionCloneSprite:a(Oa), 
      ActionRemoveSprite:a(Pa), ActionStartDrag:a(Qa), ActionEndDrag:a(Ra), ActionWaitForFrame2:a(Sa), ActionTrace:a(Ta), ActionGetTime:a(Ya), ActionRandomNumber:a(Za), ActionCallFunction:a($a), ActionCallMethod:a(ab), ActionConstantPool:a(bb), ActionDefineFunction:a(cb), ActionDefineLocal:a(db), ActionDefineLocal2:a(eb), ActionDelete:a(fb), ActionDelete2:a(gb), ActionEnumerate:a(hb), ActionEquals2:a(ib), ActionGetMember:a(jb), ActionInitArray:a(kb), ActionInitObject:a(lb), ActionNewMethod:a(mb), 
      ActionNewObject:a(nb), ActionSetMember:a(ob), ActionTargetPath:a(pb), ActionWith:a(qb), ActionToNumber:a(rb), ActionToString:a(sb), ActionTypeOf:a(tb), ActionAdd2:a(ub), ActionLess2:a(vb), ActionModulo:a(wb), ActionBitAnd:a(xb), ActionBitLShift:a(yb), ActionBitOr:a(zb), ActionBitRShift:a(Ab), ActionBitURShift:a(Bb), ActionBitXor:a(Cb), ActionDecrement:a(Db), ActionIncrement:a(Eb), ActionPushDuplicate:a(Fb), ActionReturn:a(Gb), ActionStackSwap:a(Hb), ActionStoreRegister:a(Ib), ActionInstanceOf:a(Jb), 
      ActionEnumerate2:a(Kb), ActionStrictEquals:a(Lb), ActionGreater:a(Mb), ActionStringGreater:a(Nb), ActionDefineFunction2:a(Ob), ActionExtends:a(Pb), ActionCastOp:a(Qb), ActionImplementsOp:a(Rb), ActionTry:a(Sb), ActionThrow:a(Tb), ActionFSCommand2:a(Ub), ActionStrictMode:a(bc)};
    }
    function va(a, b, e, c) {
      var f = k.AVM1Context.instance;
      if (!a.ir) {
        var g = new k.ActionsDataParser(a, f.loaderInfo.swfVersion), h = new k.ActionsDataAnalyzer;
        h.registersLimit = c.length;
        h.parentResults = a.parent && a.parent.ir;
        a.ir = h.analyze(g);
        if (k.avm1CompilerEnabled.value) {
          try {
            var l = new ec;
            a.ir.compiled = l.generate(a.ir);
          } catch (n) {
            console.error("Unable to compile AVM1 function: " + n);
          }
        }
      }
      a = a.ir;
      var h = a.compiled, g = [], q = 5 <= f.loaderInfo.swfVersion, m = Va.get(), l = b.scope;
      b = {context:f, global:f.globals, scopeContainer:b, scope:l, actionTracer:m, constantPool:e, registers:c, stack:g, frame:null, isSwfVersion5:q, recoveringFromError:!1, isEndOfActions:!1};
      l._as3Object && l._as3Object._deferScriptExecution && (f.deferScriptExecution = !0);
      if (h) {
        return h(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 ra("long running script -- AVM1 instruction hang timeout");
        }
        h = b;
        l = q = void 0;
        try {
          var q = h, p = c.action, r = p.actionCode, s = p.args;
          q.actionTracer.print(p, q.stack);
          m = !1;
          switch(r | 0) {
            case 129:
              T(q, s);
              break;
            case 131:
              O(q, s);
              break;
            case 4:
              Q(q);
              break;
            case 5:
              S(q);
              break;
            case 6:
              V(q);
              break;
            case 7:
              aa(q);
              break;
            case 8:
              $(q);
              break;
            case 9:
              w(q);
              break;
            case 138:
              m = U(q, s);
              break;
            case 139:
              ba(q, s);
              break;
            case 140:
              R(q, s);
              break;
            case 150:
              N(q, s);
              break;
            case 23:
              Z(q);
              break;
            case 10:
              fa(q);
              break;
            case 11:
              X(q);
              break;
            case 12:
              ia(q);
              break;
            case 13:
              ga(q);
              break;
            case 14:
              ca(q);
              break;
            case 15:
              da(q);
              break;
            case 16:
              ea(q);
              break;
            case 17:
              W(q);
              break;
            case 18:
              ka(q);
              break;
            case 19:
              Y(q);
              break;
            case 20:
              la(q);
              break;
            case 49:
              ma(q);
              break;
            case 33:
              na(q);
              break;
            case 21:
              sa(q);
              break;
            case 53:
              pa(q);
              break;
            case 41:
              Da(q);
              break;
            case 24:
              ta(q);
              break;
            case 50:
              Ea(q);
              break;
            case 54:
              ua(q);
              break;
            case 51:
              ha(q);
              break;
            case 55:
              Fa(q);
              break;
            case 153:
              break;
            case 157:
              m = Ca(q, s);
              break;
            case 158:
              Ba(q);
              break;
            case 28:
              xa(q);
              break;
            case 29:
              qa(q);
              break;
            case 154:
              ya(q, s);
              break;
            case 159:
              Ka(q, s);
              break;
            case 32:
              La(q);
              break;
            case 34:
              Ma(q);
              break;
            case 35:
              Na(q);
              break;
            case 36:
              Oa(q);
              break;
            case 37:
              Pa(q);
              break;
            case 39:
              Qa(q);
              break;
            case 40:
              Ra(q);
              break;
            case 141:
              m = Sa(q, s);
              break;
            case 38:
              Ta(q);
              break;
            case 52:
              Ya(q);
              break;
            case 48:
              Za(q);
              break;
            case 61:
              $a(q);
              break;
            case 82:
              ab(q);
              break;
            case 136:
              bb(q, s);
              break;
            case 155:
              cb(q, s);
              break;
            case 60:
              db(q);
              break;
            case 65:
              eb(q);
              break;
            case 58:
              fb(q);
              break;
            case 59:
              gb(q);
              break;
            case 70:
              hb(q);
              break;
            case 73:
              ib(q);
              break;
            case 78:
              jb(q);
              break;
            case 66:
              kb(q);
              break;
            case 67:
              lb(q);
              break;
            case 83:
              mb(q);
              break;
            case 64:
              nb(q);
              break;
            case 79:
              ob(q);
              break;
            case 69:
              pb(q);
              break;
            case 148:
              qb(q, s);
              break;
            case 74:
              rb(q);
              break;
            case 75:
              sb(q);
              break;
            case 68:
              tb(q);
              break;
            case 71:
              ub(q);
              break;
            case 72:
              vb(q);
              break;
            case 63:
              wb(q);
              break;
            case 96:
              xb(q);
              break;
            case 99:
              yb(q);
              break;
            case 97:
              zb(q);
              break;
            case 100:
              Ab(q);
              break;
            case 101:
              Bb(q);
              break;
            case 98:
              Cb(q);
              break;
            case 81:
              Db(q);
              break;
            case 80:
              Eb(q);
              break;
            case 76:
              Fb(q);
              break;
            case 62:
              Gb(q);
              break;
            case 77:
              Hb(q);
              break;
            case 135:
              Ib(q, s);
              break;
            case 84:
              Jb(q);
              break;
            case 85:
              Kb(q);
              break;
            case 102:
              Lb(q);
              break;
            case 103:
              Mb(q);
              break;
            case 104:
              Nb(q);
              break;
            case 142:
              Ob(q, s);
              break;
            case 105:
              Pb(q);
              break;
            case 43:
              Qb(q);
              break;
            case 44:
              Rb(q);
              break;
            case 143:
              Sb(q, s);
              break;
            case 42:
              Tb(q);
              break;
            case 45:
              Ub(q);
              break;
            case 137:
              break;
            case 0:
              q.isEndOfActions = !0;
              break;
            default:
              throw Error("Unknown action code: " + r);;
          }
          l = m;
          h.recoveringFromError = !1;
        } catch (t) {
          q = h.context;
          t = x(t);
          if (k.avm1ErrorsEnabled.value && !q.isTryCatchListening || t instanceof ra) {
            throw t;
          }
          if (t instanceof Ha) {
            throw t;
          }
          Vb.instance.reportTelemetry({topic:"error", error:1});
          if (!h.recoveringFromError) {
            if (1E3 <= q.errorsIgnored++) {
              throw new ra("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});
            h.recoveringFromError = !0;
          }
        }
        c = l ? c.conditionalJumpTo : c.next;
        c = a.actions[c];
      }
      return g.pop();
    }
    var Xb = d.AVM2.Runtime.forEachPublicProperty, $b = d.AVM2.Runtime.construct, Yb = d.isNumeric, Ja = d.isFunction, fc = d.Debug.notImplemented, Wb = d.AVM2.Runtime.asCoerceString, Xa = d.AVM2.Runtime.sliceArguments, za = d.Options.Option, Vb = d.Telemetry, Aa = d.Settings.shumwayOptions.register(new d.Options.OptionSet("AVM1"));
    k.avm1TraceEnabled = Aa.register(new za("t1", "traceAvm1", "boolean", !1, "trace AVM1 execution"));
    k.avm1ErrorsEnabled = Aa.register(new za("e1", "errorsAvm1", "boolean", !1, "fail on AVM1 warnings and errors"));
    k.avm1TimeoutDisabled = Aa.register(new za("ha1", "nohangAvm1", "boolean", !1, "disable fail on AVM1 hang"));
    k.avm1CompilerEnabled = Aa.register(new za("ca1", "compileAvm1", "boolean", !0, "compiles AVM1 code"));
    k.avm1DebuggerEnabled = Aa.register(new za("da1", "debugAvm1", "boolean", !1, "allows AVM1 code debugging"));
    k.Debugger = {pause:!1, breakpoints:{}};
    var Zb = "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(" "), 
    Ga = null, gc = function() {
      function a(b, e) {
        this.scope = b;
        this.next = e;
      }
      a.prototype.create = function(b) {
        return new a(b, this);
      };
      return a;
    }(), ac = 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), hc = 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;
    }(), ic = function(c) {
      function d(a) {
        c.call(this);
        this.loaderInfo = a;
        this.globals = new (k.Lib.AVM1Globals.createAVM1Class())(this);
        this.initialScope = new gc(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() {
            q(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 = Wb(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 = Wb(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 hc(this.frame, a, b, e);
      };
      d.prototype.popCallFrame = function() {
        var a = this.frame.previousFrame;
        return this.frame = a;
      };
      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, g;
          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 (h) {
            g = h;
          }
          this.defaultTarget = d;
          this.currentTarget = f;
          this.isActive = c;
          k.AVM1Context.instance = e;
          if (g) {
            throw g;
          }
        }
      };
      d.prototype.executeActions = function(a, b) {
        F(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 ic(a);
    };
    var Ha = function() {
      return function(a) {
        this.error = a;
      };
    }(), ra = function(a) {
      function b(e, c) {
        a.call(this, e);
        this.error = c;
      }
      __extends(b, a);
      return b;
    }(Error), oa = {link:void 0, name:null};
    k.executeActions = F;
    var Wa = function(a) {
      function b() {
        a.apply(this, arguments);
      }
      __extends(b, a);
      return b;
    }(d.AVM2.AS.ASObject), wa = function() {
      return function(a) {
        this.callFrame = a;
      };
    }(), ja = {obj:null, link:null, name:null}, ec = function() {
      function a() {
        a.cachedCalls || (a.cachedCalls = dc());
      }
      a.prototype.convertArgs = function(a, b, e, c) {
        for (var d = [], f = 0;f < a.length;f++) {
          var g = a[f];
          if ("object" !== typeof g || null === g || Array.isArray(g)) {
            void 0 === g ? d.push("undefined") : d.push(JSON.stringify(g));
          } else {
            if (g instanceof k.ParsedPushConstantAction) {
              if (c.singleConstantPool) {
                var h = c.singleConstantPool[g.constantIndex];
                d.push(void 0 === h ? "undefined" : JSON.stringify(h));
              } else {
                var h = "", l = e.constantPool;
                l && (h = l[g.constantIndex], h = void 0 === h ? "undefined" : JSON.stringify(h), h = 0 <= h.indexOf("*/") ? "" : " /* " + h + " */");
                d.push("constantPool[" + g.constantIndex + "]" + h);
              }
            } else {
              g instanceof k.ParsedPushRegisterAction ? (g = g.registerNumber, 0 > g || g >= c.registersLimit ? d.push("undefined") : d.push("registers[" + g + "]")) : g instanceof k.AVM1ActionsData ? (h = "code_" + b + "_" + f, e[h] = g, d.push("res." + h)) : fc("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 ra("long running script -- AVM1 instruction hang timeout");
        }
      };
      a.prototype.generate = function(b) {
        var e = this, c = b.blocks, d = {}, f = 0, g = b.dataId, h = "return function avm1gen_" + g + "(ectx) {\nvar position = 0;\nvar checkTimeAfter = 0;\nvar constantPool = ectx.constantPool, registers = ectx.registers, stack = ectx.stack;\n";
        k.avm1DebuggerEnabled.value && (h += "/* Running " + g + " */ if (Shumway.AVM1.Debugger.pause || Shumway.AVM1.Debugger.breakpoints." + g + ") { debugger; }\n");
        h += "while (!ectx.isEndOfActions) {\nif (checkTimeAfter <= 0) { checkTimeAfter = 1000; checkTimeout(ectx); }\nswitch(position) {\n";
        c.forEach(function(a) {
          h += " case " + a.label + ":\n";
          a.items.forEach(function(a, c) {
            h += e.convertAction(a, f++, d, c, b);
          });
          h += "  position = " + a.jump + ";\n  checkTimeAfter -= " + a.items.length + ";\n  break;\n";
        });
        h += " default: ectx.isEndOfActions = true; break;\n}\n}\nreturn stack.pop();};";
        h += "//# sourceURL=avm1gen-" + g;
        return(new Function("calls", "res", "checkTimeout", h))(a.cachedCalls, d, this.checkAvm1Timeout);
      };
      return a;
    }(), Va = 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, g = [], h = 0;h < e.length;h++) {
            var k = e[h];
            k && "object" === typeof k ? (k = k.asGetPublicProperty("__constructor__"), g.push("[" + (k ? k.name : "Object") + "]")) : g.push(k);
          }
          console.log("AVM1 trace: " + Array(a + 1).join("..") + c + ": " + f + "(" + d.toString(16) + "), stack=" + g);
        }, 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 r(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 v(a, c, b, e) {
        void 0 === e && (e = null);
        var h = a.utils.getProperty(c, b);
        d.isFunction(h) && h.apply(c, e);
        h = a.utils.getProperty(this, "_listeners");
        Array.isArray(h) && h.forEach(function(h) {
          h = a.utils.getProperty(h, b);
          d.isFunction(h) && h.apply(c, e);
        });
      }
      function u(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 t(a, c) {
        return a ? a._as2Object ? a._as2Object : h.display.MovieClip.isType(a) ? a._avm1SymbolClass ? u(a._avm1SymbolClass, a, c) : u(c.globals.MovieClip, a, c) : h.display.SimpleButton.isType(a) ? u(c.globals.Button, a, c) : h.text.TextField.isType(a) ? u(c.globals.TextField, a, c) : h.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 h = d.AVM2.AS.flash, p = 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 = p;
      p = 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 = p;
      p = 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 A() {
            d.as3Object.removeEventListener("removedFromStage", A);
            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) {
          r(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;
            v(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;
      }(p);
      a.AVM1SymbolBase = p;
      a.avm1HasEventProperty = r;
      a.avm1BroadcastEvent = v;
      p = 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 = p;
      a.getAVM1Object = t;
      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 s = !1;
      a.installObjectMethods = function() {
        if (!s) {
          s = !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) {
        d = t(a, d);
        b.variableName && d.asSetPublicProperty("variable", b.variableName);
        var e = b.events;
        if (e) {
          for (var h = 0;h < e.length;h++) {
            var l = e[h], p;
            l.actionsData ? (p = new k.AVM1ActionsData(l.actionsData, "s" + b.symbolId + "e" + h), l.actionsData = null, l.compiled = p) : p = l.compiled;
            p = c.bind(null, p, d);
            var l = l.flags, r;
            for (r in m) {
              if (r |= 0, l & (r | 0)) {
                var s = m[r];
                switch(r) {
                  case 2048:
                  ;
                  case 4096:
                  ;
                  case 8192:
                  ;
                  case 16384:
                    a.buttonMode = !0;
                }
                a.addEventListener(s, p);
              }
            }
          }
        }
      };
      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 r = d.Debug.notImplemented, v = d.Debug.somewhatImplemented, u = d.AVM2.Runtime.forEachPublicProperty, t = d.AVM2.AS.flash, l = jsGlobal.escape, c = [], h = function() {
        function h(c) {
          this.fscommand = t.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 = t.net.SharedObject;
          this.ContextMenu = t.ui.ContextMenu;
          this.ContextMenuItem = t.ui.ContextMenuItem;
          this.TextFormat = a.AVM1TextFormat.createAVM1Class();
          h.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);
        }
        h.createAVM1Class = function() {
          return a.wrapAVM1Class(h, [], "_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(" "));
        };
        h.prototype.asfunction = function(a) {
          r("AVM1Globals.$asfunction");
        };
        h.prototype.ASSetPropFlags = function(a, c, d, b) {
        };
        h.prototype.call = function(c) {
          var d = a.AVM1Utils.resolveTarget().as3Object;
          c = d._getAbsFrameNumber(c, null);
          void 0 !== c && d.callFrame(c);
        };
        h.prototype.chr = function(a) {
          return String.fromCharCode(a);
        };
        h.prototype.clearInterval = function(a) {
          var d = c[a - 1];
          d && (clearInterval(d), delete c[a - 1]);
        };
        h.prototype.clearTimeout = function(a) {
          var d = c[a - 1];
          d && (clearTimeout(d), delete c[a - 1]);
        };
        h.prototype.duplicateMovieClip = function(c, d, f) {
          a.AVM1Utils.resolveTarget(c).duplicateMovieClip(d, f, null);
        };
        h.prototype.getAVM1Property = function(c, d) {
          return a.AVM1Utils.resolveTarget(c)[p[d]];
        };
        h.prototype.getURL = function(a, c, f) {
          var b = new t.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);
        };
        h.prototype.getVersion = function() {
          return t.system.Capabilities.version;
        };
        h.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);
          });
        };
        h.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);
            }
          });
        };
        h.prototype.unescape = function(a) {
          return decodeURIComponent(a);
        };
        h.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]]);
        };
        h.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]]);
        };
        h.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;
        };
        h.prototype.int = function(a) {
          return a | 0;
        };
        h.prototype.length_ = function(a) {
          return("" + a).length;
        };
        h.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 t.display.Loader;
            b ? (c = new t.net.URLRequest(c), f && (c.method = f), e.load(c)) : a.AVM1Utils.resolveTarget(d).loadMovie(c, f);
          }
        };
        h.prototype._setLevel = function(a, c) {
        };
        h.prototype.loadMovieNum = function(a, c, d) {
          if (a && 0 === a.toLowerCase().indexOf("fscommand:")) {
            return this.fscommand(a.substring(10));
          }
          c = new t.display.Loader;
          a = new t.net.URLRequest(a);
          d && (a.method = d);
          c.load(a);
        };
        h.prototype.loadVariables = function(c, d, f) {
          void 0 === f && (f = "");
          d = a.AVM1Utils.resolveTarget(d);
          this._loadVariables(d, c, f);
        };
        h.prototype.loadVariablesNum = function(c, d, f) {
          void 0 === f && (f = "");
          this._loadVariables(a.AVM1Utils.resolveLevel(d), c, f);
        };
        h.prototype._loadVariables = function(c, d, f) {
          function b(d) {
            h.removeEventListener(t.events.Event.COMPLETE, b);
            u(h.data, function(a, b) {
              e.utils.setProperty(c, a, b);
            });
            c instanceof a.AVM1MovieClip && a.avm1BroadcastEvent(e, c, "onData");
          }
          d = new t.net.URLRequest(d);
          f && (d.method = f);
          var e = k.AVM1Context.instance, h = new t.net.URLLoader(d);
          h._ignoreDecodeErrors = !0;
          h.dataFormat = "variables";
          h.addEventListener(t.events.Event.COMPLETE, b);
        };
        h.prototype.mbchr = function(a) {
          return String.fromCharCode(a);
        };
        h.prototype.mblength = function(a) {
          return("" + a).length;
        };
        h.prototype.mbord = function(a) {
          return("" + a).charCodeAt(0);
        };
        h.prototype.mbsubstring = function(a, c, d) {
          return c !== (0 | c) || d !== (0 | d) ? "" : ("" + a).substr(c, d);
        };
        h.prototype.nextFrame = function() {
          var c = a.AVM1Utils.resolveTarget();
          this._addToPendingScripts(c, c.nextFrame);
        };
        h.prototype.nextScene = function() {
          var c = a.AVM1Utils.resolveTarget();
          this._addToPendingScripts(c, c.nextScene);
        };
        h.prototype.ord = function(a) {
          return("" + a).charCodeAt(0);
        };
        h.prototype.play = function() {
          a.AVM1Utils.resolveTarget().play();
        };
        h.prototype.prevFrame = function() {
          var c = a.AVM1Utils.resolveTarget();
          this._addToPendingScripts(c, c.prevFrame);
        };
        h.prototype.prevScene = function() {
          var c = a.AVM1Utils.resolveTarget();
          this._addToPendingScripts(c, c.prevScene);
        };
        h.prototype.print = function(a, c) {
          r("AVM1Globals.print");
        };
        h.prototype.printAsBitmap = function(a, c) {
          r("AVM1Globals.printAsBitmap");
        };
        h.prototype.printAsBitmapNum = function(a, c) {
          r("AVM1Globals.printAsBitmapNum");
        };
        h.prototype.printNum = function(a, c) {
          r("AVM1Globals.printNum");
        };
        h.prototype.random = function(a) {
          return 0 | Math.random() * (0 | a);
        };
        h.prototype.removeMovieClip = function(c) {
          a.AVM1Utils.resolveTarget(c).removeMovieClip();
        };
        h.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);
          }
        };
        h.prototype.setAVM1Property = function(c, d, f) {
          a.AVM1Utils.resolveTarget(c)[p[d]] = f;
        };
        h.prototype.setTimeout = function() {
          if (!(2 > arguments.length || "function" !== typeof arguments[0])) {
            arguments[1] |= 0;
            var a = setTimeout.apply(null, arguments);
            return c.push(a);
          }
        };
        h.prototype.showRedrawRegions = function(a, c) {
          r("AVM1Globals.showRedrawRegions");
        };
        h.prototype.startDrag = function(c, d, f, b, e, h) {
          a.AVM1Utils.resolveTarget(c).startDrag(d, 3 > arguments.length ? null : new t.geom.Rectangle(f, b, e - f, h - b));
        };
        h.prototype.stop = function() {
          a.AVM1Utils.resolveTarget().stop();
        };
        h.prototype.stopAllSounds = function() {
          t.media.SoundMixer.stopAll();
        };
        h.prototype.stopDrag = function(c) {
          a.AVM1Utils.resolveTarget(c).stopDrag();
        };
        h.prototype.substring = function(a, c, d) {
          return this.mbsubstring(a, c, d);
        };
        h.prototype.targetPath = function(c) {
          return a.AVM1Utils.resolveTarget(c)._target;
        };
        h.prototype.toggleHighQuality = function() {
          r("AVM1Globals.toggleHighQuality");
        };
        h.prototype.trace = function(a) {
          d.AVM2.AS.Natives.print(a);
        };
        h.prototype.unloadMovie = function(c) {
          a.AVM1Utils.resolveTarget(c).unloadMovie();
        };
        h.prototype.unloadMovieNum = function(c) {
          a.AVM1Utils.resolveLevel(c).unloadMovie();
        };
        h.prototype.updateAfterEvent = function() {
          v("AVM1Globals.updateAfterEvent");
        };
        h.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", t.geom.ColorTransform);
          c.asSetPublicProperty("Matrix", t.geom.Matrix);
          c.asSetPublicProperty("Point", t.geom.Point);
          c.asSetPublicProperty("Rectangle", t.geom.Rectangle);
          c.asSetPublicProperty("Transform", a.AVM1Transform.createAVM1Class());
          this.flash.asSetPublicProperty("geom", c);
          this.flash.asSetPublicProperty("text", {});
        };
        h.prototype.toString = function() {
          return "[type Object]";
        };
        return h;
      }();
      a.AVM1Globals = h;
      var p = "_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 r = function() {
        function r() {
        }
        r.setAVM1Context = function(a) {
          this._context = a;
        };
        r.createAVM1Class = function() {
          return a.wrapAVM1Class(r, ["initialize"], []);
        };
        r.initialize = function(a) {
          r.initializeWithContext(a, d.AVM1Context.instance);
        };
        r.initializeWithContext = function(d, k) {
          d.asSetPublicProperty("_listeners", []);
          d.asSetPublicProperty("broadcastMessage", function(d) {
            for (var c = [], h = 1;h < arguments.length;h++) {
              c[h - 1] = arguments[h];
            }
            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 r;
      }();
      a.AVM1Broadcaster = r;
    })(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 r = d.AVM2.AS.flash, v = d.AVM2.ABC.Multiname, u = d.AVM2.Runtime.resolveMultinameProperty, t = Object.prototype.asGetProperty, l = Object.prototype.asHasProperty, c = Object.prototype.asGetEnumerableKeys, h = 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), p = function(p) {
        function m() {
          p.call(this);
        }
        __extends(m, p);
        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) {
          p.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 = r.display.MovieClip.initializeFrom(e);
            r.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 r.display.BitmapData && this.graphics.beginBitmapFill(a, c, b, e);
        };
        m.prototype.beginGradientFill = function(a, c, b, e, d, h, k, l) {
          this.graphics.beginGradientFill(a, c, b, e, d, h, k, l);
        };
        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 r.display.Bitmap.isType(c) ? null : a.getAVM1Object(c, this.context);
        };
        m.prototype.createEmptyMovieClip = function(a, c) {
          var b = new r.display.MovieClip;
          b.name = a;
          return this._insertChildAtDepth(b, c);
        };
        m.prototype.createTextField = function(a, c, b, e, d, h) {
          var k = new r.text.TextField;
          k.name = a;
          k.x = b;
          k.y = e;
          k.width = d;
          k.height = h;
          return this._insertChildAtDepth(k, 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 h = d._lookupChildByIndex(b);
            if (h && h._depth === c) {
              return r.display.Bitmap.isType(h) ? this : a.getAVM1Object(h, 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 r.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 r.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, h, k, l) {
          this.graphics.lineGradientStyle(a, c, b, e, d, h, k, l);
        };
        m.prototype.lineStyle = function(a, c, b, e, d, h, k, l) {
          this.graphics.lineStyle(a, c, b, e, d, h, k, l);
        };
        m.prototype.lineTo = function(a, c) {
          this.graphics.lineTo(a, c);
        };
        m.prototype.loadMovie = function(a, c) {
          function b(a) {
            e.removeEventListener(r.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 r.display.Loader, d = new r.net.URLRequest(a);
          c && (d.method = c);
          e.load(d);
          e.addEventListener(r.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 r.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 r.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 t.call(this, a, c, b);
          }
          if ("string" === typeof c && "_" === c[0]) {
            var e = this._resolveLevelNProperty(c);
            if (e) {
              return e;
            }
          }
          a = u(a, c, b);
          if (v.isPublicQualifiedName(a) && this.isAVM1Instance) {
            return this.__lookupChild(v.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 = u(a, c, b);
          return v.isPublicQualifiedName(a) && this.isAVM1Instance ? !!this.__lookupChild(v.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 h = d._children[b].name;
            l.call(this, void 0, h, 0) || a.push(v.getPublicQualifiedName(h));
          }
          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 = new k.AVM1ActionsData(c, "f" + a + "i" + e.length);
          e.push(b);
        };
        m.prototype._addInitActionBlocks = function(a, c) {
          function b(h) {
            if (e.currentFrame === a + 1) {
              e.removeEventListener("enterFrame", b);
              h = d.context;
              for (var l = 0;l < c.length;l++) {
                var m = new k.AVM1ActionsData(c[l].actionsData, "f" + a + "i" + l);
                h.executeActions(m, 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 h("onPress", "mouseDown"), new h("onRelease", "mouseUp"), new h("onReleaseOutside", "releaseOutside"), new h("onRollOut", "mouseOut"), new h("onRollOver", "mouseOver"), new a.AVM1EventHandler("onSetFocus", "focusIn", function(a) {
            return[a.relatedObject];
          }), new a.AVM1EventHandler("onUnload", "unload")]);
        };
        return m;
      }(a.AVM1SymbolBase);
      a.AVM1MovieClip = p;
    })(k.Lib || (k.Lib = {}));
  })(d.AVM1 || (d.AVM1 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var r = d.Debug.somewhatImplemented, v;
      (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";
      })(v || (v = {}));
      var u = [-1, 37, 39, 36, 35, 45, 46, -1, 8, -1, -1, -1, -1, 13, 38, 40, 33, 34, 9, 27];
      v = 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, h) {
          d.prototype.initAVM1SymbolInstance.call(this, a, h);
          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 s = this._requiredListeners = Object.create(null), m = this._actions = l._symbol.data.buttonActions, g = 0;g < m.length;g++) {
              var f = m[g];
              f.actionsBlock || (f.actionsBlock = new k.AVM1ActionsData(f.actionsData, "s" + l._symbol.id + "e" + g));
              if (f.keyCode) {
                s.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:
                    r("AVM1 drag over/out button actions");
                    break;
                  case 128:
                  ;
                  case 256:
                    r("AVM1 drag trackAsMenu over/out button actions");
                    break;
                  default:
                    console.warn("Unknown AVM1 button action type: " + f.stateTransitionFlags);
                    continue;
                }
                s[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, k = 0;k < d.length;k++) {
            var l = d[k];
            l.keyCode && (32 > l.keyCode && u[l.keyCode] === a.asGetPublicProperty("keyCode") || l.keyCode === a.asGetPublicProperty("charCode")) && this._runAction(l);
          }
        };
        l.prototype._mouseEventHandler = function(a) {
          for (var d = this._actions, k = 0;k < d.length;k++) {
            var l = d[k];
            l.stateTransitionFlags === a && this._runAction(l);
          }
        };
        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 = v;
    })(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 h = this.context.utils;
          if (c) {
            var p = k.split(/[.:\/]/g);
            k = p.pop();
            if ("_root" == p[0] || "" === p[0]) {
              if (null === d.root) {
                return;
              }
              c = a.getAVM1Object(d.root, this.context);
              p.shift();
              "" === p[0] && p.shift();
            } else {
              c = a.getAVM1Object(d._parent, this.context);
            }
            for (;0 < p.length;) {
              var r = p.shift();
              c = h.getProperty(c, r);
              if (!c) {
                return;
              }
            }
          } else {
            c = a.getAVM1Object(d._parent, this.context);
          }
          h.hasProperty(c, k) || h.setProperty(c, k, d.text);
          d.text = "" + h.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, v = 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 = v;
    })(k.Lib || (k.Lib = {}));
  })(d.AVM1 || (d.AVM1 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var k = d.AVM2.AS.flash, v = 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 = v;
    })(k.Lib || (k.Lib = {}));
  })(d.AVM1 || (d.AVM1 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var k = d.Debug.notImplemented, v = Object.prototype.asGetProperty, u = Object.prototype.asSetProperty, t = Object.prototype.asCallProperty, l = Object.prototype.asHasProperty, c = Object.prototype.asHasOwnProperty, h = Object.prototype.asHasTraitProperty, p = Object.prototype.asDeleteProperty, s = function(d) {
        function g() {
        }
        __extends(g, d);
        g.prototype.setTarget = function(a) {
          this._target = a;
        };
        g.prototype._isInternalProperty = function(a, b, c) {
          return!this._target || a || "__proto__" === b || "__constructor__" === b ? !0 : !1;
        };
        g.prototype.asGetProperty = function(a, b, c) {
          return this._isInternalProperty(a, b, c) ? v.call(this, a, b, c) : this._target.asGetPublicProperty(b);
        };
        g.prototype.asGetNumericProperty = function(a) {
          return this._target.asGetNumericProperty(a);
        };
        g.prototype.asSetNumericProperty = function(a, b) {
          return this._target.asSetNumericProperty(a, b);
        };
        g.prototype.asSetProperty = function(a, b, c, d) {
          if (this._isInternalProperty(a, b, c)) {
            u.call(this, a, b, c, d);
          } else {
            return this._target.asSetPublicProperty(b, d);
          }
        };
        g.prototype.asCallProperty = function(a, b, c, d, g) {
          return this._isInternalProperty(a, b, c) ? t.call(this, a, b, c, !1, g) : this._target.asCallPublicProperty(b, g);
        };
        g.prototype.asHasProperty = function(a, b, c) {
          return this._isInternalProperty(a, b, c) ? l.call(this, a, b, c) : this._target.asHasProperty(void 0, b, 0);
        };
        g.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);
        };
        g.prototype.asDeleteProperty = function(a, b, c) {
          if (h.call(this, a, b, c)) {
            return p.call(this, a, b, c);
          }
          k("AVM1Proxy asDeleteProperty");
          return!1;
        };
        g.prototype.asNextName = function(a) {
          k("AVM1Proxy asNextName");
        };
        g.prototype.asNextValue = function(a) {
          k("AVM1Proxy asNextValue");
        };
        g.prototype.asNextNameIndex = function(a) {
          k("AVM1Proxy asNextNameIndex");
        };
        g.prototype.proxyNativeMethod = function(a) {
          this._target.asSetPublicProperty(a, this._target[a].bind(this._target));
        };
        g.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 = g.prototype;
          return e;
        };
        return g;
      }(d.AVM2.AS.ASObject);
      a.AVM1Proxy = s;
    })(k.Lib || (k.Lib = {}));
  })(d.AVM1 || (d.AVM1 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var k = d.AVM2.AS.flash, v = d.AVM2.Runtime.asCoerceString, u = function(d) {
        function l(a, d, l, s, m, g, f, b, e, q, n, t, u) {
          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 = v(a);
          d = +d;
          var p = l._measureTextField;
          p || (p = new k.text.TextField, p.multiline = !0, l._measureTextField = p);
          !isNaN(d) && 0 < d ? (p.width = d + 4, p.wordWrap = !0) : p.wordWrap = !1;
          p.defaultTextFormat = this;
          p.text = a;
          var s = {}, m = p.textWidth, g = p.textHeight;
          s.asSetPublicProperty("width", m);
          s.asSetPublicProperty("height", g);
          s.asSetPublicProperty("textFieldWidth", m + 4);
          s.asSetPublicProperty("textFieldHeight", g + 4);
          p = p.getLineMetrics();
          s.asSetPublicProperty("ascent", p.asGetPublicProperty("ascent"));
          s.asSetPublicProperty("descent", p.asGetPublicProperty("descent"));
          return s;
        };
        return l;
      }(k.text.TextFormat);
      a.AVM1TextFormat = u;
    })(k.Lib || (k.Lib = {}));
  })(d.AVM1 || (d.AVM1 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var r = d.AVM2.AS.flash, v = function(d) {
        function t() {
          d.apply(this, arguments);
        }
        __extends(t, d);
        t.createAVM1Class = function() {
          var d = a.AVM1Proxy.wrap(t, null);
          d.asSetPublicProperty("loadBitmap", t.loadBitmap);
          return d;
        };
        t.loadBitmap = function(a) {
          a = asCoerceString(a);
          return(a = k.AVM1Context.instance.getAsset(a)) && a.symbolProps instanceof r.display.BitmapSymbol ? (a = t.initializeFrom(a), a.class.instanceConstructorNoInitialize.call(a), a) : null;
        };
        return t;
      }(r.display.BitmapData);
      a.AVM1BitmapData = v;
    })(k.Lib || (k.Lib = {}));
  })(d.AVM1 || (d.AVM1 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var k = d.AVM2.AS.flash, v = 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 (h) {
          }
          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 = v;
    })(k.Lib || (k.Lib = {}));
  })(d.AVM1 || (d.AVM1 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var k = d.AVM2.AS.flash, v = function(d) {
        function t(k) {
          d.call(this);
          this._target = a.AVM1Utils.resolveTarget(k);
          this._linkageID = this._channel = this._sound = null;
        }
        __extends(t, d);
        t.createAVM1Class = function() {
          return a.wrapAVM1Class(t, [], "attachSound duration getBytesLoaded getBytesTotal getPan setPan getTransform setTransform getVolume setVolume start stop".split(" "));
        };
        t.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);
        };
        t.prototype.loadSound = function(a, c) {
        };
        t.prototype.getBytesLoaded = function() {
          return 0;
        };
        t.prototype.getBytesTotal = function() {
          return 0;
        };
        t.prototype.getPan = function() {
          var a = this._channel && this._channel.soundTransform;
          return a ? 100 * a.asGetPublicProperty("pan") : 0;
        };
        t.prototype.setPan = function(a) {
          var c = this._channel && this._channel.soundTransform;
          c && (c.asSetPublicProperty("pan", a / 100), this._channel.soundTransform = c);
        };
        t.prototype.getTransform = function() {
          return null;
        };
        t.prototype.setTransform = function(a) {
        };
        t.prototype.getVolume = function() {
          var a = this._channel && this._channel.soundTransform;
          return a ? 100 * a.asGetPublicProperty("volume") : 0;
        };
        t.prototype.setVolume = function(a) {
          var c = this._channel && this._channel.soundTransform;
          c && (c.asSetPublicProperty("volume", a / 100), this._channel.soundTransform = c);
        };
        t.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));
        };
        t.prototype._stopSoundChannel = function() {
          this._channel && (this._channel.stop(), this._channel = null);
        };
        t.prototype.stop = function(a) {
          a && a !== this._linkageID || this._stopSoundChannel();
        };
        return t;
      }(a.AVM1NativeObject);
      a.AVM1Sound = v;
    })(k.Lib || (k.Lib = {}));
  })(d.AVM1 || (d.AVM1 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var k = d.AVM2.AS.flash, v = 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 = v;
    })(k.Lib || (k.Lib = {}));
  })(d.AVM1 || (d.AVM1 = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var k = d.AVM2.AS.flash, v = 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 = v;
    })(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 r = 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 v = d.Metrics.Counter.instance;
    k.frameCounter = new d.Metrics.Counter(!0);
    k.traceLevel = 2;
    k.writer = null;
    k.frameCount = function(a) {
      v.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 u = null, t = null, l = null, c = !0;
    c && "undefined" !== typeof CanvasRenderingContext2D && (u = CanvasGradient.prototype.addColorStop, t = CanvasRenderingContext2D.prototype.createLinearGradient, l = CanvasRenderingContext2D.prototype.createRadialGradient, CanvasRenderingContext2D.prototype.createLinearGradient = function(a, b, c, e) {
      return(new p(a, b, c, e)).createCanvasGradient(this, null);
    }, CanvasRenderingContext2D.prototype.createRadialGradient = function(a, b, c, e, d, f) {
      return(new s(a, b, c, e, d, f)).createCanvasGradient(this, null);
    }, CanvasGradient.prototype.addColorStop = function(a, b) {
      u.call(this, a, b);
      this._template.addColorStop(a, b);
    });
    var h = function() {
      return function(a, b) {
        this.offset = a;
        this.color = b;
      };
    }(), p = function() {
      function b(a, c, e, d) {
        this.x0 = a;
        this.y0 = c;
        this.x1 = e;
        this.y1 = d;
        this.colorStops = [];
      }
      b.prototype.addColorStop = function(a, b) {
        this.colorStops.push(new h(a, b));
      };
      b.prototype.createCanvasGradient = function(b, c) {
        for (var e = t.call(b, this.x0, this.y0, this.x1, this.y1), d = this.colorStops, f = 0;f < d.length;f++) {
          var g = d[f], k = g.offset, g = g.color, g = c ? a(b, g, c) : g;
          u.call(e, k, g);
        }
        e._template = this;
        e._transform = this._transform;
        return e;
      };
      return b;
    }(), s = function() {
      function b(a, c, e, d, f, g) {
        this.x0 = a;
        this.y0 = c;
        this.r0 = e;
        this.x1 = d;
        this.y1 = f;
        this.r1 = g;
        this.colorStops = [];
      }
      b.prototype.addColorStop = function(a, b) {
        this.colorStops.push(new h(a, b));
      };
      b.prototype.createCanvasGradient = function(b, c) {
        for (var e = 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], k = g.offset, g = g.color, g = c ? a(b, g, c) : g;
          u.call(e, k, g);
        }
        e._template = this;
        e._transform = this._transform;
        return e;
      };
      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 g = 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 c = a._commands, e = a._data, d = 0, f = 0;
        b.beginPath();
        for (var g = a._commandPosition;d < g;) {
          switch(c[d++]) {
            case 1:
              b.closePath();
              break;
            case 2:
              b.moveTo(e[f++], e[f++]);
              break;
            case 3:
              b.lineTo(e[f++], e[f++]);
              break;
            case 4:
              b.quadraticCurveTo(e[f++], e[f++], e[f++], e[f++]);
              break;
            case 5:
              b.bezierCurveTo(e[f++], e[f++], e[f++], e[f++], e[f++], e[f++]);
              break;
            case 6:
              b.arcTo(e[f++], e[f++], e[f++], e[f++], e[f++]);
              break;
            case 7:
              b.rect(e[f++], e[f++], e[f++], e[f++]);
              break;
            case 8:
              b.arc(e[f++], e[f++], e[f++], e[f++], e[f++], !!e[f++]);
              break;
            case 9:
              b.save();
              break;
            case 10:
              b.restore();
              break;
            case 11:
              b.transform(e[f++], e[f++], e[f++], e[f++], e[f++], e[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, e, c, d, f) {
        var g = arguments.length;
        this._dataPosition + g >= this._data.length && this._ensureDataCapacity(this._dataPosition + g);
        var k = this._data, h = this._dataPosition;
        k[h] = a;
        k[h + 1] = b;
        2 < g && (k[h + 2] = e, k[h + 3] = c, 4 < g && (k[h + 4] = d, 6 === g && (k[h + 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, e, c) {
        this._writeCommand(4);
        this._writeData(a, b, e, c);
      };
      a.prototype.bezierCurveTo = function(a, b, e, c, d, f) {
        this._writeCommand(5);
        this._writeData(a, b, e, c, d, f);
      };
      a.prototype.arcTo = function(a, b, e, c, d) {
        this._writeCommand(6);
        this._writeData(a, b, e, c, d);
      };
      a.prototype.rect = function(a, b, e, c) {
        this._writeCommand(7);
        this._writeData(a, b, e, c);
      };
      a.prototype.arc = function(a, b, e, c, d, f) {
        this._writeCommand(8);
        this._writeData(a, b, e, c, 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 e = this._commandPosition + a._commandPosition;
        e >= this._commands.length && this._ensureCommandCapacity(e);
        for (var c = this._commands, d = a._commands, f = this._commandPosition, g = 0;f < e;f++) {
          c[f] = d[g++];
        }
        this._commandPosition = e;
        e = this._dataPosition + a._dataPosition;
        e >= this._data.length && this._ensureDataCapacity(e);
        c = this._data;
        d = a._data;
        f = this._dataPosition;
        for (g = 0;f < e;f++) {
          c[f] = d[g++];
        }
        this._dataPosition = e;
        b && this._writeCommand(10);
      };
      a._arrayBufferPool = new d.ArrayBufferPool;
      return a;
    }();
    k.Path = g;
    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 g ? g._apply(a, this) : b = a);
        b ? f.call(this, b) : f.call(this);
      };
      var b = CanvasRenderingContext2D.prototype.stroke;
      CanvasRenderingContext2D.prototype.stroke = function(a, e) {
        arguments.length && (a instanceof g ? g._apply(a, this) : e = a);
        e ? b.call(this, e) : b.call(this);
      };
      var e = CanvasRenderingContext2D.prototype.clip;
      CanvasRenderingContext2D.prototype.clip = function(a, b) {
        arguments.length && (a instanceof g ? g._apply(a, this) : b = a);
        b ? e.call(this, b) : e.call(this);
      };
      window.Path2D = g;
    }
    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 q = CanvasRenderingContext2D.prototype.fill, n = CanvasRenderingContext2D.prototype.stroke;
      CanvasRenderingContext2D.prototype.fill = function(a, b) {
        var e = !!this.fillStyle._transform;
        if ((this.fillStyle instanceof CanvasPattern || this.fillStyle instanceof CanvasGradient) && e && a instanceof Path2D) {
          var e = this.fillStyle._transform, c;
          try {
            c = e.inverse();
          } catch (d) {
            c = e = k.Geometry.Matrix.createIdentitySVGMatrix();
          }
          this.transform(e.a, e.b, e.c, e.d, e.e, e.f);
          e = new Path2D;
          e.addPath(a, c);
          q.call(this, e, b);
          this.transform(c.a, c.b, c.c, c.d, c.e, c.f);
        } else {
          0 === arguments.length ? q.call(this) : 1 === arguments.length ? q.call(this, a) : 2 === arguments.length && q.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 e = this.strokeStyle._transform, b = e.inverse();
          this.transform(e.a, e.b, e.c, e.d, e.e, e.f);
          e = new Path2D;
          e.addPath(a, b);
          var c = this.lineWidth;
          this.lineWidth *= (b.a + b.d) / 2;
          n.call(this, e);
          this.transform(b.a, b.b, b.c, b.d, b.e, b.f);
          this.lineWidth = c;
        } else {
          0 === arguments.length ? n.call(this) : 1 === arguments.length && n.call(this, a);
        }
      };
    }
    "undefined" !== typeof CanvasRenderingContext2D && function() {
      function a() {
        return k.Geometry.Matrix.createSVGMatrixFromArray(this.mozCurrentTransform);
      }
      CanvasRenderingContext2D.prototype.flashStroke = function(a, b) {
        var e = this.currentTransform;
        if (e) {
          var c = new Path2D;
          c.addPath(a, e);
          var f = this.lineWidth;
          this.setTransform(1, 0, 0, 1, 0, 0);
          switch(b) {
            case 1:
              this.lineWidth = r(f * (d.getScaleX(e) + d.getScaleY(e)) / 2, 1, 1024);
              break;
            case 2:
              this.lineWidth = r(f * d.getScaleY(e), 1, 1024);
              break;
            case 3:
              this.lineWidth = r(f * d.getScaleX(e), 1, 1024);
          }
          this.stroke(c);
          this.setTransform(e.a, e.b, e.c, e.d, e.e, e.f);
          this.lineWidth = f;
        } else {
          this.stroke(a);
        }
      };
      !("currentTransform" in CanvasRenderingContext2D.prototype) && "mozCurrentTransform" in CanvasRenderingContext2D.prototype && Object.defineProperty(CanvasRenderingContext2D.prototype, "currentTransform", {get:a});
    }();
    if ("undefined" !== typeof CanvasRenderingContext2D && void 0 === CanvasRenderingContext2D.prototype.globalColorMatrix) {
      var x = CanvasRenderingContext2D.prototype.fill, L = CanvasRenderingContext2D.prototype.stroke, A = CanvasRenderingContext2D.prototype.fillText, H = 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, e) {
        var c = null;
        this._globalColorMatrix && (c = this.fillStyle, this.fillStyle = a(this, this.fillStyle, this._globalColorMatrix));
        0 === arguments.length ? x.call(this) : 1 === arguments.length ? x.call(this, b) : 2 === arguments.length && x.call(this, b, e);
        c && (this.fillStyle = c);
      };
      CanvasRenderingContext2D.prototype.stroke = function(b, e) {
        var c = null;
        this._globalColorMatrix && (c = this.strokeStyle, this.strokeStyle = a(this, this.strokeStyle, this._globalColorMatrix));
        0 === arguments.length ? L.call(this) : 1 === arguments.length && L.call(this, b);
        c && (this.strokeStyle = c);
      };
      CanvasRenderingContext2D.prototype.fillText = function(b, e, c, f) {
        var g = null;
        this._globalColorMatrix && (g = this.fillStyle, this.fillStyle = a(this, this.fillStyle, this._globalColorMatrix));
        3 === arguments.length ? A.call(this, b, e, c) : 4 === arguments.length ? A.call(this, b, e, c, f) : d.Debug.unexpected();
        g && (this.fillStyle = g);
      };
      CanvasRenderingContext2D.prototype.strokeText = function(b, e, c, f) {
        var g = null;
        this._globalColorMatrix && (g = this.strokeStyle, this.strokeStyle = a(this, this.strokeStyle, this._globalColorMatrix));
        3 === arguments.length ? H.call(this, b, e, c) : 4 === arguments.length ? H.call(this, b, e, c, 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_742 = Shumway || (Shumway = {}), GFX$$inline_743 = Shumway$$inline_742.GFX || (Shumway$$inline_742.GFX = {}), Option$$inline_744 = Shumway$$inline_742.Options.Option, OptionSet$$inline_745 = Shumway$$inline_742.Options.OptionSet, shumwayOptions$$inline_746 = Shumway$$inline_742.Settings.shumwayOptions, rendererOptions$$inline_747 = shumwayOptions$$inline_746.register(new OptionSet$$inline_745("Renderer Options"));
GFX$$inline_743.imageUpdateOption = rendererOptions$$inline_747.register(new Option$$inline_744("", "imageUpdate", "boolean", !0, "Enable image updating."));
GFX$$inline_743.imageConvertOption = rendererOptions$$inline_747.register(new Option$$inline_744("", "imageConvert", "boolean", !0, "Enable image conversion."));
GFX$$inline_743.stageOptions = shumwayOptions$$inline_746.register(new OptionSet$$inline_745("Stage Renderer Options"));
GFX$$inline_743.forcePaint = GFX$$inline_743.stageOptions.register(new Option$$inline_744("", "forcePaint", "boolean", !1, "Force repainting."));
GFX$$inline_743.ignoreViewport = GFX$$inline_743.stageOptions.register(new Option$$inline_744("", "ignoreViewport", "boolean", !1, "Cull elements outside of the viewport."));
GFX$$inline_743.viewportLoupeDiameter = GFX$$inline_743.stageOptions.register(new Option$$inline_744("", "viewportLoupeDiameter", "number", 256, "Size of the viewport loupe.", {range:{min:1, max:1024, step:1}}));
GFX$$inline_743.disableClipping = GFX$$inline_743.stageOptions.register(new Option$$inline_744("", "disableClipping", "boolean", !1, "Disable clipping."));
GFX$$inline_743.debugClipping = GFX$$inline_743.stageOptions.register(new Option$$inline_744("", "debugClipping", "boolean", !1, "Disable clipping."));
GFX$$inline_743.hud = GFX$$inline_743.stageOptions.register(new Option$$inline_744("", "hud", "boolean", !1, "Enable HUD."));
var webGLOptions$$inline_748 = GFX$$inline_743.stageOptions.register(new OptionSet$$inline_745("WebGL Options"));
GFX$$inline_743.perspectiveCamera = webGLOptions$$inline_748.register(new Option$$inline_744("", "pc", "boolean", !1, "Use perspective camera."));
GFX$$inline_743.perspectiveCameraFOV = webGLOptions$$inline_748.register(new Option$$inline_744("", "pcFOV", "number", 60, "Perspective Camera FOV."));
GFX$$inline_743.perspectiveCameraDistance = webGLOptions$$inline_748.register(new Option$$inline_744("", "pcDistance", "number", 2, "Perspective Camera Distance."));
GFX$$inline_743.perspectiveCameraAngle = webGLOptions$$inline_748.register(new Option$$inline_744("", "pcAngle", "number", 0, "Perspective Camera Angle."));
GFX$$inline_743.perspectiveCameraAngleRotate = webGLOptions$$inline_748.register(new Option$$inline_744("", "pcRotate", "boolean", !1, "Rotate Use perspective camera."));
GFX$$inline_743.perspectiveCameraSpacing = webGLOptions$$inline_748.register(new Option$$inline_744("", "pcSpacing", "number", .01, "Element Spacing."));
GFX$$inline_743.perspectiveCameraSpacingInflate = webGLOptions$$inline_748.register(new Option$$inline_744("", "pcInflate", "boolean", !1, "Rotate Use perspective camera."));
GFX$$inline_743.drawTiles = webGLOptions$$inline_748.register(new Option$$inline_744("", "drawTiles", "boolean", !1, "Draw WebGL Tiles"));
GFX$$inline_743.drawSurfaces = webGLOptions$$inline_748.register(new Option$$inline_744("", "drawSurfaces", "boolean", !1, "Draw WebGL Surfaces."));
GFX$$inline_743.drawSurface = webGLOptions$$inline_748.register(new Option$$inline_744("", "drawSurface", "number", -1, "Draw WebGL Surface #"));
GFX$$inline_743.drawElements = webGLOptions$$inline_748.register(new Option$$inline_744("", "drawElements", "boolean", !0, "Actually call gl.drawElements. This is useful to test if the GPU is the bottleneck."));
GFX$$inline_743.disableSurfaceUploads = webGLOptions$$inline_748.register(new Option$$inline_744("", "disableSurfaceUploads", "boolean", !1, "Disable surface uploads."));
GFX$$inline_743.premultipliedAlpha = webGLOptions$$inline_748.register(new Option$$inline_744("", "premultipliedAlpha", "boolean", !1, "Set the premultipliedAlpha flag on getContext()."));
GFX$$inline_743.unpackPremultiplyAlpha = webGLOptions$$inline_748.register(new Option$$inline_744("", "unpackPremultiplyAlpha", "boolean", !0, "Use UNPACK_PREMULTIPLY_ALPHA_WEBGL in pixelStorei."));
var factorChoices$$inline_749 = {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_743.sourceBlendFactor = webGLOptions$$inline_748.register(new Option$$inline_744("", "sourceBlendFactor", "number", factorChoices$$inline_749.ONE, "", {choices:factorChoices$$inline_749}));
GFX$$inline_743.destinationBlendFactor = webGLOptions$$inline_748.register(new Option$$inline_744("", "destinationBlendFactor", "number", factorChoices$$inline_749.ONE_MINUS_SRC_ALPHA, "", {choices:factorChoices$$inline_749}));
var canvas2DOptions$$inline_750 = GFX$$inline_743.stageOptions.register(new OptionSet$$inline_745("Canvas2D Options"));
GFX$$inline_743.clipDirtyRegions = canvas2DOptions$$inline_750.register(new Option$$inline_744("", "clipDirtyRegions", "boolean", !1, "Clip dirty regions."));
GFX$$inline_743.clipCanvas = canvas2DOptions$$inline_750.register(new Option$$inline_744("", "clipCanvas", "boolean", !1, "Clip Regions."));
GFX$$inline_743.cull = canvas2DOptions$$inline_750.register(new Option$$inline_744("", "cull", "boolean", !1, "Enable culling."));
GFX$$inline_743.snapToDevicePixels = canvas2DOptions$$inline_750.register(new Option$$inline_744("", "snapToDevicePixels", "boolean", !1, ""));
GFX$$inline_743.imageSmoothing = canvas2DOptions$$inline_750.register(new Option$$inline_744("", "imageSmoothing", "boolean", !1, ""));
GFX$$inline_743.masking = canvas2DOptions$$inline_750.register(new Option$$inline_744("", "masking", "boolean", !0, "Composite Mask."));
GFX$$inline_743.blending = canvas2DOptions$$inline_750.register(new Option$$inline_744("", "blending", "boolean", !0, ""));
GFX$$inline_743.debugLayers = canvas2DOptions$$inline_750.register(new Option$$inline_744("", "debugLayers", "boolean", !1, ""));
GFX$$inline_743.filters = canvas2DOptions$$inline_750.register(new Option$$inline_744("", "filters", "boolean", !1, ""));
GFX$$inline_743.cacheShapes = canvas2DOptions$$inline_750.register(new Option$$inline_744("", "cacheShapes", "boolean", !0, ""));
GFX$$inline_743.cacheShapesMaxSize = canvas2DOptions$$inline_750.register(new Option$$inline_744("", "cacheShapesMaxSize", "number", 256, "", {range:{min:1, max:1024, step:1}}));
GFX$$inline_743.cacheShapesThreshold = canvas2DOptions$$inline_750.register(new Option$$inline_744("", "cacheShapesThreshold", "number", 256, "", {range:{min:1, max:1024, step:1}}));
(function(d) {
  (function(k) {
    (function(a) {
      function r(a, e, c, d) {
        var f = 1 - d;
        return a * f * f + 2 * e * f * d + c * d * d;
      }
      function v(a, e, c, d, f) {
        var g = f * f, k = 1 - f, h = k * k;
        return a * k * h + 3 * e * f * h + 3 * c * k * g + d * f * g;
      }
      var u = d.NumberUtilities.clamp, t = 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 = r;
      a.quadraticBezierExtreme = function(a, e, c) {
        var d = (a - e) / (a - 2 * e + c);
        return 0 > d ? a : 1 < d ? c : r(a, e, c, d);
      };
      a.cubicBezier = v;
      a.cubicBezierExtremes = function(a, e, c, d) {
        var f = e - a, g;
        g = 2 * (c - e);
        var k = d - c;
        f + k === g && (k *= 1.0001);
        var h = 2 * f - g, l = g - 2 * f, l = Math.sqrt(l * l - 4 * f * (f - g + k));
        g = 2 * (f - g + k);
        f = (h + l) / g;
        h = (h - l) / g;
        l = [];
        0 <= f && 1 >= f && l.push(v(a, e, c, d, f));
        0 <= h && 1 >= h && l.push(v(a, e, c, d, h));
        return l;
      };
      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 h = 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 = h;
      var p = 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 = p;
      var s = 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, k = a[f].y;
            b.x = Math.min(b.x, g);
            b.y = Math.min(b.y, k);
            d.x = Math.max(d.x, g);
            d.y = Math.max(d.y, k);
          }
          return new p(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 = s;
      (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, k, h) {
          this._data = new Float64Array(6);
          this._type = 0;
          this.setElements(c, d, f, g, k, h);
          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.prototype.setElements = function(a, b, c, d, f, g) {
          var k = this._data;
          k[0] = a;
          k[1] = b;
          k[2] = c;
          k[3] = d;
          k[4] = f;
          k[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 k = this._data, h = k[0], l = k[1], m = k[2], p = k[3], r = k[4], s = k[5];
          k[0] = h * a + m * b;
          k[1] = l * a + p * b;
          k[2] = h * c + m * d;
          k[3] = l * c + p * d;
          k[4] = h * f + m * g + r;
          k[5] = l * f + p * g + s;
          this._type = 0;
          return this;
        };
        a.prototype.transformRectangle = function(a, b) {
          var c = this._data, d = c[0], f = c[1], g = c[2], k = c[3], h = c[4], c = c[5], l = a.x, m = a.y, p = a.w, r = a.h;
          b[0].x = d * l + g * m + h;
          b[0].y = f * l + k * m + c;
          b[1].x = d * (l + p) + g * m + h;
          b[1].y = f * (l + p) + k * m + c;
          b[2].x = d * (l + p) + g * (m + r) + h;
          b[2].y = f * (l + p) + k * (m + r) + c;
          b[3].x = d * l + g * (m + r) + h;
          b[3].y = f * l + k * (m + r) + 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], k = b[4], h = b[5], l = a.x, m = a.y, p = a.w, r = a.h, b = c * l + f * m + k, s = d * l + g * m + h, t = c * (l + p) + f * m + k, u = d * (l + p) + g * m + h, v = c * (l + p) + f * (m + r) + k, p = d * (l + p) + g * (m + r) + h, c = c * l + f * (m + r) + k, d = d * l + g * (m + r) + h, g = 0;
              b > t && (g = b, b = t, t = g);
              v > c && (g = v, v = c, c = g);
              a.x = b < v ? b : v;
              a.w = (t > c ? t : c) - a.x;
              s > u && (g = s, s = u, u = g);
              p > d && (g = p, p = d, d = g);
              a.y = s < p ? s : p;
              a.h = (u > d ? u : 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], k = b[4], h = 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 * k - a * h;
          b[5] = a * k + l * h;
          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], k = b[4] * a[0] + a[4], h = 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], k += b[5] * a[2], h += b[4] * a[1];
          }
          b[0] = c;
          b[1] = d;
          b[2] = f;
          b[3] = g;
          b[4] = k;
          b[5] = h;
          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], k = c[4] * b[0] + b[4], h = 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], k += c[5] * b[2], h += c[4] * b[1];
              }
              b[0] = a;
              b[1] = d;
              b[2] = f;
              b[3] = g;
              b[4] = k;
              b[5] = h;
              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], k = b[5];
              if (0 === d && 0 === f) {
                var h = c[0] = 1 / b[0], b = c[3] = 1 / b[3];
                c[1] = 0;
                c[2] = 0;
                c[4] = -h * g;
                c[5] = -b * k;
              } else {
                var h = b[0], b = b[3], l = h * 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] = h * l;
                c[4] = -(c[0] * g + f * k);
                c[5] = -(d * g + b * k);
              }
              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._svg.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._svg.createSVGMatrix();
        };
        a.createSVGMatrixFromArray = function(c) {
          var d = a._svg.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._svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
        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, g = 0;4 > g;g++) {
              c[d] += b[f + g] * a[g];
            }
          }
          return new h(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 k = 1 / (f - g);
          return new a([c / d, 0, 0, 0, 0, c, 0, 0, 0, 0, (f + g) * k, -1, 0, 0, f * g * k * 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, k = f[0], h = f[1], l = f[2], m = f[3], p = f[4], r = f[5], s = f[6], t = f[7], u = f[8], v = f[9], y = f[10], z = f[11], G = f[12], C = f[13], I = f[14], f = f[15], P = g[0], T = g[1], O = g[2], Q = g[3], S = g[4], V = g[5], aa = g[6], $ = g[7], w = g[8], U = g[9], ba = g[10], R = g[11], N = g[12], Z = g[13], fa = g[14], g = g[15];
          return new a([k * P + h * S + l * w + m * N, k * T + h * V + l * U + m * Z, k * O + h * aa + l * ba + m * fa, k * Q + h * $ + l * R + m * g, p * P + r * S + s * w + t * N, p * T + r * V + s * U + t * Z, p * O + r * aa + s * ba + t * fa, p * Q + r * $ + s * R + t * g, u * P + v * S + y * w + z * N, u * T + v * V + y * U + z * Z, u * O + v * aa + y * ba + z * fa, u * Q + v * $ + y * R + z * g, G * P + C * S + I * w + f * N, G * T + C * V + I * U + f * Z, G * O + C * aa + I * ba + f * fa, 
          G * Q + C * $ + I * R + f * g]);
        };
        a.createInverse = function(c) {
          var d = c._m;
          c = d[0];
          var f = d[1], g = d[2], k = d[3], h = d[4], l = d[5], m = d[6], p = d[7], r = d[8], s = d[9], t = d[10], u = d[11], v = d[12], y = d[13], z = d[14], d = d[15], G = t * d, C = z * u, I = m * d, P = z * p, T = m * u, O = t * p, Q = g * d, S = z * k, V = g * u, aa = t * k, $ = g * p, w = m * k, U = r * y, ba = v * s, R = h * y, N = v * l, Z = h * s, fa = r * l, X = c * y, ia = v * f, ga = c * s, ca = r * f, da = c * l, ea = h * f, W = G * l + P * s + T * y - (C * l + I * s + O * y), ka = C * 
          f + Q * s + aa * y - (G * f + S * s + V * y), y = I * f + S * l + $ * y - (P * f + Q * l + w * y), f = O * f + V * l + w * s - (T * f + aa * l + $ * s), l = 1 / (c * W + h * ka + r * y + v * f);
          return new a([l * W, l * ka, l * y, l * f, l * (C * h + I * r + O * v - (G * h + P * r + T * v)), l * (G * c + S * r + V * v - (C * c + Q * r + aa * v)), l * (P * c + Q * h + w * v - (I * c + S * h + $ * v)), l * (T * c + aa * h + $ * r - (O * c + V * h + w * r)), l * (U * p + N * u + Z * d - (ba * p + R * u + fa * d)), l * (ba * k + X * u + ca * d - (U * k + ia * u + ga * d)), l * (R * k + ia * p + da * d - (N * k + X * p + ea * d)), l * (fa * k + ga * p + ea * u - (Z * k + ca * p + da * 
          u)), l * (R * t + fa * z + ba * m - (Z * z + U * m + N * t)), l * (ga * z + U * g + ia * t - (X * t + ca * z + ba * g)), l * (X * m + ea * z + N * g - (da * z + R * g + ia * m)), l * (da * t + Z * g + ca * m - (ga * m + ea * t + fa * 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 p(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 p(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, k = 0;k < f;k++) {
                for (var h = 0;h < g;h++) {
                  d = this.grid[c + h][b + k], 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 = p.createEmpty();
        return a;
      }();
      a.DirtyRegion = m;
      (function(a) {
        var c = function() {
          function a(b) {
            this.region = b;
            this.bounds = p.createEmpty();
          }
          a.prototype.clear = function() {
            this.bounds.setEmpty();
          };
          return a;
        }();
        a.Cell = c;
      })(m = a.DirtyRegion || (a.DirtyRegion = {}));
      var g = function() {
        function a(b, c, d, f, g, k) {
          this.index = b;
          this.x = c;
          this.y = d;
          this.scale = k;
          this.bounds = new p(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 s(a.corners);
        };
        a.corners = c.createEmptyPoints(4);
        return a;
      }();
      a.Tile = g;
      var f = function() {
        function a(b, c, d, f, k) {
          this.tileW = d;
          this.tileH = f;
          this.scale = k;
          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 h = 0;h < this.columns;h++) {
              this.tiles.push(new g(b++, h, c, d, f, k));
            }
          }
        }
        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 p(0, 0, this.w, this.h);
          f && (g = new s(a._points));
          c.intersect(s.getBounds(a._points));
          if (c.isEmpty()) {
            return[];
          }
          var k = c.x / this.tileW | 0;
          d = c.y / this.tileH | 0;
          var h = Math.ceil((c.x + c.w) / this.tileW) | 0, l = Math.ceil((c.y + c.h) / this.tileH) | 0, k = u(k, 0, this.columns), h = u(h, 0, this.columns);
          d = u(d, 0, this.rows);
          for (var l = u(l, 0, this.rows), m = [];k < h;k++) {
            for (var r = d;r < l;r++) {
              var t = this.tiles[r * this.columns + k];
              t.bounds.intersects(c) && (f ? t.getOBB().intersects(g) : 1) && m.push(t);
            }
          }
          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 = u(e, 0, b.rows), d = u(d + 1, 0, b.rows);e < d;e++) {
                a.push(b.tiles[e * b.columns + c]);
              }
            }
          }
          var k = a._points;
          d.transformRectangle(c, k);
          for (var h = k[0].x < k[1].x ? 0 : 1, l = k[2].x < k[3].x ? 2 : 3, l = k[h].x < k[l].x ? h : l, h = [], m = 0;5 > m;m++, l++) {
            h.push(k[l % 4]);
          }
          (h[1].x - h[0].x) * (h[3].y - h[0].y) < (h[1].y - h[0].y) * (h[3].x - h[0].x) && (k = h[1], h[1] = h[3], h[3] = k);
          var k = [], p, r, l = Math.floor(h[0].x / this.tileW), m = (l + 1) * this.tileW;
          if (h[2].x < m) {
            p = Math.min(h[0].y, h[1].y, h[2].y, h[3].y);
            r = Math.max(h[0].y, h[1].y, h[2].y, h[3].y);
            var s = Math.floor(p / this.tileH), t = Math.floor(r / this.tileH);
            g(k, this, l, s, t);
            return k;
          }
          var v = 0, E = 4, y = !1;
          if (h[0].x === h[1].x || h[0].x === h[3].x) {
            h[0].x === h[1].x ? (y = !0, v++) : E--, p = f(m, h[v], h[v + 1]), r = f(m, h[E], h[E - 1]), s = Math.floor(h[v].y / this.tileH), t = Math.floor(h[E].y / this.tileH), g(k, this, l, s, t), l++;
          }
          do {
            var z, G, C, I;
            h[v + 1].x < m ? (z = h[v + 1].y, C = !0) : (z = f(m, h[v], h[v + 1]), C = !1);
            h[E - 1].x < m ? (G = h[E - 1].y, I = !0) : (G = f(m, h[E], h[E - 1]), I = !1);
            s = Math.floor((h[v].y < h[v + 1].y ? p : z) / this.tileH);
            t = Math.floor((h[E].y > h[E - 1].y ? r : G) / this.tileH);
            g(k, this, l, s, t);
            if (C && y) {
              break;
            }
            C ? (y = !0, v++, p = f(m, h[v], h[v + 1])) : p = z;
            I ? (E--, r = f(m, h[E], h[E - 1])) : r = G;
            l++;
            m = (l + 1) * this.tileW;
          } while (v < E);
          return k;
        };
        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 = u(Math.round(Math.log(1 / d) / Math.LN2), -5, 3));
          d = t(g);
          if (this._source.hasFlags(1048576)) {
            for (;;) {
              d = t(g);
              if (c.contains(this._source.getBounds().getAbsoluteBounds().clone().scale(d, d))) {
                break;
              }
              g--;
            }
          }
          this._source.hasFlags(2097152) || (g = u(g, -5, 0));
          d = t(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 p(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 = p.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], p = m.bounds.clone();
            p.x -= g.x;
            p.y -= g.y;
            d.contains(p) || (h || (h = []), h.push(m));
            m.cachedSurfaceRegion = c(m.cachedSurfaceRegion, a, p);
          }
          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 r in k) {
    k.hasOwnProperty(r) && (d[r] = k[r]);
  }
  a.prototype = k.prototype;
  d.prototype = new a;
};
(function(d) {
  (function(k) {
    var a = d.IntegerUtilities.roundToMultipleOfPowerOfTwo, r = k.Geometry.Rectangle;
    (function(d) {
      var u = function(a) {
        function c() {
          a.apply(this, arguments);
        }
        __extends(c, a);
        return c;
      }(k.Geometry.Rectangle);
      d.Region = u;
      var t = 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 = t;
      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 > t.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, t.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 h((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 h = 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 = h;
      var p = function() {
        return function(a, c, d) {
          this.size = a;
          this.region = c;
          this.allocator = d;
        };
      }(), s = 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 = s;
      u = 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, h, k = this._buckets;
          do {
            for (var l = 0;l < k.length && !(k[l].size >= b && (h = k[l], e = h.allocator.allocate(d, f)));l++) {
            }
            if (!e) {
              var m = this._h - this._filled;
              if (m < f) {
                return null;
              }
              var l = a(b, 8), t = 2 * l;
              t > m && (t = m);
              if (t < l) {
                return null;
              }
              m = new r(0, this._filled, this._w, t);
              this._buckets.push(new p(l, m, new c(m.w, m.h, l, l)));
              this._filled += t;
            }
          } while (!e);
          return new s(h.region.x + e.x, h.region.y + e.y, e.w, e.h, e);
        };
        d.prototype.free = function(a) {
          a.region.allocator.free(a.region);
        };
        return d;
      }();
      d.BucketAllocator = u;
    })(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 r = this._surfaces[k];
            if (r !== d && (r = r.allocate(a, c))) {
              return r;
            }
          }
          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, r = k.Geometry.Matrix, v = 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 u = 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 t = 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";
    })(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(), d = 0;d < c.length;d++) {
          c[d].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 h = function() {
      return function() {
      };
    }();
    k.State = h;
    var p = function(a) {
      function b() {
        a.call(this);
        this.matrix = r.createIdentity();
      }
      __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;
    }(h);
    k.MatrixState = p;
    var s = 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 p;
        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 d = 0;d < c.length;d++) {
          var e = c[d], f = b.transform(e.getTransform());
          e.visit(this, f);
          f.free();
        }
      };
      b.prototype.visitNode = function(a, b) {
        a.hasFlags(16) && (this.isDirty = !0);
        a.toggleFlags();
      };
      return b;
    }(c);
    k.DirtyNodeVisitor = s;
    h = 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 d = 0;d < c.length;d++) {
          c[d].visit(this, b);
        }
        this.writer.outdent();
      };
      b.prototype.visitStage = function(a, b) {
        this.visitGroup(a, b);
      };
      return b;
    }(c);
    k.TracingNodeVisitor = h;
    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() {
        if (this._eventListeners) {
          for (var a = this._eventListeners, b = 0;b < a.length;b++) {
            var c = a[b];
            1 === c.type && c.listener(this, 1);
          }
        }
      };
      c.prototype.addEventListener = function(a, b) {
        this._eventListeners || (this._eventListeners = []);
        this._eventListeners.push({type:a, listener:b});
      };
      Object.defineProperty(c.prototype, "properties", {get:function() {
        return this._properties || (this._properties = {});
      }, enumerable:!0, configurable:!0});
      c.prototype.reset = function() {
        this._flags = t.Default;
        this._properties = this._transform = this._layer = this._bounds = null;
      };
      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(t.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 g = 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(t.UpOnAddedOrRemoved);
        a._propagateFlagsDown(t.DownOnAddedOrRemoved);
      };
      c.prototype.removeChildAt = function(a) {
        var b = this._children[a];
        this._children.splice(a, 1);
        b._index = -1;
        b._parent = null;
        this._propagateFlagsUp(t.UpOnAddedOrRemoved);
        b._propagateFlagsDown(t.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(t.DownOnAddedOrRemoved));
        }
        this._children.length = 0;
        this._propagateFlagsUp(t.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 d = this._children, e = a.allocate(), f = 0;f < d.length;f++) {
            var g = d[f];
            e.set(g.getBounds());
            g.getTransformMatrix().transformRectangleAABB(e);
            c.union(e);
          }
          e.free();
          this.removeFlags(256);
        }
        return b ? c.clone() : c;
      };
      return c;
    }(m);
    k.Group = g;
    var f = function() {
      function a(b) {
        this._node = b;
        this._matrix = r.createIdentity();
        this._colorMatrix = k.ColorMatrix.createIdentity();
        this._concatenatedMatrix = r.createIdentity();
        this._invertedConcatenatedMatrix = r.createIdentity();
        this._concatenatedColorMatrix = k.ColorMatrix.createIdentity();
      }
      a.prototype.setMatrix = function(a) {
        this._matrix.isEqual(a) || (this._matrix.set(a), this._node._propagateFlagsUp(t.UpOnMoved), this._node._propagateFlagsDown(t.DownOnMoved));
      };
      a.prototype.setColorMatrix = function(a) {
        this._colorMatrix.set(a);
        this._node._propagateFlagsUp(t.UpOnColorMatrixChanged);
        this._node._propagateFlagsDown(t.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), d = b ? b.getTransform()._concatenatedMatrix.clone() : r.createIdentity(), e = c.length - 1;0 <= e;e--) {
            var b = c[e], f = b.getTransform();
            d.preMultiply(f._matrix);
            f._concatenatedMatrix.set(d);
            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 u[this._blendMode];
      };
      return a;
    }();
    k.Layer = b;
    h = 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 = h;
    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, h) {
        void 0 === h && (h = !1);
        b.call(this);
        this._dirtyVisitor = new s;
        this._flags &= -3;
        this._type = 13;
        this._scaleMode = c.DEFAULT_SCALE;
        this._align = c.DEFAULT_ALIGN;
        this._content = new g;
        this._content._flags &= -3;
        this.addChild(this._content);
        this.setFlags(16);
        this.setBounds(new a(0, 0, d, f));
        h ? (this._dirtyRegion = new v(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();
        this._dirtyRegion && (this._dirtyRegion = new v(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._dirtyVisitor.isDirty = !1;
        this._dirtyVisitor.start(this, this._dirtyRegion);
        return this._dirtyVisitor.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 r(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 r(d, 0, 0, e, f, a));
        }
      };
      c.DEFAULT_SCALE = 4;
      c.DEFAULT_ALIGN = 5;
      return c;
    }(g);
    k.Stage = c;
  })(d.GFX || (d.GFX = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    function a(a, c, d) {
      return a + (c - a) * d;
    }
    function r(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 v = k.Geometry.Point, u = k.Geometry.Rectangle, t = 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);
      c.prototype.addParent = function(a) {
        l(this._parents, a);
        this._parents.push(a);
      };
      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 h = function(a) {
      function c(d, e) {
        a.call(this);
        this.setBounds(d);
        this.render = e;
      }
      __extends(c, a);
      return c;
    }(c);
    k.CustomRenderable = h;
    (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 = {}));
    h = 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 u(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);
        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._video.play();
        this._state = 2;
      };
      c.prototype.pause = function() {
        this._video.pause();
        this._state = 3;
      };
      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":
            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;
            1 < this._state && 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++) {
          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 = h;
    h = 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 u(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 = h;
    (function(a) {
      a[a.Fill = 0] = "Fill";
      a[a.Stroke = 1] = "Stroke";
      a[a.StrokeFill = 2] = "StrokeFill";
    })(k.PathType || (k.PathType = {}));
    var p = 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 = p;
    var s = 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 = s;
    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 = !1);
        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 ? a.clip(f.path, "evenodd") : (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, p, r, t = !1, u = 0, v = 0, E = a.commands, y = a.coordinates, z = a.styles, G = z.position = 0;
        a = a.commandsPosition;
        for (var C = 0;C < a;C++) {
          switch(E[C]) {
            case 9:
              t && g && (g.lineTo(u, v), h && h.lineTo(u, v));
              t = !0;
              l = u = y[G++] / 20;
              m = v = y[G++] / 20;
              g && g.moveTo(l, m);
              h && h.moveTo(l, m);
              break;
            case 10:
              l = y[G++] / 20;
              m = y[G++] / 20;
              g && g.lineTo(l, m);
              h && h.lineTo(l, m);
              break;
            case 11:
              p = y[G++] / 20;
              r = y[G++] / 20;
              l = y[G++] / 20;
              m = y[G++] / 20;
              g && g.quadraticCurveTo(p, r, l, m);
              h && h.quadraticCurveTo(p, r, l, m);
              break;
            case 12:
              p = y[G++] / 20;
              r = y[G++] / 20;
              var I = y[G++] / 20, P = y[G++] / 20, l = y[G++] / 20, m = y[G++] / 20;
              g && g.bezierCurveTo(p, r, I, P, l, m);
              h && h.bezierCurveTo(p, r, I, P, l, m);
              break;
            case 1:
              g = this._createPath(0, d.ColorUtilities.rgbaToCSSStyle(z.readUnsignedInt()), !1, null, l, m);
              break;
            case 3:
              p = this._readBitmap(z, b);
              g = this._createPath(0, p.style, p.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;
              p = z.readByte();
              r = c.LINE_CAPS_STYLES[z.readByte()];
              I = c.LINE_JOINTS_STYLES[z.readByte()];
              p = new s(y[G++] / 20, p, r, I, z.readByte());
              h = this._createPath(1, h, !1, p, l, m);
              break;
            case 6:
              h = this._createPath(2, this._readGradient(z, b), !1, null, l, m);
              break;
            case 7:
              p = this._readBitmap(z, b);
              h = this._createPath(2, p.style, p.smoothImage, null, l, m);
              break;
            case 8:
              h = null;
          }
        }
        t && g && (g.lineTo(u, v), h && h.lineTo(u, v));
        this._pathData = null;
        k.leaveTimeline("RenderableShape.deserializePaths");
        return f;
      };
      c.prototype._createPath = function(a, b, c, d, e, f) {
        a = new p(a, b, c, d);
        this._paths.push(a);
        a.path.moveTo(e, f);
        return a.path;
      };
      c.prototype._readMatrix = function(a) {
        return new t(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;
    h = 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, p = 0, t, u, v = !1, B = 0, E = 0, y = b.commands, z = b.coordinates, G = b.morphCoordinates, C = b.styles, I = b.morphStyles;
        C.position = 0;
        var P = I.position = 0;
        b = b.commandsPosition;
        for (var T = 0;T < b;T++) {
          switch(y[T]) {
            case 9:
              v && g && (g.lineTo(B, E), h && h.lineTo(B, E));
              v = !0;
              l = B = a(z[P], G[P++], e) / 20;
              p = E = a(z[P], G[P++], e) / 20;
              g && g.moveTo(l, p);
              h && h.moveTo(l, p);
              break;
            case 10:
              l = a(z[P], G[P++], e) / 20;
              p = a(z[P], G[P++], e) / 20;
              g && g.lineTo(l, p);
              h && h.lineTo(l, p);
              break;
            case 11:
              t = a(z[P], G[P++], e) / 20;
              u = a(z[P], G[P++], e) / 20;
              l = a(z[P], G[P++], e) / 20;
              p = a(z[P], G[P++], e) / 20;
              g && g.quadraticCurveTo(t, u, l, p);
              h && h.quadraticCurveTo(t, u, l, p);
              break;
            case 12:
              t = a(z[P], G[P++], e) / 20;
              u = a(z[P], G[P++], e) / 20;
              var O = a(z[P], G[P++], e) / 20, Q = a(z[P], G[P++], e) / 20, l = a(z[P], G[P++], e) / 20, p = a(z[P], G[P++], e) / 20;
              g && g.bezierCurveTo(t, u, O, Q, l, p);
              h && h.bezierCurveTo(t, u, O, Q, l, p);
              break;
            case 1:
              g = this._createMorphPath(0, e, d.ColorUtilities.rgbaToCSSStyle(r(C.readUnsignedInt(), I.readUnsignedInt(), e)), !1, null, l, p);
              break;
            case 3:
              t = this._readMorphBitmap(C, I, e, c);
              g = this._createMorphPath(0, e, t.style, t.smoothImage, null, l, p);
              break;
            case 2:
              t = this._readMorphGradient(C, I, e, c);
              g = this._createMorphPath(0, e, t, !1, null, l, p);
              break;
            case 4:
              g = null;
              break;
            case 5:
              t = a(z[P], G[P++], e) / 20;
              h = d.ColorUtilities.rgbaToCSSStyle(r(C.readUnsignedInt(), I.readUnsignedInt(), e));
              C.position += 1;
              u = C.readByte();
              O = m.LINE_CAPS_STYLES[C.readByte()];
              Q = m.LINE_JOINTS_STYLES[C.readByte()];
              t = new s(t, u, O, Q, C.readByte());
              h = this._createMorphPath(1, e, h, !1, t, l, p);
              break;
            case 6:
              t = this._readMorphGradient(C, I, e, c);
              h = this._createMorphPath(2, e, t, !1, null, l, p);
              break;
            case 7:
              t = this._readMorphBitmap(C, I, e, c);
              h = this._createMorphPath(2, e, t.style, t.smoothImage, null, l, p);
              break;
            case 8:
              h = null;
          }
        }
        v && g && (g.lineTo(B, E), h && h.lineTo(B, E));
        k.leaveTimeline("RenderableMorphShape.deserializPaths");
        return f;
      };
      c.prototype._createMorphPath = function(a, b, c, d, e, f, g) {
        a = new p(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 t(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 = r(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 = h;
    var g = function() {
      function a() {
        this.align = this.leading = this.descent = this.ascent = this.width = this.y = this.x = 0;
        this.runs = [];
      }
      a.prototype.addRun = function(c, d, g, h) {
        if (g) {
          a._measureContext.font = c;
          var k = a._measureContext.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._measureContext, l = 0;l < g.length;l++) {
          var m = g[l], p = m.text;
          m.text = "";
          m.width = 0;
          k.font = m.font;
          for (var r = c, s = p.split(/[\s.-]/), t = 0, u = 0;u < s.length;u++) {
            var v = s[u], E = p.substr(t, v.length + 1), y = k.measureText(E).width | 0;
            if (y > r) {
              do {
                if (m.text && (h.runs.push(m), h.width += m.width, m = new f(m.font, m.fillStyle, "", 0, m.underline), r = new a, r.y = h.y + h.descent + h.leading + h.ascent | 0, r.ascent = h.ascent, r.descent = h.descent, r.leading = h.leading, r.align = h.align, d.push(r), h = r), r = c - y, 0 > r) {
                  var y = E.length, z, G;
                  do {
                    y--;
                    if (1 > y) {
                      throw Error("Shall never happen: bad maxWidth?");
                    }
                    z = E.substr(0, y);
                    G = k.measureText(z).width | 0;
                  } while (G > c);
                  m.text = z;
                  m.width = G;
                  E = E.substr(y);
                  y = k.measureText(E).width | 0;
                }
              } while (0 > r);
            } else {
              r -= y;
            }
            m.text += E;
            m.width += y;
            t += v.length + 1;
          }
          h.runs.push(m);
          h.width += m.width;
        }
        return d;
      };
      a._measureContext = document.createElement("canvas").getContext("2d");
      return a;
    }();
    k.TextLine = g;
    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;
    h = 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 = t.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, h = this._plainText, l = this.lines, m = new g, p = 0, r = 0, s = 0, t = 0, u = 0, v = -1;
          for (k.enterTimeline("RenderableText.reflow");c.position < c.length;) {
            var z = c.readInt(), G = c.readInt(), C = c.readInt(), I = c.readUTF(), P = c.readInt(), T = c.readInt(), O = c.readInt();
            P > s && (s = P);
            T > t && (t = T);
            O > u && (u = O);
            P = c.readBoolean();
            T = "";
            c.readBoolean() && (T += "italic ");
            P && (T += "bold ");
            C = T + C + "px " + I;
            I = c.readInt();
            I = d.ColorUtilities.rgbToHex(I);
            P = c.readInt();
            -1 === v && (v = P);
            c.readBoolean();
            c.readInt();
            c.readInt();
            c.readInt();
            c.readInt();
            c.readInt();
            for (var P = c.readBoolean(), Q = "", T = !1;!T;z++) {
              T = z >= G - 1;
              O = h[z];
              if ("\r" !== O && "\n" !== O && (Q += O, z < h.length - 1)) {
                continue;
              }
              m.addRun(C, I, Q, P);
              if (m.runs.length) {
                l.length && (p += u);
                p += s;
                m.y = p | 0;
                p += t;
                m.ascent = s;
                m.descent = t;
                m.leading = u;
                m.align = v;
                if (b && m.width > f) {
                  for (m = m.wrap(f), Q = 0;Q < m.length;Q++) {
                    var S = m[Q], p = S.y + S.descent + S.leading;
                    l.push(S);
                    S.width > r && (r = S.width);
                  }
                } else {
                  l.push(m), m.width > r && (r = m.width);
                }
                m = new g;
              } else {
                p += s + t + u;
              }
              Q = "";
              if (T) {
                u = t = s = 0;
                v = -1;
                break;
              }
              "\r" === O && "\n" === h[z + 1] && z++;
            }
            m.addRun(C, I, Q, P);
          }
          c = h[h.length - 1];
          "\r" !== c && "\n" !== c || l.push(m);
          c = this.textRect;
          c.w = r;
          c.h = p;
          if (a) {
            if (!b) {
              f = r;
              r = e.w;
              switch(a) {
                case 1:
                  c.x = r - (f + 4) >> 1;
                  break;
                case 3:
                  c.x = r - (f + 4);
              }
              this._textBounds.setElements(c.x - 2, c.y - 2, c.w + 4, c.h + 4);
            }
            e.h = p + 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 t(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 p = l[m];
              a.font = p.font;
              a.fillStyle = p.fillStyle;
              p.underline && a.fillRect(h, k + g.descent / 2 | 0, p.width, 1);
              a.textAlign = "left";
              a.textBaseline = "alphabetic";
              a.fillText(p.text, h, k);
              h += p.width;
            }
          }
        }
      };
      c.absoluteBoundPoints = [new v(0, 0), new v(0, 0), new v(0, 0), new v(0, 0)];
      return c;
    }(c);
    k.RenderableText = h;
    c = function(a) {
      function c(d, e) {
        a.call(this);
        this._flags = 3145728;
        this.properties = {};
        this.setBounds(new u(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, r = function() {
      return function() {
      };
    }();
    k.Filter = r;
    var v = function(a) {
      function d(k, c, h) {
        a.call(this);
        this.blurX = k;
        this.blurY = c;
        this.quality = h;
      }
      __extends(d, a);
      return d;
    }(r);
    k.BlurFilter = v;
    v = function(a) {
      function d(k, c, h, p, r, m, g, f, b, e, q) {
        a.call(this);
        this.alpha = k;
        this.angle = c;
        this.blurX = h;
        this.blurY = p;
        this.color = r;
        this.distance = m;
        this.hideObject = g;
        this.inner = f;
        this.knockout = b;
        this.quality = e;
        this.strength = q;
      }
      __extends(d, a);
      return d;
    }(r);
    k.DropshadowFilter = v;
    r = function(a) {
      function d(k, c, h, p, r, m, g, f) {
        a.call(this);
        this.alpha = k;
        this.blurX = c;
        this.blurY = h;
        this.color = p;
        this.inner = r;
        this.knockout = m;
        this.quality = g;
        this.strength = f;
      }
      __extends(d, a);
      return d;
    }(r);
    k.GlowFilter = r;
    (function(a) {
      a[a.Unknown = 0] = "Unknown";
      a[a.Identity = 1] = "Identity";
    })(k.ColorMatrixType || (k.ColorMatrixType = {}));
    r = 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, h, k, r, m, g) {
        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] = h;
        f[16] = k / 255;
        f[17] = r / 255;
        f[18] = m / 255;
        f[19] = g / 255;
        this._type = 0;
      };
      d.prototype.transformRGBA = function(d) {
        var k = d >> 24 & 255, c = d >> 16 & 255, h = d >> 8 & 255, p = d & 255, r = this._data;
        d = a(k * r[0] + c * r[1] + h * r[2] + p * r[3] + 255 * r[16]);
        var m = a(k * r[4] + c * r[5] + h * r[6] + p * r[7] + 255 * r[17]), g = a(k * r[8] + c * r[9] + h * r[10] + p * r[11] + 255 * r[18]), k = a(k * r[12] + c * r[13] + h * r[14] + p * r[15] + 255 * r[19]);
        return d << 24 | m << 16 | g << 8 | k;
      };
      d.prototype.multiply = function(a) {
        if (!(a._type & 1)) {
          var d = this._data, c = a._data;
          a = d[0];
          var h = d[1], k = d[2], r = d[3], m = d[4], g = d[5], f = d[6], b = d[7], e = d[8], q = d[9], n = d[10], u = d[11], v = d[12], A = d[13], H = d[14], K = d[15], F = d[16], J = d[17], M = d[18], D = d[19], B = c[0], E = c[1], y = c[2], z = c[3], G = c[4], C = c[5], I = c[6], P = c[7], T = c[8], O = c[9], Q = c[10], S = c[11], V = c[12], aa = c[13], $ = c[14], w = c[15], U = c[16], ba = c[17], R = c[18], c = c[19];
          d[0] = a * B + m * E + e * y + v * z;
          d[1] = h * B + g * E + q * y + A * z;
          d[2] = k * B + f * E + n * y + H * z;
          d[3] = r * B + b * E + u * y + K * z;
          d[4] = a * G + m * C + e * I + v * P;
          d[5] = h * G + g * C + q * I + A * P;
          d[6] = k * G + f * C + n * I + H * P;
          d[7] = r * G + b * C + u * I + K * P;
          d[8] = a * T + m * O + e * Q + v * S;
          d[9] = h * T + g * O + q * Q + A * S;
          d[10] = k * T + f * O + n * Q + H * S;
          d[11] = r * T + b * O + u * Q + K * S;
          d[12] = a * V + m * aa + e * $ + v * w;
          d[13] = h * V + g * aa + q * $ + A * w;
          d[14] = k * V + f * aa + n * $ + H * w;
          d[15] = r * V + b * aa + u * $ + K * w;
          d[16] = a * U + m * ba + e * R + v * c + F;
          d[17] = h * U + g * ba + q * R + A * c + J;
          d[18] = k * U + f * ba + n * R + H * c + M;
          d[19] = r * U + b * ba + u * R + K * c + D;
          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 = r;
  })(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_614 = Shumway || (Shumway = {});
Shumway$$inline_614.playerOptions = Shumway$$inline_614.Settings.shumwayOptions.register(new Shumway$$inline_614.Options.OptionSet("Player Options"));
Shumway$$inline_614.frameEnabledOption = Shumway$$inline_614.playerOptions.register(new Shumway$$inline_614.Options.Option("enableFrames", "Enable Frame Execution", "boolean", !0, "Enable frame execution."));
Shumway$$inline_614.timerEnabledOption = Shumway$$inline_614.playerOptions.register(new Shumway$$inline_614.Options.Option("enableTimers", "Enable Timers", "boolean", !0, "Enable timer events."));
Shumway$$inline_614.pumpEnabledOption = Shumway$$inline_614.playerOptions.register(new Shumway$$inline_614.Options.Option("enablePump", "Enable Pump", "boolean", !0, "Enable display tree serialization."));
Shumway$$inline_614.pumpRateOption = Shumway$$inline_614.playerOptions.register(new Shumway$$inline_614.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_614.frameRateOption = Shumway$$inline_614.playerOptions.register(new Shumway$$inline_614.Options.Option("frameRate", "Frame Rate", "number", 60, "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_614.tracePlayerOption = Shumway$$inline_614.playerOptions.register(new Shumway$$inline_614.Options.Option("tp", "Trace Player", "number", 0, "Trace player every n frames.", {range:{min:0, max:512, step:1}}));
Shumway$$inline_614.traceMouseEventOption = Shumway$$inline_614.playerOptions.register(new Shumway$$inline_614.Options.Option("tme", "Trace Mouse Events", "boolean", !1, "Trace mouse events."));
Shumway$$inline_614.frameRateMultiplierOption = Shumway$$inline_614.playerOptions.register(new Shumway$$inline_614.Options.Option("", "Frame Rate Multiplier", "number", 1, "Play frames at a faster rate.", {range:{min:1, max:16, step:1}}));
Shumway$$inline_614.dontSkipFramesOption = Shumway$$inline_614.playerOptions.register(new Shumway$$inline_614.Options.Option("", "Disables Frame Skipping", "boolean", !1, "Play all frames, e.g. no skipping frame during throttle."));
Shumway$$inline_614.playAllSymbolsOption = Shumway$$inline_614.playerOptions.register(new Shumway$$inline_614.Options.Option("", "Play Symbols", "boolean", !1, "Plays all SWF symbols automatically."));
Shumway$$inline_614.playSymbolOption = Shumway$$inline_614.playerOptions.register(new Shumway$$inline_614.Options.Option("", "Play Symbol Number", "number", 0, "Select symbol by Id.", {range:{min:0, max:2E4, step:1}}));
Shumway$$inline_614.playSymbolFrameDurationOption = Shumway$$inline_614.playerOptions.register(new Shumway$$inline_614.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_614.playSymbolCountOption = Shumway$$inline_614.playerOptions.register(new Shumway$$inline_614.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, u = this._onTimeDelta + this._delta;
      0 !== u && (0 > u ? k *= a.SPEED_ADJUST_RATE : 0 < u && (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, v = k.display, u = k.display.BitmapData, t = k.display.DisplayObjectFlags, l = k.display.BlendMode, c = k.display.PixelSnapping, h = k.geom.Point, p = d.Bounds, s = k.ui.MouseCursor, m = d.Player.writer, g = 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(t.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 p(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 === s.AUTO) {
              var f = c;
              do {
                if (k.display.SimpleButton.isType(f) || k.display.Sprite.isType(f) && f.buttonMode && c.useHandCursor) {
                  d = s.BUTTON;
                  break;
                }
                f = f._parent;
              } while (f && f !== a);
            }
          } else {
            this.output.writeInt(-1);
          }
          this.output.writeInt(s.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), p = null;
          k.media.Video.isType(a) && (p = a);
          var s = !1;
          1 === this.phase && (s = a._hasAnyFlags(65011712), d = a._hasFlags(134217728));
          var u = null;
          v.Bitmap.isType(a) && (u = a);
          var K = a._hasFlags(268435456), F;
          F = 0 | (f ? 1 : 0) | (g ? 8 : 0);
          F |= d ? 64 : 0;
          F |= K ? 128 : 0;
          F |= h ? 32 : 0;
          F |= s ? 4 : 0;
          this.output.writeInt(F);
          f && this._writeMatrix(a._getMatrix());
          g && this._writeColorTransform(a._colorTransform);
          d && this.output.writeInt(a.mask ? a.mask._id : -1);
          K && 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), u ? (this.output.writeInt(c.toNumber(u.pixelSnapping)), this.output.writeInt(u.smoothing ? 1 : 0)) : (this.output.writeInt(c.toNumber(c.AUTO)), this.output.writeInt(1)));
          d = a._getGraphics();
          f = a._getTextContent();
          if (s) {
            m && m.enter("Children: {");
            if (u) {
              u.bitmapData ? (this.output.writeInt(1), this.output.writeInt(134217728 | u.bitmapData._id)) : this.output.writeInt(0);
            } else {
              if (p) {
                p._netStream ? (this.output.writeInt(1), this.output.writeInt(134217728 | p._netStream._id)) : this.output.writeInt(0);
              } else {
                if (s = d || f ? 1 : 0, (p = a._children) && (s += p.length), this.output.writeInt(s), 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)), p) {
                  for (s = 0;s < p.length;s++) {
                    m && m.writeLn("Reference DisplayObject: " + p[s].debugName()), this.output.writeInt(p[s]._id), 0 <= p[s]._clipDepth && p[s]._setFlags(268435456);
                  }
                }
              }
            }
            m && m.leave("}");
          }
          1 === this.phase && a._removeFlags(t.Dirty);
        };
        a.prototype.writeDirtyAssets = function(a) {
          var c = a._getGraphics();
          c ? this.writeGraphics(c) : (c = a._getTextContent()) ? this.writeTextContent(c) : (c = null, v.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);
          u.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(p.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 = g;
      g = 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(), g = a.readFloat(), k = a.readInt(), a = a.readInt();
          return{tag:300, type:c, point:new h(f, g), 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 = g;
    })(k.Player || (k.Player = {}));
  })(d.Remoting || (d.Remoting = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    var a = d.Debug.somewhatImplemented, r = d.AVM2.AS.flash, v = d.ArrayUtilities.DataBuffer, u = d.AVM2.Runtime.AVM2, t = r.events.Event, l = r.display.DisplayObject, c = r.events.EventDispatcher, h = r.display.Loader, p = r.ui.MouseEventDispatcher, s = r.ui.KeyboardEventDispatcher, m = function() {
      function g() {
        this._framesPlayed = 0;
        this._videoEventListeners = [];
        this._pendingPromises = [];
        this.externalCallback = null;
        this._lastPumpTime = 0;
        this._hasFocus = this._isPageVisible = !0;
        this._loaderUrl = this._swfUrl = this._pageUrl = null;
        this._keyboardEventDispatcher = new s;
        this._mouseEventDispatcher = new p;
        this._writer = new d.IndentingWriter;
        u.instance.globals["Shumway.Player.Utils"] = this;
      }
      g.prototype._getNextAvailablePromiseId = function() {
        for (var a = this._pendingPromises.length, b = 0;b < a;b++) {
          if (!this._pendingPromises[b]) {
            return b;
          }
        }
        return a;
      };
      Object.defineProperty(g.prototype, "stage", {get:function() {
        return this._stage;
      }, enumerable:!0, configurable:!0});
      g.prototype.onSendUpdates = function(a, b, c) {
        throw Error("This method is abstract");
      };
      g.prototype._shouldThrottleDownRendering = function() {
        return!this._isPageVisible;
      };
      g.prototype._shouldThrottleDownFrameExecution = function() {
        return!this._isPageVisible;
      };
      Object.defineProperty(g.prototype, "pageUrl", {get:function() {
        return this._pageUrl;
      }, set:function(a) {
        this._pageUrl = a || null;
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(g.prototype, "loaderUrl", {get:function() {
        return this._loaderUrl;
      }, set:function(a) {
        this._loaderUrl = a || null;
      }, enumerable:!0, configurable:!0});
      Object.defineProperty(g.prototype, "swfUrl", {get:function() {
        return this._swfUrl;
      }, enumerable:!0, configurable:!0});
      g.prototype.load = function(a, b) {
        this._swfUrl = this._loaderUrl = a;
        this._stage = new r.display.Stage;
        var c = this._loaderInfo = (this._loader = r.display.Loader.getRootLoader()).contentLoaderInfo;
        d.playAllSymbolsOption.value ? (this._playAllSymbols(), c._allowCodeExecution = !1) : this._enterRootLoadingLoop();
        c = this.createLoaderContext();
        if (b) {
          var g = d.Timeline.BinarySymbol.FromData({id:-1, data:b}), h = g.symbolClass.initializeFrom(g);
          g.symbolClass.instanceConstructorNoInitialize.call(h);
          this._loader.loadBytes(h, c);
        } else {
          this._loader.load(new r.net.URLRequest(a), c);
        }
      };
      g.prototype.createLoaderContext = function() {
        var a = new r.system.LoaderContext;
        if (this.movieParams) {
          var b = {}, c;
          for (c in this.movieParams) {
            b.asSetPublicProperty(c, this.movieParams[c]);
          }
          a.parameters = b;
        }
        return a;
      };
      g.prototype.processUpdates = function(a, b) {
        var e = new d.Remoting.Player.PlayerChannelDeserializer;
        e.input = a;
        e.inputAssets = b;
        e = e.read();
        switch(e.tag) {
          case 301:
            var g = this._stage.focus ? this._stage.focus : this._stage;
            this._keyboardEventDispatcher.target = g;
            this._keyboardEventDispatcher.dispatchKeyboardEvent(e);
            break;
          case 300:
            this._mouseEventDispatcher.stage = this._stage;
            g = this._mouseEventDispatcher.handleMouseEvent(e);
            d.traceMouseEventOption.value && (this._writer.writeLn("Mouse Event: type: " + e.type + ", point: " + e.point + ", target: " + g + (g ? ", name: " + g._name : "")), "click" === e.type && g && g.debugTrace());
            break;
          case 302:
            switch(e.type) {
              case 0:
                this._isPageVisible = !1;
                break;
              case 1:
                this._isPageVisible = !0;
                break;
              case 2:
                this._hasFocus = !1;
                break;
              case 3:
                c.broadcastEventDispatchQueue.dispatchEvent(t.getBroadcastInstance(t.ACTIVATE)), this._hasFocus = !0;
            }
          ;
        }
      };
      g.prototype._pumpDisplayListUpdates = function() {
        this.syncDisplayObject(this._stage);
      };
      g.prototype.syncDisplayObject = function(a, b) {
        void 0 === b && (b = !0);
        var c = new v, g = [], h = new d.Remoting.Player.PlayerChannelSerializer;
        h.output = c;
        h.outputAssets = g;
        r.display.Stage.isType(a) && h.writeStage(a, this._mouseEventDispatcher.currentTarget);
        h.begin(a);
        h.remoteObjects();
        h.remoteReferences();
        c.writeInt(0);
        k.enterTimeline("remoting assets");
        c = this.onSendUpdates(c, g, b);
        k.leaveTimeline("remoting assets");
        return c;
      };
      g.prototype.requestBitmapData = function(a) {
        var b = new v, c = [], g = new d.Remoting.Player.PlayerChannelSerializer;
        g.output = b;
        g.outputAssets = c;
        g.writeRequestBitmapData(a);
        b.writeInt(0);
        return this.onSendUpdates(b, c, !1);
      };
      g.prototype.drawToBitmap = function(a, b, c, g, h, l, m) {
        void 0 === c && (c = null);
        void 0 === g && (g = null);
        void 0 === h && (h = null);
        void 0 === l && (l = null);
        void 0 === m && (m = !1);
        var p = new v, s = [], t = new d.Remoting.Player.PlayerChannelSerializer;
        t.output = p;
        t.outputAssets = s;
        t.writeBitmapData(a);
        r.display.BitmapData.isType(b) ? t.writeBitmapData(b) : (t.begin(b), t.remoteObjects(), t.remoteReferences());
        t.writeDrawToBitmap(a, b, c, g, h, l, m);
        p.writeInt(0);
        k.enterTimeline("sendUpdates");
        this.onSendUpdates(p, s, !1);
        k.leaveTimeline("sendUpdates");
      };
      g.prototype.registerEventListener = function(a, b) {
        this._videoEventListeners[a] = b;
      };
      g.prototype.notifyVideoControl = function(a, b, c) {
        return this.onVideoControl(a, b, c);
      };
      g.prototype.executeFSCommand = function(c, b) {
        switch(c) {
          case "quit":
            this._leaveEventLoop();
            break;
          default:
            a("FSCommand " + c);
        }
        this.onFSCommand(c, b);
      };
      g.prototype.requestRendering = function() {
        this._pumpDisplayListUpdates();
      };
      g.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");
        }
      };
      g.prototype._leaveSyncLoop = function() {
        clearInterval(this._frameTimeout);
      };
      g.prototype._getFrameInterval = function() {
        var a = d.frameRateOption.value;
        0 > a && (a = this._stage.frameRate);
        return Math.floor(1E3 / a);
      };
      g.prototype._enterEventLoop = function() {
        this._eventLoopIsRunning = !0;
        this._eventLoopTick = this._eventLoopTick.bind(this);
        this._eventLoopTick();
      };
      g.prototype._enterRootLoadingLoop = function() {
        function a() {
          var g = c.contentLoaderInfo;
          if (g._file) {
            var h = b._stage, k = void 0 !== b.defaultStageColor ? b.defaultStageColor : g._file.backgroundColor;
            h._loaderInfo = g;
            h.align = b.stageAlign || "";
            !b.stageScale || 0 > r.display.StageScaleMode.toNumber(b.stageScale) ? h.scaleMode = r.display.StageScaleMode.SHOW_ALL : h.scaleMode = b.stageScale;
            h.frameRate = g.frameRate;
            h.setStageWidth(g.width);
            h.setStageHeight(g.height);
            h.setStageColor(d.ColorUtilities.RGBAToARGB(k));
            b.displayParameters && b.processDisplayParameters(b.displayParameters);
            b._enterEventLoop();
          } else {
            setTimeout(a, b._getFrameInterval());
          }
        }
        var b = this, c = h.getRootLoader();
        c._setStage(this._stage);
        a();
      };
      g.prototype._eventLoopTick = function() {
        var a = !d.playAllSymbolsOption.value, b = d.dontSkipFramesOption.value;
        this._frameTimeout = setTimeout(this._eventLoopTick, this._getFrameInterval());
        if (b || !(!d.frameEnabledOption.value && a || this._shouldThrottleDownFrameExecution())) {
          l._stage = this._stage;
          if (!h.getRootLoader().content && (h.processEvents(), !h.getRootLoader().content)) {
            return;
          }
          for (b = 0;b < d.frameRateMultiplierOption.value;b++) {
            k.enterTimeline("eventLoop");
            var c = performance.now();
            l.performFrameNavigation(!0, a);
            k.counter.count("performFrameNavigation", 1, performance.now() - c);
            h.processEvents();
            k.leaveTimeline("eventLoop");
          }
          this._framesPlayed++;
          0 < d.tracePlayerOption.value && 0 === this._framesPlayed % d.tracePlayerOption.value && this._tracePlayer();
          this._stage.render();
          this._pumpUpdates();
          this.onFrameProcessed();
        }
      };
      g.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: " + r.display.DisplayObject._advancableInstances.length);
        a.outdent();
      };
      g.prototype._leaveEventLoop = function() {
        clearTimeout(this._frameTimeout);
        this._eventLoopIsRunning = !1;
      };
      g.prototype._playAllSymbols = function() {
        var a = this._stage, b = this._loader, c = this._loaderInfo, g = this;
        c.addEventListener(r.events.ProgressEvent.PROGRESS, function x() {
          b.content && (c.removeEventListener(r.events.ProgressEvent.PROGRESS, x), g._enterEventLoop());
        });
        c.addEventListener(r.events.Event.COMPLETE, function() {
          function b() {
            var l;
            0 < d.playSymbolOption.value ? (l = c.getSymbolById(d.playSymbolOption.value), l instanceof d.Timeline.DisplaySymbol || (l = null)) : (l = h[k++], k === h.length && (k = 0), 0 <= d.playSymbolCountOption.value && k > d.playSymbolCountOption.value && (k = 0));
            var m = 1;
            if (l && 0 < l.id) {
              var p = l;
              r.display.DisplayObject.reset();
              r.display.MovieClip.reset();
              var s = p.symbolClass.initializeFrom(p);
              p.symbolClass.instanceConstructorNoInitialize.call(s);
              for (p instanceof r.display.BitmapSymbol && (s = new r.display.Bitmap(s));0 < a.numChildren;) {
                a.removeChildAt(0);
              }
              a.addChild(s);
              l instanceof r.display.SpriteSymbol && (m = l.numFrames);
            }
            0 < d.playSymbolFrameDurationOption.value && (m = d.playSymbolFrameDurationOption.value);
            setTimeout(b, g._getFrameInterval() * m);
          }
          a.setStageWidth(1024);
          a.setStageHeight(1024);
          var h = [];
          c._dictionary.forEach(function(a, b) {
            a instanceof d.Timeline.DisplaySymbol && h.push(a);
          });
          var k = 0;
          setTimeout(b, g._getFrameInterval());
        });
      };
      g.prototype.processExternalCallback = function(a) {
        if (this.externalCallback) {
          try {
            a.result = this.externalCallback(a.functionName, a.args);
          } catch (b) {
            a.error = b.message;
          }
        }
      };
      g.prototype.processVideoEvent = function(a, b, c) {
        a = this._videoEventListeners[a];
        d.Debug.assert(a, "Video event listener is not found");
        a(b, c);
      };
      g.prototype.processDisplayParameters = function(a) {
        this._stage.setStageContainerSize(a.stageWidth, a.stageHeight, a.pixelRatio);
      };
      g.prototype.onExternalCommand = function(a) {
        throw Error("This method is abstract");
      };
      g.prototype.onFSCommand = function(a, b) {
        throw Error("This method is abstract");
      };
      g.prototype.onVideoControl = function(a, b, c) {
        throw Error("This method is abstract");
      };
      g.prototype.onFrameProcessed = function() {
        throw Error("This method is abstract");
      };
      g.prototype.registerFontOrImage = function(a, b) {
        a.resolveAssetPromise = new d.PromiseWrapper;
        this.registerFontOrImageImpl(a, b);
        "font" === b.type && inFirefox ? a.ready = !0 : a.resolveAssetPromise.then(a.resolveAssetCallback, null);
      };
      g.prototype.registerFontOrImageImpl = function(a, b) {
        throw Error("This method is abstract");
      };
      g.prototype.createExternalInterfaceService = function() {
        var a, b = this;
        return{get enabled() {
          if (void 0 === a) {
            var c = {action:"isEnabled"};
            b.onExternalCommand(c);
            a = c.result;
          }
          return a;
        }, initJS:function(a) {
          b.externalCallback = a;
          b.onExternalCommand({action:"initJS"});
        }, registerCallback:function(a) {
          b.onExternalCommand({action:"register", functionName:a, remove:!1});
        }, unregisterCallback:function(a) {
          b.onExternalCommand({action:"register", functionName:a, remove:!0});
        }, eval:function(a) {
          a = {action:"eval", expression:a};
          b.onExternalCommand(a);
          return a.result;
        }, call:function(a) {
          a = {action:"call", request:a};
          b.onExternalCommand(a);
          return a.result;
        }, getId:function() {
          var a = {action:"getId"};
          b.onExternalCommand(a);
          return a.result;
        }};
      };
      return g;
    }();
    k.Player = m;
  })(d.Player || (d.Player = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  var k = d.BinaryFileReader, a = d.AVM2.ABC.AbcFile, r = d.AVM2.Runtime.AVM2;
  d.createAVM2 = function(v, u, t, l, c) {
    var h;
    (new k(v)).readAll(function(p) {
      r.initialize(t, l);
      h = r.instance;
      d.AVM2.AS.linkNatives(h);
      console.time("Execute builtin.abc");
      h.builtinsLoaded = !1;
      h.systemDomain.executeAbc(new a(new Uint8Array(p), "builtin.abc"));
      h.builtinsLoaded = !0;
      console.timeEnd("Execute builtin.abc");
      "string" === typeof u ? (new k(u)).readAll(function(d) {
        h.systemDomain.executeAbc(new a(new Uint8Array(d), u));
        c(h);
      }) : r.isPlayerglobalLoaded() || r.loadPlayerglobal(u.abcs, u.catalog).then(function() {
        c(h);
      });
    });
  };
})(Shumway || (Shumway = {}));
__extends = this.__extends || function(d, k) {
  function a() {
    this.constructor = d;
  }
  for (var r in k) {
    k.hasOwnProperty(r) && (d[r] = k[r]);
  }
  a.prototype = k.prototype;
  d.prototype = new a;
};
(function(d) {
  (function(k) {
    (function(a) {
      var k = d.ArrayUtilities.DataBuffer, v = function(a) {
        function t(d, c) {
          a.call(this);
          this._window = d;
          this._parent = c || d.parent;
          this._window.addEventListener("message", function(a) {
            this.onWindowMessage(a.data, !0);
          }.bind(this));
          this._window.addEventListener("syncmessage", function(a) {
            this.onWindowMessage(a.detail, !1);
          }.bind(this));
        }
        __extends(t, a);
        t.prototype.onSendUpdates = function(a, c, d) {
          void 0 === d && (d = !0);
          a = a.getBytes();
          c = {type:"player", updates:a, assets:c, result:void 0};
          a = [a.buffer];
          if (!d) {
            return d = this._parent.document.createEvent("CustomEvent"), d.initCustomEvent("syncmessage", !1, !1, c), this._parent.dispatchEvent(d), k.FromPlainObject(c.result);
          }
          this._parent.postMessage(c, "*", a);
          return null;
        };
        t.prototype.onExternalCommand = function(a) {
          var c = this._parent.document.createEvent("CustomEvent");
          c.initCustomEvent("syncmessage", !1, !1, {type:"external", request:a});
          this._parent.dispatchEvent(c);
        };
        t.prototype.onFSCommand = function(a, c) {
          this._parent.postMessage({type:"fscommand", command:a, args:c}, "*");
        };
        t.prototype.onVideoControl = function(a, c, d) {
          var k = this._parent.document.createEvent("CustomEvent");
          k.initCustomEvent("syncmessage", !1, !1, {type:"videoControl", id:a, eventType:c, data:d, result:void 0});
          this._parent.dispatchEvent(k);
          return k.detail.result;
        };
        t.prototype.onFrameProcessed = function() {
          this._parent.postMessage({type:"frame"}, "*");
        };
        t.prototype.registerFontOrImageImpl = function(a, c) {
          var d = this._parent.document.createEvent("CustomEvent");
          d.initCustomEvent("syncmessage", !1, !1, {type:"registerFontOrImage", syncId:a.syncId, symbolId:a.id, assetType:c.type, data:c, resolve:a.resolveAssetPromise.resolve});
          this._parent.dispatchEvent(d);
        };
        t.prototype.onWindowMessage = function(a, c) {
          if ("object" === typeof a && null !== a) {
            switch(a.type) {
              case "gfx":
                var h = d.ArrayUtilities.DataBuffer.FromArrayBuffer(a.updates.buffer);
                this.processUpdates(h, a.assets);
                break;
              case "externalCallback":
                this.processExternalCallback(a.request);
                break;
              case "videoPlayback":
                this.processVideoEvent(a.id, a.eventType, a.data);
                break;
              case "displayParameters":
                this.processDisplayParameters(a.params);
                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 t;
      }(d.Player.Player);
      a.WindowPlayer = v;
    })(k.Window || (k.Window = {}));
  })(d.Player || (d.Player = {}));
})(Shumway || (Shumway = {}));
(function(d) {
  (function(k) {
    (function(a) {
      var k = d.ArrayUtilities.DataBuffer, v = function(a) {
        function t() {
          a.call(this);
          this._worker = d.Player.Test.FakeSyncWorker.instance;
          this._worker.addEventListener("message", this._onWorkerMessage.bind(this));
          this._worker.addEventListener("syncmessage", this._onSyncWorkerMessage.bind(this));
        }
        __extends(t, a);
        t.prototype.onSendUpdates = function(a, c, d) {
          void 0 === d && (d = !0);
          a = a.getBytes();
          c = {type:"player", updates:a, assets:c};
          a = [a.buffer];
          if (!d) {
            return d = this._worker.postSyncMessage(c, a), k.FromPlainObject(d);
          }
          this._worker.postMessage(c, a);
          return null;
        };
        t.prototype.onExternalCommand = function(a) {
          this._worker.postSyncMessage({type:"external", command:a});
        };
        t.prototype.onFSCommand = function(a, c) {
          this._worker.postMessage({type:"fscommand", command:a, args:c});
        };
        t.prototype.onVideoControl = function(a, c, d) {
          return this._worker.postSyncMessage({type:"videoControl", id:a, eventType:c, data:d});
        };
        t.prototype.onFrameProcessed = function() {
          this._worker.postMessage({type:"frame"});
        };
        t.prototype.registerFontOrImageImpl = function(a, c) {
          return this._worker.postSyncMessage({type:"registerFontOrImage", syncId:a.syncId, symbolId:a.id, assetType:c.type, data:c, resolve:a.resolveAssetPromise.resolve});
        };
        t.prototype._onWorkerMessage = function(a) {
          var c = a.data;
          if ("object" === typeof c && null !== c) {
            switch(c.type) {
              case "gfx":
                c = k.FromArrayBuffer(a.data.updates.buffer);
                this.processUpdates(c, a.data.assets);
                break;
              case "externalCallback":
                this.processExternalCallback(c.request);
                a.handled = !0;
                break;
              case "videoPlayback":
                this.processVideoEvent(c.id, c.eventType, c.data);
                break;
              case "displayParameters":
                this.processDisplayParameters(c.params);
            }
          }
        };
        t.prototype._onSyncWorkerMessage = function(a) {
          return this._onWorkerMessage(a);
        };
        return t;
      }(d.Player.Player);
      a.TestPlayer = v;
    })(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 (p) {
            }
            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 (p) {
            }
            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");

